From f47411fb53aeee0c7bd514cbc841f9030349f448 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 23 4月 2024 09:34:31 +0800
Subject: [PATCH] 项目文件添加
---
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs | 32
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs | 73
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs | 56
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs | 123
iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js | 29
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue | 145
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs | 65
iWare_RawMaterialWarehouse_Web/src/views/main/README.md | 1
iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue | 148
iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue | 200
iWare_RawMaterialWarehouse_Web/jest.config.js | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs | 44
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs | 8
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue | 109
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue | 109
iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue | 89
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js | 4977
iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue | 153
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs | 94
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs | 110
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs | 47
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue | 99
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs | 52
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js | 114
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue | 296
iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue | 118
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg | 0
iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue | 75
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs | 120
iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue | 163
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs | 28
iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js | 66
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs | 39
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs | 24
iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue | 84
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs | 110
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs | 66
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js | 139
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue | 167
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs | 74
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs | 152
iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue | 448
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue | 122
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs | 310
iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue | 215
iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue | 104
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs | 236
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs | 28
iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue | 305
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs | 40
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css.gz | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz | 0
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue | 181
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs | 19
iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js | 41
iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue | 95
iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js | 3
iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue | 142
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs | 90
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs | 197
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs | 51
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs | 15
iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue | 126
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue | 328
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs | 72
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs | 57
iWare_RawMaterialWarehouse_Web/src/mock/services/article.js | 88
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue | 149
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs | 86
iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue | 153
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs | 50
iWare_RawMaterialWarehouse_Web/src/utils/utils.less | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs | 60
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs | 352
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs | 20
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs | 49
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs | 56
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css | 16465 ++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs | 37
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs | 21
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs | 173
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Worker.cs | 44
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue | 357
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue | 303
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs | 145
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs | 61
iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js | 3
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue | 182
iWare_RawMaterialWarehouse_Web/src/components/Result/index.js | 2
iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js | 114
iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue | 57
iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue | 130
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs | 20
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs | 26
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs | 46
iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue | 146
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs | 31
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs | 35
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs | 27
iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue | 151
iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs | 137
iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue | 143
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue | 95
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs | 81
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue | 282
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json | 4
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css | 424
iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue | 29
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs | 133
iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue | 236
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs | 548
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs | 83
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue | 128
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json | 111
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js | 147
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs | 126
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue | 25
iWare_RawMaterialWarehouse_Web/src/router/index.js | 19
iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue | 64
iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue | 640
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/logo.png | 0
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs | 22
iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue | 159
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs | 31
iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js | 152
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs | 166
iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue | 145
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs | 26
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.js | 1158
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs | 132
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml | 120
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs | 191
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs | 163
iWare_RawMaterialWarehouse_Web/postcss.config.js | 5
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs | 252
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue | 146
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs | 164
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs | 69
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json | 12
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs | 32
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs | 120
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs | 317
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs | 187
iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js | 268
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs | 157
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs | 38
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs | 22
iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue | 115
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs | 137
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs | 215
iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md | 48
iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue | 257
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs | 36
iWare_RawMaterialWarehouse_Web/public/loading/loading.css | 1
iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue | 194
iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue | 113
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js | 41
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs | 415
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs | 52
iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js | 2
iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue | 91
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml | 29
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue | 488
iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js | 93
iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less | 25
iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue | 38
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js | 114
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js | 66
iWare_RawMaterialWarehouse_Web/LICENSE | 21
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs | 162
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs | 57
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs | 38
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs | 98
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs | 23
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue | 342
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs | 169
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs | 46
iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue | 67
iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue | 104
iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue | 143
iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js | 66
iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue | 163
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs | 66
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs | 134
iWare_RawMaterialWarehouse_Web/package.json | 101
iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue | 214
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs | 32
iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue | 332
iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js | 65
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue | 45
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs | 138
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg | 0
iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/html_code_segment.html | 5
iWare_RawMaterialWarehouse_Web/src/utils/filter.js | 114
iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue | 117
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/welcome.164ddad4.png | 0
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js | 117
iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue | 122
iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue | 111
iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt | 16
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs | 261
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs | 58
iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx | 45
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs | 93
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue | 99
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml | 35
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs | 380
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs | 30
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs | 49
iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js | 87
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm | 129
iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf | 30
iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue | 293
iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue | 99
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs | 45
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs | 62
iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js | 19
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue | 394
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue | 90
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs | 317
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs | 10
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml | 2
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml | 12
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.svg | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs | 27
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue | 106
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs | 193
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs | 41
iWare_RawMaterialWarehouse_Web/public/index.html | 39
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs | 112
iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue | 157
iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue | 255
iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue | 372
iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less | 14
iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js | 3
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue | 121
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs | 441
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js.gz | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs | 100
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/index.html | 128
iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js | 61
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs | 350
iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs | 232
iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js | 134
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue | 219
iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue | 284
iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs | 517
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs | 36
iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js | 152
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs | 103
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs | 68
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs | 455
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs | 48
iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js | 4
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue | 106
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs | 70
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj | 39
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs | 187
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs | 46
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue | 170
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs | 149
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs | 9
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs | 24
iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js | 49
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs | 1167
iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue | 62
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs | 163
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs | 20
iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue | 109
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue | 549
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue | 330
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue | 514
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs | 51
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue | 126
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map | 1
iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js | 81
iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js | 114
iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js | 19
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 13178 ++
iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs | 82
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs | 38
iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs | 36
iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js | 41
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs | 400
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs | 86
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs | 447
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs | 327
iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue | 116
iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js | 24
iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue | 385
iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js | 40
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs | 260
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js | 147
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs | 115
iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js | 143
iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue | 153
iWare_RawMaterialWarehouse_Web/jsconfig.json | 11
iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue | 316
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs | 24
iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue | 46
iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue | 120
iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js | 125
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg | 0
iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue | 125
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css | 845
iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue | 128
iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue | 271
iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js | 3
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs | 40
iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj | 42
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml | 128
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt | 1
iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js | 9
iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js | 66
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue | 238
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs | 98
iWare_RawMaterialWarehouse_Web/public/loading/loading.html | 1
iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js | 106
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs | 142
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue | 16
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs | 47
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs | 96
iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue | 150
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs | 129
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/theme-colors-ef7df4e0.css | 1385
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs | 53
iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md | 43
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs | 13
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue | 151
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.ae82c867.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs | 37
iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue | 128
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs | 220
iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue | 248
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs | 41
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs | 119
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs | 94
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs | 33
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue | 528
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs | 107
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs | 56
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs | 118
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs | 36
iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js | 155
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs | 82
iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue | 62
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs | 30
iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js | 4
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs | 99
iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue | 129
iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js | 96
iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue | 158
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js | 40
iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue | 306
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs | 77
iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue | 256
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs | 215
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js | 125
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js | 90
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs | 29
iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue | 201
iWare_RawMaterialWarehouse_Web/WMS基准版前端文档.docx | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs | 123
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs | 19
iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js | 2
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs | 211
iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js | 3
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs | 111
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs | 75
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs | 50
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue | 230
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs | 426
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs | 89
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js | 4
iWare_RawMaterialWarehouse_Web/src/App.vue | 85
iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue | 164
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs | 458
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css.gz | 0
iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js | 31
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs | 68
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs | 103
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map | 1
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue | 146
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs | 19
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs | 26
iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue | 612
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/site.css | 18
iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js | 128
iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js | 148
iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue | 127
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs | 44
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs | 11
iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue | 61
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue | 123
iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js | 154
iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue | 144
iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js | 45
iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue | 164
iWare_RawMaterialWarehouse_Web/src/mock/services/user.js | 768
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css | 4857
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs | 352
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs | 209
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf | 0
iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue | 170
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs | 67
iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue | 56
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs | 108
iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js | 3
iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js | 11
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs | 32
iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js | 29
iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js | 3
iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue | 142
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue | 82
iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less | 60
iWare_RawMaterialWarehouse_Web/src/main.js | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js | 1003
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs | 82
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css.gz | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs | 178
iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue | 310
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs | 154
iWare_RawMaterialWarehouse_Web/src/components/Table/index.js | 487
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs | 282
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs | 43
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue | 499
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs | 33
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue | 109
iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js | 66
iWare_RawMaterialWarehouse_Web/src/views/404.vue | 18
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue | 388
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue | 180
iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue | 237
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs | 51
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map | 1
iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue | 278
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj | 69
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs | 51
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs | 147
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/favicon.ico | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj | 57
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs | 58
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue | 282
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml | 558
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs | 83
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs | 38
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs | 12
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs | 303
iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue | 50
iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx | 124
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs | 26
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Properties/launchSettings.json | 11
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue | 136
iWare_RawMaterialWarehouse_Web/.gitignore | 6
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs | 79
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs | 63
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs | 216
iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md | 64
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs | 136
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue | 182
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs | 160
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx | 0
iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md | 38
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js | 128
iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js | 2
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs | 224
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs | 51
iWare_RawMaterialWarehouse_Web/src/config/router.config.js | 98
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs | 81
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs | 58
iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs | 39
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs | 88
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs | 69
iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js | 114
iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue | 102
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs | 116
iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue | 133
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs | 68
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue | 124
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs | 74
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue | 170
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs | 33
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue | 422
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css | 8
iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg | 1
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue | 106
iWare_RawMaterialWarehouse_Web/.editorconfig | 39
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.css | 132
iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue | 140
iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue | 130
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue | 311
iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js | 79
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css | 4996
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs | 85
iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue | 16
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs | 28
iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue | 124
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue | 367
iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue | 106
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js | 114
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue | 229
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs | 157
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm | 30
iWare_RawMaterialWarehouse_Web/src/store/index.js | 32
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map | 1
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue | 138
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg | 0
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js | 123
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js | 137
iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue | 223
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs | 545
iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue | 271
iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue | 99
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs | 107
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs | 142
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue | 110
iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue | 140
iWare_RawMaterialWarehouse_Web/src/layouts/index.js | 8
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs | 319
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue | 260
iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue | 60
iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue | 91
iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue | 40
iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less | 13
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs | 1062
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs | 40
iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue | 54
iWare_RawMaterialWarehouse_Web/src/components/Search/index.less | 25
iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js | 2
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs | 142
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs | 11
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs | 96
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/site.js | 4
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs | 78
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs | 23
iWare_RawMaterialWarehouse_Web/src/components/index.less | 6
iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js | 130
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs | 329
iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue | 195
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs | 74
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs | 58
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs | 150
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs | 119
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs | 37
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs | 108
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs | 35
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css | 8
iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue | 344
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs | 117
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs | 24
iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js | 3
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs | 70
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs | 73
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue | 75
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue | 173
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs | 12
iWare_RawMaterialWarehouse_Web/src/views/Home.vue | 215
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs | 48
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs | 23
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js | 26
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs | 272
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs | 32
iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js | 141
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue | 16
iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue | 283
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/app.413ecdbc.js.gz | 0
iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue | 88
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs | 56
iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md | 45
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue | 181
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs | 38
iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue | 117
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue | 204
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs | 137
iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs | 3102
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs | 434
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs | 128
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs | 31
iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue | 268
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs | 66
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs | 34
iWare_RawMaterialWarehouse_Web/src/assets/welcome.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs | 34
iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js | 252
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/LICENSE.txt | 36
iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue | 264
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs | 58
iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js | 115
iWare_RawMaterialWarehouse_Web/src/core/use.js | 30
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs | 141
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs | 23
iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue | 294
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs | 323
iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js | 15
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs | 28
iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue | 137
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs | 124
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css | 4997
iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue | 306
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs | 62
iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js | 2
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs | 261
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue | 184
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue | 528
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs | 311
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue | 443
iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue | 123
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs | 391
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs | 15
iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue | 223
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs | 136
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs | 32
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json | 8
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs | 22
iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue | 17
iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs | 64
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs | 167
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs | 65
iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue | 120
iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue | 48
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js | 92
iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue | 82
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue | 106
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs | 69
iWare_RawMaterialWarehouse_Web/src/utils/device.js | 33
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-本机.json | 8
iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue | 115
iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue | 121
iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue | 86
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs | 26
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs | 149
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs | 60
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs | 45
iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js | 29
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs | 60
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs | 81
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs | 66
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue | 50
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue | 228
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs | 278
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs | 351
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml | 370
iWare_RawMaterialWarehouse_Web/.eslintrc.js | 77
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs | 313
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue | 424
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js | 66
iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less | 42
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs | 77
iWare_RawMaterialWarehouse_Web/src/assets/notice.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs | 30
iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue | 308
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/LogWorker/WorkerLog.cs | 48
iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js | 154
iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue | 239
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs | 52
iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf | 21
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue | 98
iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue | 107
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue | 82
iWare_RawMaterialWarehouse_Web/src/components/index.js | 70
iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue | 17
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs | 47
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs | 44
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs | 69
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs | 124
iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue | 271
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs | 67
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs | 23
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue | 118
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs | 285
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/DefaultDbContext.cs | 13
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js | 114
iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue | 67
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs | 48
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs | 185
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs | 20
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs | 24
iWare_RawMaterialWarehouse_Web/src/utils/applocation.js | 11
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue | 427
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs | 67
iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue | 335
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue | 214
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs | 323
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs | 364
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs | 77
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm | 581
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs | 60
iWare_RawMaterialWarehouse_Web/src/components/tools/index.js | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs | 102
iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs | 10
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue | 72
iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue | 278
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs | 107
iWare_RawMaterialWarehouse_Web/src/components/Table/index.less | 54
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs | 73
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs | 129
iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue | 152
DBScript/01_DDL/02_DDL_TABLE_Edit.sql | 4
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs | 120
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs | 46
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.js | 10872 +
iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue | 100
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/bg.110420cf.png | 0
iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue | 251
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs | 196
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css | 30745 +++++
iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue | 105
iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js | 155
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue | 420
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs | 119
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs | 48
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs | 29
iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue | 115
iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue | 503
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs | 487
iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue | 132
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue | 194
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs | 105
iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js | 169
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue | 186
iWare_RawMaterialWarehouse_Web/src/views/system/README.md | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs | 26
iWare_RawMaterialWarehouse_Web/src/utils/permissions.js | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js | 26
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue | 256
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue | 157
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs | 47
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs | 78
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs | 167
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs | 22
iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue | 46
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs | 118
iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs | 174
iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less | 23
iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue | 314
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj | 58
iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue | 261
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue | 155
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs | 29
iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx | 106
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue | 105
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs | 246
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs | 60
iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html | 5
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue | 152
iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue | 288
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue | 219
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js | 9
iWare_RawMaterialWarehouse_Web/src/mock/index.js | 21
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs | 73
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs | 35
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map.3425b845.jpg | 0
iWare_RawMaterialWarehouse_Web/src/store/getters.js | 20
iWare_RawMaterialWarehouse_Web/src/utils/util.js | 256
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue | 65
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue | 70
iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js | 191
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js | 161
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue | 68
iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue | 75
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs | 153
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js | 77
iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue | 178
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json | 161
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs | 56
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs | 227
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs | 79
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs | 72
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue | 205
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs | 335
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs | 94
iWare_RawMaterialWarehouse_Web/src/components/Dialog.js | 113
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs | 6
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map | 1
iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue | 146
iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue | 123
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs | 527
iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js | 33
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs | 155
iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue | 76
iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue | 41
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue | 137
iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx | 62
iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue | 375
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Program.cs | 14
iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue | 5
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js | 7
iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js | 225
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs | 280
iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue | 390
iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue | 248
iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue | 106
iWare_RawMaterialWarehouse_Wms/iWare_RawMaterialWarehouse_Wms.sln | 61
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm | 181
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs | 30
iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue | 235
iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue | 117
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue | 162
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs | 33
DBScript/01_DDL/04_DDL_INDEX.sql | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs | 131
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js | 432
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt | 12
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue | 168
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm | 26
iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue | 78
iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue | 180
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs | 311
iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less | 76
iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue | 165
iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue | 374
iWare_RawMaterialWarehouse_Web/src/components/global.less | 541
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/user.6ca40864.js | 1
iWare_RawMaterialWarehouse_Web/public/config.js | 5
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs | 145
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs | 214
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue | 367
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs | 72
iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue | 91
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/Admin.NET.WorkerService.csproj | 17
iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue | 17
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs | 70
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js | 5
iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue | 117
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs | 253
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue | 51
iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue | 77
iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue | 380
iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs | 75
iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue | 82
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs | 140
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs | 320
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js | 66
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue | 199
iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/fail.c1daacfd.js.gz | 0
iWare_RawMaterialWarehouse_Web/src/store/modules/app.js | 138
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue | 322
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs | 191
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map | 1
iWare_RawMaterialWarehouse_Web/src/utils/mixin.js | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs | 79
iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue | 111
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue | 273
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs | 496
iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js | 30
iWare_RawMaterialWarehouse_Web/webstorm.config.js | 3
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs | 62
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs | 94
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs | 60
iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js | 140
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js | 137
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js | 153
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs | 121
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs | 163
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/map2.48889afd.png | 0
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue | 276
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/option2/loading.css | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs | 100
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs | 6
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs | 277
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs | 60
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml | 3
iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue | 259
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs | 69
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs | 62
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue | 114
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js | 194
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js | 153
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs | 43
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs | 43
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm | 118
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs | 83
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs | 45
iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue | 232
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs | 63
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs | 275
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs | 30
iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue | 205
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js | 102
iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js | 30
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md | 300
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs | 77
iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue | 473
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue | 328
iWare_RawMaterialWarehouse_Web/.travis.yml | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs | 91
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs | 30
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs | 92
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs | 259
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue | 124
iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue | 189
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue | 322
iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js | 152
iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile | 32
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs | 152
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs | 22
iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js | 15
iWare_RawMaterialWarehouse_Wms/Admin.NET.WorkerService/appsettings.json | 9
iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js | 41
iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue | 30
iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue | 60
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs | 19
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs | 183
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css | 427
DBScript/01_DDL/03_DDL_VIEW.sql | 1
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue | 186
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs | 44
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml | 32
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue | 92
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs | 485
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs | 197
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs | 251
iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js | 105
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs | 191
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs | 104
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs | 204
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml | 277
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs | 141
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue | 112
iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js | 127
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml | 35
iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js | 117
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs | 258
iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx | 69
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue | 99
DBScript/02_DML/01_InitData.sql | 1
iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png | 0
iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue | 149
iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue | 185
iWare_RawMaterialWarehouse_Web/src/permission.js | 123
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs | 13
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs | 20
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue | 275
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs | 119
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs | 160
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs | 161
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs | 86
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs | 79
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/jquery.validate.js | 1601
iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue | 113
iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue | 283
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs | 33
iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js | 24
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue | 391
iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue | 126
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js | 66
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs | 128
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs | 18
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue | 88
iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue | 115
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs | 73
iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js | 19
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue | 117
iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue | 233
iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue | 211
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs | 177
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs | 96
iWare_RawMaterialWarehouse_Web/.browserslistrc | 3
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue | 188
iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue | 162
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map | 1
iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js | 205
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs | 179
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs | 16
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs | 109
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-b7a16696.e8717d8b.js.gz | 0
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue | 105
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs | 246
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery/dist/jquery.min.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue | 314
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs | 74
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs | 24
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue | 309
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs | 119
iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js | 119
iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue | 224
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs | 383
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs | 294
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs | 173
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json | 8
iWare_RawMaterialWarehouse_Web/src/core/icons.js | 11
iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue | 132
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue | 121
iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue | 367
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map | 1
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue | 316
iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue | 239
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/img/logo.a0cbaad2.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs | 56
iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue | 254
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs | 47
iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue | 101
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs | 65
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs | 90
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs | 405
iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue | 116
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs | 94
iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js | 114
iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue | 192
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs | 156
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs | 24
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs | 98
iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js | 46
iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue | 15
iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue | 526
iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue | 186
iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js | 101
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs | 27
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs | 58
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs | 74
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js | 124
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs | 105
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs | 125
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs | 53
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/dist/additional-methods.min.js | 4
iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js | 177
iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js | 115
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs | 234
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs | 41
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs | 52
iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue | 32
iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue | 265
iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js | 43
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/fail.8d6df989.css | 1703
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs | 347
iWare_RawMaterialWarehouse_Web/vue.config.js | 141
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue | 403
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue | 82
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs | 132
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs | 19
iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue | 205
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue | 349
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs | 46
iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue | 64
iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx | 113
iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue | 104
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs | 261
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs | 82
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs | 197
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs | 101
iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue | 50
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/LICENSE | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs | 51
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs | 82
iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js | 31
iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/user.fa7ae686.css | 723
iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js | 190
iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js | 76
iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue | 140
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue | 70
iWare_RawMaterialWarehouse_Web/babel.config.js | 28
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue | 157
iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png | 0
iWare_RawMaterialWarehouse_Web/web.config | 25
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs | 73
iWare_RawMaterialWarehouse_Web/src/utils/request.js | 167
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs | 110
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs | 613
iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue | 16
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs | 112
iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg | 1
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue | 103
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js | 141
iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue | 136
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs | 23
iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue | 677
iWare_RawMaterialWarehouse_Web/src/store/modules/user.js | 258
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue | 508
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs | 152
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/jquery-validation/LICENSE.md | 22
iWare_RawMaterialWarehouse_Web/src/core/directives/action.js | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs | 70
iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue | 74
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs | 28
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js | 55
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs | 233
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs | 36
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map | 1
iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js | 263
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs | 37
iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js | 2
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue | 229
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs | 67
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs | 108
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue | 108
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs | 18
iWare_RawMaterialWarehouse_Web/src/components/Loading.js | 64
iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js | 101
iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue | 172
iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue | 360
iWare_RawMaterialWarehouse_Web/src/utils/socket.js | 216
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs | 86
iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue | 291
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue | 103
iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue | 186
iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs | 13180 ++
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js | 108
iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue | 416
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs | 72
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs | 41
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map | 1
iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue | 120
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs | 627
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs | 85
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs | 43
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs | 47
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs | 15
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css | 11197 +
iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js | 175
iWare_RawMaterialWarehouse_Web/src/mock/services/other.js | 973
iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue | 125
iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue | 121
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs | 245
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs | 94
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs | 61
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs | 241
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs | 497
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue | 263
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs | 56
iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js | 38
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml | 11
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs | 54
iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue | 120
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs | 345
iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml | 16
iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue | 46
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs | 11
iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js | 52
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs | 33
iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue | 115
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs | 29
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs | 94
iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js | 32
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue | 275
iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue | 179
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue | 208
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs | 121
iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue | 209
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs | 53
iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue | 105
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs | 56
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js | 114
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm | 294
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js | 7
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue | 140
iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue | 125
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs | 99
iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue | 259
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.js | 5026
iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue | 195
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs | 204
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue | 87
DBScript/01_DDL/01_DDL_TABLE.sql | 1
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue | 109
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs | 86
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs | 231
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs | 102
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs | 346
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js | 114
iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue | 266
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs | 48
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js | 7
iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue | 304
iWare_RawMaterialWarehouse_Web/public/logo.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs | 104
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js | 114
iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js | 40
iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue | 203
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json | 44
iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue | 54
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue | 122
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs | 142
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml | 25607 ++++
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs | 102
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue | 109
iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue | 136
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue | 81
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs | 38
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue | 181
iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css | 1
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs | 19
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs | 253
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm | 574
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs | 32
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js | 66
iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue | 166
iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue | 180
iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue | 183
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue | 200
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js | 53
iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue | 159
iWare_RawMaterialWarehouse_Web/Dockerfile | 3
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue | 161
iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue | 124
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/loading/loading.html | 1
iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md | 47
iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue | 181
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue | 119
iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue | 79
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs | 518
iWare_RawMaterialWarehouse_Web/public/favicon.ico | 0
iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue | 228
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs | 22
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs | 122
iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs | 307
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css | 7
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs | 24
iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js | 40
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs | 90
iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js | 130
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/js/chunk-vendors.c9111d8d.js.gz | 0
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css | 4866
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/css/bootstrap.css | 11221 +
iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue | 68
iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue | 92
iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js | 51
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs | 109
iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue | 126
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs | 34
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js | 6780 +
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs | 38
iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js | 154
iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js | 123
iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue | 267
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs | 18
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs | 11
iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less | 12
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs | 27
iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue | 105
iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue | 339
iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue | 122
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs | 48
iWare_RawMaterialWarehouse_Web/src/components/_util/util.js | 46
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue | 383
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs | 33
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs | 45
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs | 23
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm | 384
iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue | 51
iWare_RawMaterialWarehouse_Web/src/mock/util.js | 38
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue | 308
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs | 78
iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue | 100
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs | 29
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs | 328
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs | 28
iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml | 284
iWare_RawMaterialWarehouse_Web/config/plugin.config.js | 46
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs | 82
iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue | 206
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs | 264
iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js | 43
iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue | 239
iWare_RawMaterialWarehouse_Web/src/utils/axios.js | 35
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs | 109
iWare_RawMaterialWarehouse_Web/.prettierrc | 5
iWare_RawMaterialWarehouse_Web/src/components/Table/README.md | 338
iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue | 148
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs | 50
iWare_RawMaterialWarehouse_Web/.env.production | 3
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue | 140
iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue | 153
iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue | 58
iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js | 5
iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue | 88
iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs | 17
iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js | 71
iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js | 114
iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue | 48
iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue | 181
1,427 files changed, 346,904 insertions(+), 0 deletions(-)
diff --git a/DBScript/01_DDL/01_DDL_TABLE.sql b/DBScript/01_DDL/01_DDL_TABLE.sql
new file mode 100644
index 0000000..2549633
--- /dev/null
+++ b/DBScript/01_DDL/01_DDL_TABLE.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐欏垱寤烘暟鎹簱鐨勮剼鏈� */
\ No newline at end of file
diff --git a/DBScript/01_DDL/02_DDL_TABLE_Edit.sql b/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
new file mode 100644
index 0000000..4a42b33
--- /dev/null
+++ b/DBScript/01_DDL/02_DDL_TABLE_Edit.sql
@@ -0,0 +1,4 @@
+/* 杩欓噷鍐欏垱寤烘垨淇敼琛ㄥ瓧娈电殑鑴氭湰 */
+
+ ALTER TABLE sys_code_gen_config ADD ShowTitleMinWidth nvarchar(50) -- 澧炲姞 椤甸潰鍒楁樉绀烘渶灏忓搴︺�怑ditby liuwq,2024-04-18銆�
+ ALTER TABLE sys_code_gen_config ADD WhetherUnionKey nvarchar(5) -- 澧炲姞 鏄惁鏄仈鍚堜富閿�怑ditby liuwq,2024-04-18銆�
\ No newline at end of file
diff --git a/DBScript/01_DDL/03_DDL_VIEW.sql b/DBScript/01_DDL/03_DDL_VIEW.sql
new file mode 100644
index 0000000..2a38372
--- /dev/null
+++ b/DBScript/01_DDL/03_DDL_VIEW.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐欐暣涓郴缁熺殑瑙嗗浘鑴氭湰 */
\ No newline at end of file
diff --git a/DBScript/01_DDL/04_DDL_INDEX.sql b/DBScript/01_DDL/04_DDL_INDEX.sql
new file mode 100644
index 0000000..707a509
--- /dev/null
+++ b/DBScript/01_DDL/04_DDL_INDEX.sql
@@ -0,0 +1 @@
+/* 这里写整个系统的索引脚本 */
\ No newline at end of file
diff --git a/DBScript/02_DML/01_InitData.sql b/DBScript/02_DML/01_InitData.sql
new file mode 100644
index 0000000..c1f41a9
--- /dev/null
+++ b/DBScript/02_DML/01_InitData.sql
@@ -0,0 +1 @@
+/* 杩欓噷鍐� 鍒濆鍖栫殑鏁版嵁 */
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.browserslistrc b/iWare_RawMaterialWarehouse_Web/.browserslistrc
new file mode 100644
index 0000000..8f96043
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.browserslistrc
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not ie <= 10
diff --git a/iWare_RawMaterialWarehouse_Web/.editorconfig b/iWare_RawMaterialWarehouse_Web/.editorconfig
new file mode 100644
index 0000000..6f77dff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.editorconfig
@@ -0,0 +1,39 @@
+[*]
+charset=utf-8
+end_of_line=lf
+insert_final_newline=false
+indent_style=space
+indent_size=2
+
+[{*.ng,*.sht,*.html,*.shtm,*.shtml,*.htm}]
+indent_style=space
+indent_size=2
+
+[{*.jhm,*.xslt,*.xul,*.rng,*.xsl,*.xsd,*.ant,*.tld,*.fxml,*.jrxml,*.xml,*.jnlp,*.wsdl}]
+indent_style=space
+indent_size=2
+
+[{.babelrc,.stylelintrc,jest.config,.eslintrc,.prettierrc,*.json,*.jsb3,*.jsb2,*.bowerrc}]
+indent_style=space
+indent_size=2
+
+[*.svg]
+indent_style=space
+indent_size=2
+
+[*.js.map]
+indent_style=space
+indent_size=2
+
+[*.less]
+indent_style=space
+indent_size=2
+
+[*.vue]
+indent_style=space
+indent_size=2
+
+[{.analysis_options,*.yml,*.yaml}]
+indent_style=space
+indent_size=2
+
diff --git a/iWare_RawMaterialWarehouse_Web/.env.production b/iWare_RawMaterialWarehouse_Web/.env.production
new file mode 100644
index 0000000..f603bd6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.env.production
@@ -0,0 +1,3 @@
+#166鐜
+VUE_APP_API_BASE_URL=http://10.10.40.166:5556
+VUE_APP_SOCKET_BASE_URL=ws://10.10.40.166:5556
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.eslintrc.js b/iWare_RawMaterialWarehouse_Web/.eslintrc.js
new file mode 100644
index 0000000..e4f4dae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.eslintrc.js
@@ -0,0 +1,77 @@
+module.exports = {
+ root: true,
+ env: {
+ node: true
+ },
+ 'extends': [
+ 'plugin:vue/strongly-recommended',
+ '@vue/standard'
+ ],
+ rules: {
+ 'no-console': 'off',
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
+ 'generator-star-spacing': 'off',
+ 'no-mixed-operators': 0,
+ 'vue/max-attributes-per-line': [
+ 2,
+ {
+ 'singleline': 5,
+ 'multiline': {
+ 'max': 1,
+ 'allowFirstLine': false
+ }
+ }
+ ],
+ 'vue/attribute-hyphenation': 0,
+ 'vue/html-self-closing': 0,
+ 'vue/component-name-in-template-casing': 0,
+ 'vue/html-closing-bracket-spacing': 0,
+ 'vue/singleline-html-element-content-newline': 0,
+ 'vue/no-unused-components': 0,
+ 'vue/multiline-html-element-content-newline': 0,
+ 'vue/no-use-v-if-with-v-for': 0,
+ 'vue/html-closing-bracket-newline': 0,
+ 'vue/no-parsing-error': 0,
+ 'no-tabs': 0,
+ 'quotes': [
+ 2,
+ 'single',
+ {
+ 'avoidEscape': true,
+ 'allowTemplateLiterals': true
+ }
+ ],
+ 'semi': [
+ 2,
+ 'never',
+ {
+ 'beforeStatementContinuationChars': 'never'
+ }
+ ],
+ 'no-delete-var': 2,
+ 'prefer-const': [
+ 2,
+ {
+ 'ignoreReadBeforeAssign': false
+ }
+ ],
+ 'template-curly-spacing': 'off',
+ 'indent': 'off',
+ "space-before-function-paren": 0,
+ 'no-multi-spaces': 2, //涓嶈兘鐢ㄥ浣欑殑绌烘牸
+ },
+ parserOptions: {
+ parser: 'babel-eslint'
+ },
+ overrides: [
+ {
+ files: [
+ '**/__tests__/*.{j,t}s?(x)',
+ '**/tests/unit/**/*.spec.{j,t}s?(x)'
+ ],
+ env: {
+ jest: true
+ }
+ }
+ ]
+}
diff --git a/iWare_RawMaterialWarehouse_Web/.gitignore b/iWare_RawMaterialWarehouse_Web/.gitignore
new file mode 100644
index 0000000..9aa7d09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.gitignore
@@ -0,0 +1,6 @@
+node_modules/
+dist/
+.env
+.env.development
+.env.preview
+package-lock.json
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/.prettierrc b/iWare_RawMaterialWarehouse_Web/.prettierrc
new file mode 100644
index 0000000..cbe842a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.prettierrc
@@ -0,0 +1,5 @@
+{
+ "printWidth": 120,
+ "semi": false,
+ "singleQuote": true
+}
diff --git a/iWare_RawMaterialWarehouse_Web/.travis.yml b/iWare_RawMaterialWarehouse_Web/.travis.yml
new file mode 100644
index 0000000..a08bfcb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/.travis.yml
@@ -0,0 +1,7 @@
+language: node_js
+node_js:
+ - 10.15.0
+cache: yarn
+script:
+ - yarn
+ - yarn run lint --no-fix && yarn run build
diff --git a/iWare_RawMaterialWarehouse_Web/Dockerfile b/iWare_RawMaterialWarehouse_Web/Dockerfile
new file mode 100644
index 0000000..cc66541
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/Dockerfile
@@ -0,0 +1,3 @@
+FROM nginx
+
+COPY . /usr/share/nginx/html
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/LICENSE b/iWare_RawMaterialWarehouse_Web/LICENSE
new file mode 100644
index 0000000..66eef0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Anan Yang
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git "a/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx" "b/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx"
new file mode 100644
index 0000000..021d398
--- /dev/null
+++ "b/iWare_RawMaterialWarehouse_Web/WMS\345\237\272\345\207\206\347\211\210\345\211\215\347\253\257\346\226\207\346\241\243.docx"
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/babel.config.js b/iWare_RawMaterialWarehouse_Web/babel.config.js
new file mode 100644
index 0000000..b6c4717
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/babel.config.js
@@ -0,0 +1,28 @@
+const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV)
+
+const plugins = []
+if (IS_PROD) {
+ plugins.push('transform-remove-console')
+}
+
+// lazy load ant-design-vue
+// if your use import on Demand, Use this code
+plugins.push(['import', {
+ 'libraryName': 'ant-design-vue',
+ 'libraryDirectory': 'es',
+ 'style': true // `style: true` 浼氬姞杞� less 鏂囦欢
+}])
+
+module.exports = {
+ presets: [
+ [
+ '@babel/preset-env',
+ {
+ 'useBuiltIns': 'entry',
+ 'corejs': 3
+ }
+ ],
+ '@vue/cli-plugin-babel/preset'
+ ],
+ plugins
+}
diff --git a/iWare_RawMaterialWarehouse_Web/config/plugin.config.js b/iWare_RawMaterialWarehouse_Web/config/plugin.config.js
new file mode 100644
index 0000000..af8159a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/config/plugin.config.js
@@ -0,0 +1,46 @@
+const ThemeColorReplacer = require('webpack-theme-color-replacer')
+const generate = require('@ant-design/colors/lib/generate').default
+
+const getAntdSerials = (color) => {
+ // 娣″寲锛堝嵆less鐨則int锛�
+ const lightens = new Array(9).fill().map((t, i) => {
+ return ThemeColorReplacer.varyColor.lighten(color, i / 10)
+ })
+ const colorPalettes = generate(color)
+ const rgb = ThemeColorReplacer.varyColor.toNum3(color.replace('#', '')).join(',')
+ return lightens.concat(colorPalettes).concat(rgb)
+}
+
+const themePluginOption = {
+ fileName: 'css/theme-colors-[contenthash:8].css',
+ matchColors: getAntdSerials('#FA541C'), // 涓昏壊绯诲垪
+ // 鏀瑰彉鏍峰紡閫夋嫨鍣紝瑙e喅鏍峰紡瑕嗙洊闂
+ changeSelector (selector) {
+ switch (selector) {
+ case '.ant-calendar-today .ant-calendar-date':
+ return ':not(.ant-calendar-selected-date):not(.ant-calendar-selected-day)' + selector
+ case '.ant-btn:focus,.ant-btn:hover':
+ return '.ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger)'
+ case '.ant-btn.active,.ant-btn:active':
+ return '.ant-btn.active:not(.ant-btn-primary):not(.ant-btn-danger),.ant-btn:active:not(.ant-btn-primary):not(.ant-btn-danger)'
+ case '.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon':
+ case '.ant-steps-item-process .ant-steps-item-icon>.ant-steps-icon':
+ return ':not(.ant-steps-item-process)' + selector
+ case '.ant-menu-horizontal>.ant-menu-item-active,.ant-menu-horizontal>.ant-menu-item-open,.ant-menu-horizontal>.ant-menu-item-selected,.ant-menu-horizontal>.ant-menu-item:hover,.ant-menu-horizontal>.ant-menu-submenu-active,.ant-menu-horizontal>.ant-menu-submenu-open,.ant-menu-horizontal>.ant-menu-submenu-selected,.ant-menu-horizontal>.ant-menu-submenu:hover':
+ case '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal > .ant-menu-submenu-selected,.ant-menu-horizontal > .ant-menu-submenu:hover':
+ return '.ant-menu-horizontal > .ant-menu-item-active,.ant-menu-horizontal > .ant-menu-item-open,.ant-menu-horizontal > .ant-menu-item-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-item:hover,.ant-menu-horizontal > .ant-menu-submenu-active,.ant-menu-horizontal > .ant-menu-submenu-open,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu-selected,.ant-menu-horizontal:not(.ant-menu-dark) > .ant-menu-submenu:hover'
+ case '.ant-menu-horizontal > .ant-menu-item-selected > a':
+ case '.ant-menu-horizontal>.ant-menu-item-selected>a':
+ return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item-selected > a'
+ case '.ant-menu-horizontal > .ant-menu-item > a:hover':
+ case '.ant-menu-horizontal>.ant-menu-item>a:hover':
+ return '.ant-menu-horizontal:not(ant-menu-light):not(.ant-menu-dark) > .ant-menu-item > a:hover'
+ default :
+ return selector
+ }
+ }
+}
+
+const createThemeColorReplacerPlugin = () => new ThemeColorReplacer(themePluginOption)
+
+module.exports = createThemeColorReplacerPlugin
diff --git a/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml b/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml
new file mode 100644
index 0000000..1136a87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/docker-compose.yml
@@ -0,0 +1,16 @@
+version: '3.4'
+
+services:
+ nginx:
+ build:
+ context: ../
+ dockerfile: ./docker/nginx/Dockerfile
+ image: admin_net_web:1.2
+ ports:
+ - 81:80
+ restart: "always"
+ volumes:
+ - node_modules:/build/node_modules:rw
+ # network_mode: host #瀹夸富缃戠粶锛屼笌瀹夸富鏈哄叡浜綉缁滐紝瀹夊叏鎬т笉浣筹紝鏈湴寮�鍙戜娇鐢紝娣︼紝涓嶆敮鎸亀indows锛屼粎鏀寔Linux
+volumes:
+ node_modules:
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile b/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile
new file mode 100644
index 0000000..2badc04
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/Dockerfile
@@ -0,0 +1,32 @@
+# build
+FROM node:latest AS builder
+
+# 鍒囨崲缂栬瘧鐩綍
+WORKDIR /build
+COPY ./ ./
+# 缂栬瘧椤圭洰 娴嬭瘯
+RUN yarn config set registry https://registry.npm.taobao.org/ \
+ && yarn install \
+ && yarn run build:development
+
+# 缂栬瘧椤圭洰 姝e紡
+#RUN yarn config set registry https://registry.npm.taobao.org/ \
+# && yarn install \
+# && yarn run build
+
+# web
+FROM nginx:alpine
+
+# 鏃跺尯
+ENV TZ=Asia/Shanghai
+RUN echo "http://mirrors.aliyun.com/alpine/v3.4/main/" > /etc/apk/repositories \
+ && apk --no-cache add tzdata zeromq \
+ && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
+ && echo '$TZ' > /etc/timezone
+
+COPY ./docker/nginx/logs /var/log/nginx
+COPY ./docker/nginx/vhost /etc/nginx/conf.d/
+COPY ./docker/nginx/nginx.conf /etc/nginx/nginx.conf
+
+# 鎷疯礉椤圭洰
+COPY --from=builder /build/dist/ /var/www/html
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf b/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf
new file mode 100644
index 0000000..5f2842e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/nginx.conf
@@ -0,0 +1,21 @@
+user nginx;
+worker_processes 1;
+pid /var/run/nginx.pid;
+error_log /var/log/nginx/nginx.error.log warn;
+events {
+ worker_connections 1024;
+}
+http {
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent" "$http_x_forwarded_for"';
+ access_log /dev/null;
+ #access_log /var/log/nginx/nginx.access.log main;
+ sendfile on;
+ #tcp_nopush on;
+ keepalive_timeout 65;
+ #gzip on;
+ include /etc/nginx/conf.d/*.conf;
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf b/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf
new file mode 100644
index 0000000..5ca558b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/docker/nginx/vhost/default.conf
@@ -0,0 +1,30 @@
+server {
+ listen 80;
+ server_name localhost;
+ root /var/www/html;
+ index index.php index.html index.htm;
+ access_log /dev/null;
+ error_log /var/log/nginx/default.error.log warn;
+
+ # redirect server error pages to the static page /50x.html
+ #
+ #error_page 500 502 503 504 /50x.html;
+
+ location / {
+ root /var/www/html;
+ add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
+ try_files $uri $uri/ /index.html;
+ }
+
+
+ location /api {
+ #濡傛灉鏈嶅姟鍣ㄨ鑾峰彇瀹㈡埛绔湡瀹濱P锛屽彲浠ョ敤涓嬩笁鍙ヨ缃富鏈哄ご鍜屽鎴风鐪熷疄鍦板潃
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ rewrite ^/api/(.*)$ /$1 break; #閲嶅啓
+ proxy_pass http://host.docker.internal:5566; # docker鍐呰闂涓绘満锛坵in鎴杕ac锛�----娉ㄦ剰锛氬涓绘満闇�鍦╤osts鏂囦欢涓鍔犱竴鏉� host.docker.internal 127.0.0.1
+ # proxy_pass http://host.docker.internal:5566; # 鐢熶骇鐜鏀规垚鐪熷疄鍚庣鍦板潃
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/jest.config.js b/iWare_RawMaterialWarehouse_Web/jest.config.js
new file mode 100644
index 0000000..29fee32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/jest.config.js
@@ -0,0 +1,23 @@
+module.exports = {
+ moduleFileExtensions: [
+ 'js',
+ 'jsx',
+ 'json',
+ 'vue'
+ ],
+ transform: {
+ '^.+\\.vue$': 'vue-jest',
+ '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
+ '^.+\\.jsx?$': 'babel-jest'
+ },
+ moduleNameMapper: {
+ '^@/(.*)$': '<rootDir>/src/$1'
+ },
+ snapshotSerializers: [
+ 'jest-serializer-vue'
+ ],
+ testMatch: [
+ '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
+ ],
+ testURL: 'http://localhost/'
+}
diff --git a/iWare_RawMaterialWarehouse_Web/jsconfig.json b/iWare_RawMaterialWarehouse_Web/jsconfig.json
new file mode 100644
index 0000000..1bd0da4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/jsconfig.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "target": "es6",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "exclude": ["node_modules", "dist"],
+ "include": ["src/**/*"]
+}
diff --git a/iWare_RawMaterialWarehouse_Web/package.json b/iWare_RawMaterialWarehouse_Web/package.json
new file mode 100644
index 0000000..f923aab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/package.json
@@ -0,0 +1,101 @@
+{
+ "name": "vue-antd-pro",
+ "version": "3.0.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service serve --open",
+ "build": "vue-cli-service build",
+ "servenew": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service serve",
+ "buildnew": "set NODE_OPTIONS=--openssl-legacy-provider & vue-cli-service build",
+ "test:unit": "vue-cli-service test:unit",
+ "build:preview": "vue-cli-service build --mode preview",
+ "postinstall": "opencollective-postinstall"
+ },
+ "dependencies": {
+ "@antv/data-set": "^0.10.2",
+ "@jiaminghi/data-view": "^2.10.0",
+ "@microsoft/signalr": "^5.0.5",
+ "ant-design-vue": "1.7.8",
+ "axios": "^0.19.0",
+ "babel-polyfill": "^6.26.0",
+ "clipboard": "^2.0.6",
+ "compression-webpack-plugin": "5.0.1",
+ "core-js": "^3.1.2",
+ "crypto-js": "^4.0.0",
+ "default-passive-events": "^1.0.10",
+ "echarts": "^5.4.0",
+ "enquire.js": "^2.1.6",
+ "font-awesome": "^4.7.0",
+ "jquery": "^3.5.1",
+ "jsbarcode": "^3.11.3",
+ "jsplumb": "^2.15.6",
+ "k-form-design": "^3.8.11",
+ "leaflet": "^1.7.1",
+ "leaflet.pm": "^2.2.0",
+ "linq": "^3.2.3",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.get": "^4.4.2",
+ "lodash.pick": "^4.4.0",
+ "md5": "^2.2.1",
+ "mockjs2": "1.0.8",
+ "moment": "^2.24.0",
+ "nprogress": "^0.2.0",
+ "print-js": "^1.0.63",
+ "raphael": "^2.3.0",
+ "screenfull": "^5.1.0",
+ "viser-vue": "^2.4.6",
+ "vue": "^2.6.10",
+ "vue-clipboard2": "^0.2.1",
+ "vue-codemirror-lite": "^1.0.4",
+ "vue-cropper": "0.4.9",
+ "vue-ls": "^3.2.1",
+ "vue-quill-editor": "^3.0.6",
+ "vue-router": "^3.1.2",
+ "vue-svg-component-runtime": "^1.0.1",
+ "vue2-leaflet": "^2.7.0",
+ "vuedraggable": "^2.23.2",
+ "vuex": "^3.1.1",
+ "wangeditor": "^3.1.1",
+ "xlsx": "0.14.1"
+ },
+ "devDependencies": {
+ "@ant-design/colors": "^3.2.1",
+ "@vue/cli-plugin-babel": "^4.0.4",
+ "@vue/cli-plugin-eslint": "^4.0.4",
+ "@vue/cli-plugin-router": "^4.0.4",
+ "@vue/cli-plugin-unit-jest": "^4.0.4",
+ "@vue/cli-plugin-vuex": "^4.0.4",
+ "@vue/cli-service": "^4.0.4",
+ "@vue/eslint-config-prettier": "^5.0.0",
+ "@vue/eslint-config-standard": "^4.0.0",
+ "@vue/test-utils": "^1.0.0-beta.29",
+ "babel-eslint": "^10.0.1",
+ "babel-plugin-import": "^1.13.0",
+ "babel-plugin-transform-remove-console": "^6.9.4",
+ "eslint": "^6.8.0",
+ "eslint-plugin-html": "^5.0.0",
+ "eslint-plugin-prettier": "^3.1.0",
+ "eslint-plugin-vue": "^5.2.3",
+ "less": "^3.0.4",
+ "less-loader": "^5.0.0",
+ "opencollective": "^1.0.3",
+ "opencollective-postinstall": "^2.0.2",
+ "prettier": "^1.18.2",
+ "vue-svg-icon-loader": "^2.1.1",
+ "vue-template-compiler": "^2.6.10",
+ "webpack": "^4.46.0",
+ "webpack-theme-color-replacer": "1.3.18"
+ },
+ "collective": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/ant-design-pro-vue"
+ },
+ "main": ".eslintrc.js",
+ "directories": {
+ "test": "tests"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "description": ""
+}
diff --git a/iWare_RawMaterialWarehouse_Web/postcss.config.js b/iWare_RawMaterialWarehouse_Web/postcss.config.js
new file mode 100644
index 0000000..961986e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/postcss.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ plugins: {
+ autoprefixer: {}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/public/config.js b/iWare_RawMaterialWarehouse_Web/public/config.js
new file mode 100644
index 0000000..6737c88
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/config.js
@@ -0,0 +1,5 @@
+window._CONFIG = {
+ baseUrl: 'http://localhost:8090', //璋冭瘯鍦板潃
+ // baseUrlScreen: 'http://10.10.40.166:5588', //鐪嬫澘澶у睆 - 涓浗鍦板浘杩欎竴鐗�
+ }
+
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/favicon.ico b/iWare_RawMaterialWarehouse_Web/public/favicon.ico
new file mode 100644
index 0000000..da49afa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/favicon.ico
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/public/index.html b/iWare_RawMaterialWarehouse_Web/public/index.html
new file mode 100644
index 0000000..5c6df91
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/index.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="zh-cmn-Hans">
+<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">
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+ <title>鎴戠殑寮�鍙戞ā鏉�</title>
+ <script src="<%= BASE_URL %>config.js">
+ </script>
+ <style>.first-loading-wrp{display:flex;justify-content:center;align-items:center;flex-direction:column;min-height:420px;height:100%}.first-loading-wrp>h1{font-size:128px}.first-loading-wrp .loading-wrp{padding:98px;display:flex;justify-content:center;align-items:center}.dot{animation:antRotate 1.2s infinite linear;transform:rotate(45deg);position:relative;display:inline-block;font-size:32px;width:32px;height:32px;box-sizing:border-box}.dot i{width:14px;height:14px;position:absolute;display:block;background-color:#1890ff;border-radius:100%;transform:scale(.75);transform-origin:50% 50%;opacity:.3;animation:antSpinMove 1s infinite linear alternate}.dot i:nth-child(1){top:0;left:0}.dot i:nth-child(2){top:0;right:0;-webkit-animation-delay:.4s;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;-webkit-animation-delay:.8s;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;-webkit-animation-delay:1.2s;animation-delay:1.2s}@keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@-webkit-keyframes antRotate{to{-webkit-transform:rotate(405deg);transform:rotate(405deg)}}@keyframes antSpinMove{to{opacity:1}}@-webkit-keyframes antSpinMove{to{opacity:1}}</style>
+ <!-- require cdn assets css -->
+ <% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.css) { %>
+ <link rel="stylesheet" href="<%= htmlWebpackPlugin.options.cdn.css[i] %>" />
+ <% } %>
+ <script>
+ var version = 20240312;//杩欓噷璁剧疆鎮ㄧ殑鐗堟湰鍙�
+ </script>
+</head>
+<body>
+<noscript>
+ <strong>We're sorry but vue-antd-pro doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
+</noscript>
+<div id="app">
+ <div class="first-loading-wrp">
+ <!-- <h1>Admin.NET</h1> -->
+ <div class="loading-wrp">
+ <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
+ </div>
+ <div style="display: flex; justify-content: center; align-items: center;">鎴戠殑寮�鍙戞ā鏉�</div>
+ </div>
+</div>
+<!-- require cdn assets js -->
+<% for (var i in htmlWebpackPlugin.options.cdn && htmlWebpackPlugin.options.cdn.js) { %>
+<script src="<%= htmlWebpackPlugin.options.cdn.js[i] %>"></script>
+<% } %>
+<!-- built files will be auto injected -->
+</body>
+</html>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/loading.css b/iWare_RawMaterialWarehouse_Web/public/loading/loading.css
new file mode 100644
index 0000000..a899eac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/loading.css
@@ -0,0 +1 @@
+#preloadingAnimation{position:fixed;left:0;top:0;height:100%;width:100%;background:#ffffff;user-select:none;z-index: 9999;overflow: hidden}.lds-roller{display:inline-block;position:relative;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;}.lds-roller div{animation:lds-roller 1.2s cubic-bezier(0.5,0,0.5,1) infinite;transform-origin:32px 32px;}.lds-roller div:after{content:" ";display:block;position:absolute;width:6px;height:6px;border-radius:50%;background:#13c2c2;margin:-3px 0 0 -3px;}.lds-roller div:nth-child(1){animation-delay:-0.036s;}.lds-roller div:nth-child(1):after{top:50px;left:50px;}.lds-roller div:nth-child(2){animation-delay:-0.072s;}.lds-roller div:nth-child(2):after{top:54px;left:45px;}.lds-roller div:nth-child(3){animation-delay:-0.108s;}.lds-roller div:nth-child(3):after{top:57px;left:39px;}.lds-roller div:nth-child(4){animation-delay:-0.144s;}.lds-roller div:nth-child(4):after{top:58px;left:32px;}.lds-roller div:nth-child(5){animation-delay:-0.18s;}.lds-roller div:nth-child(5):after{top:57px;left:25px;}.lds-roller div:nth-child(6){animation-delay:-0.216s;}.lds-roller div:nth-child(6):after{top:54px;left:19px;}.lds-roller div:nth-child(7){animation-delay:-0.252s;}.lds-roller div:nth-child(7):after{top:50px;left:14px;}.lds-roller div:nth-child(8){animation-delay:-0.288s;}.lds-roller div:nth-child(8):after{top:45px;left:10px;}#preloadingAnimation .load-tips{color: #13c2c2;font-size:2rem;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:80px;text-align:center;width:400px;height:64px;} @keyframes lds-roller{0%{transform:rotate(0deg);} 100%{transform:rotate(360deg);}}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/loading.html b/iWare_RawMaterialWarehouse_Web/public/loading/loading.html
new file mode 100644
index 0000000..018c402
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/loading.html
@@ -0,0 +1 @@
+<div id="preloadingAnimation"><div class=lds-roller><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class=load-tips>Loading</div></div>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html b/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html
new file mode 100644
index 0000000..5c85af3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/html_code_segment.html
@@ -0,0 +1,5 @@
+<div class="preloading-animate">
+ <div class="preloading-wrapper">
+ <svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
+ </div>
+</div>
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css
new file mode 100644
index 0000000..c35cd73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.css
@@ -0,0 +1 @@
+.preloading-animate{background:#ffffff;width:100%;height:100%;position:fixed;left:0;top:0;z-index:299;}.preloading-animate .preloading-wrapper{position:absolute;width:5rem;height:5rem;left:50%;top:50%;transform:translate(-50%,-50%);}.preloading-animate .preloading-wrapper .preloading-balls{font-size:5rem;}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg
new file mode 100644
index 0000000..7ff7322
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/loading/option2/loading.svg
@@ -0,0 +1 @@
+<svg class="preloading-balls" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"><circle cx="67.802" cy="59.907" r="6" fill="#51CACC"><animate attributeName="cx" values="75;57.72542485937369" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="50;73.77641290737884" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#51CACC;#9DF871" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="46.079" cy="69.992" r="6" fill="#9DF871"><animate attributeName="cx" values="57.72542485937369;29.774575140626318" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="73.77641290737884;64.69463130731182" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#9DF871;#E0FF77" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="29.775" cy="52.449" r="6" fill="#E0FF77"><animate attributeName="cx" values="29.774575140626318;29.774575140626315" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="64.69463130731182;35.30536869268818" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#E0FF77;#DE9DD6" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="41.421" cy="31.521" r="6" fill="#DE9DD6"><animate attributeName="cx" values="29.774575140626315;57.72542485937368" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="35.30536869268818;26.22358709262116" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#DE9DD6;#FF708E" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle><circle cx="64.923" cy="36.13" r="6" fill="#FF708E"><animate attributeName="cx" values="57.72542485937368;75" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="cy" values="26.22358709262116;49.99999999999999" keyTimes="0;1" dur="1s" repeatCount="indefinite"/><animate attributeName="fill" values="#FF708E;#51CACC" keyTimes="0;1" dur="1s" repeatCount="indefinite"/></circle></svg>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/public/logo.png b/iWare_RawMaterialWarehouse_Web/public/logo.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/public/logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/App.vue b/iWare_RawMaterialWarehouse_Web/src/App.vue
new file mode 100644
index 0000000..2e90026
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/App.vue
@@ -0,0 +1,85 @@
+<template>
+ <a-config-provider :locale="locale">
+ <div id="app" class="app app1">
+ <router-view class="scrollbar"/>
+ </div>
+ </a-config-provider>
+</template>
+
+<script>
+import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
+import { AppDeviceEnquire } from '@/utils/mixin'
+
+export default {
+ mixins: [AppDeviceEnquire],
+ data () {
+ return {
+ locale: zhCN
+ }
+ },
+ mounted () {
+
+ }
+}
+</script>
+<style lang="less">
+ .app {
+ overflow: auto;
+ border : none;
+ }
+ .scrollbar {
+ margin: 0 auto;
+ }
+ .app1::-webkit-scrollbar {
+ /*婊氬姩鏉℃暣浣撴牱寮�*/
+ width : 8px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+ }
+ .app1::-webkit-scrollbar-thumb {
+ /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+ border-radius: 6px;
+ background : #aaa;
+ }
+ .app1::-webkit-scrollbar-track {
+ /*婊氬姩鏉¢噷闈㈣建閬�*/
+ border-radius: 8px;
+ background : #FFFFFF;
+ }
+ .weiben-private-drawer {
+ .ant-drawer-wrapper-body{
+ display:flex;
+ flex-direction: column;
+ .ant-drawer-header{
+ flex-shrink: 0;
+ }
+ .ant-drawer-body{
+ padding:0;
+ flex-grow: 1;
+ height:1px;
+ }
+ }
+ .ant-spin-nested-loading,.ant-spin-container{
+ height:100%;
+ }
+ }
+ .ant-modal{
+ &.zero-modal{
+ .ant-modal-body{
+ padding:0;
+ }
+ }
+ }
+ a.disabled{
+ color:#a9a9a9 !important;
+ }
+ .auto-wrap{
+ word-break:break-all;
+ word-wrap:break-word;
+ }
+ .no-wrap,.ellipsis{
+ white-space:nowrap;
+ }
+ .ellipsis{
+ overflow:hidden;
+ text-overflow:ellipsis;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js
new file mode 100644
index 0000000..cea3503
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/codeGenerateManage.js
@@ -0,0 +1,148 @@
+/**
+ * 浠g爜鐢熸垚
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGeneratePage (parameter) {
+ return axios({
+ url: '/codeGenerate/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澧炲姞
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateAdd (parameter) {
+ return axios({
+ url: '/codeGenerate/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateEdit (parameter) {
+ return axios({
+ url: '/codeGenerate/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateDelete (parameter) {
+ return axios({
+ url: '/codeGenerate/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏌ヨ褰撳墠鏁版嵁搴撶敤鎴蜂笅鐨勬墍鏈夊簱
+ *
+ * @author fuqiang
+ * @date 2021/10/13 15:00
+ */
+ export function codeGenerateDatabaseList (parameter) {
+ return axios({
+ url: '/codeGenerate/DatabaseList',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏌ヨ褰撳墠鏁版嵁搴撶敤鎴蜂笅鐨勬墍鏈夎〃
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateInformationList (parameter) {
+ return axios({
+ url: '/codeGenerate/InformationList',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏍规嵁搴撳悕琛ㄥ悕鑾峰彇鍒�
+ *
+ * @author fuqiang 20211014
+ * @param {*} databaseName 搴撳悕
+ * @param {*} tableName 琛ㄥ悕
+ * @return {*}
+ */
+export function codeGenerateColumnList (databaseName,tableName) {
+ return axios({
+ url: `/codeGenerate/ColumnList/${databaseName}/${tableName}`,
+ method: 'get'
+ })
+}
+
+/**
+ * 鏈湴鐢熸垚
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateRunLocal (parameter) {
+ return axios({
+ url: '/codeGenerate/runLocal',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍘嬬缉鍖呮柟寮忎笅杞�
+ *
+ * @author yubaoshan
+ * @date 2020/12/23 15:00
+ */
+export function codeGenerateRunDown (parameter) {
+ return axios({
+ url: '/codeGenerate/runDown',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍒锋柊閰嶇疆琛�
+ *
+ * @author lanhuxing
+ * @date 2022/05/08 15:00
+ */
+export function codeGenerateRefresh (id) {
+ return axios({
+ url: '/codeGenerate/refresh/' + id,
+ method: 'get'
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js
new file mode 100644
index 0000000..44d788a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/lowCodeManage.js
@@ -0,0 +1,105 @@
+/**
+ * 浣庝唬鐮佺鐞�
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒楄〃
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodePage (parameter) {
+ return axios({
+ url: '/lowcode/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澧炲姞
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeAdd (parameter) {
+ return axios({
+ url: '/lowcode/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeEdit (parameter) {
+ return axios({
+ url: '/lowcode/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeDelete (parameter) {
+ return axios({
+ url: '/lowcode/del',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缁勪欢杞崲鏁版嵁搴撳瓧娈�
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeContrast (parameter) {
+ return axios({
+ url: '/lowcode/contrast',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇缁勪欢璇︽儏
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeInfo (id) {
+ return axios({
+ url: '/lowcode/info/' + id,
+ method: 'get'
+ })
+}
+
+/**
+ * 鐢熸垚ORM妯″瀷
+ *
+ * @author lanhuxing
+ * @date 2022/05/02 17:30
+ */
+export function lowCodeRunLocal (id) {
+ return axios({
+ url: '/lowcode/runLocal/' + id,
+ method: 'get'
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js
new file mode 100644
index 0000000..e61944c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/gen/sysCodeGenerateConfigManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2021-02-06 20:19:49
+ */
+export function sysCodeGenerateConfigList (parameter) {
+ return axios({
+ url: '/sysCodeGenerateConfig/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缂栬緫浠g爜鐢熸垚璇︾粏閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2021-02-06 20:19:49
+ */
+export function sysCodeGenerateConfigEdit (parameter) {
+ return axios({
+ url: '/sysCodeGenerateConfig/edit',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js
new file mode 100644
index 0000000..ea5f97c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvTaskManage.js
@@ -0,0 +1,31 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function AgvTaskPage (parameter) {
+ return axios({
+ url: '/assembleagvtask/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yrj
+ */
+export function AgvTaskForceComplete (id) {
+ return axios({
+ url: '/assembleagvtask/finish',
+ method: 'post',
+ data: {id}
+ })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js
new file mode 100644
index 0000000..62599c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/AgvWaringManage.js
@@ -0,0 +1,128 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨAgv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringPage (parameter) {
+ return axios({
+ url: '/AgvWaring/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * Agv鎶ヨ鍒楄〃
+ *
+ * @author yc
+ */
+export function AgvWaringList (parameter) {
+ return axios({
+ url: '/AgvWaring/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringAdd (parameter) {
+ return axios({
+ url: '/AgvWaring/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringEdit (parameter) {
+ return axios({
+ url: '/AgvWaring/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎Agv鎶ヨ
+ *
+ * @author yc
+ */
+export function AgvWaringDelete (parameter) {
+ return axios({
+ url: '/AgvWaring/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭Agv鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function AgvWaringToExcel (parameter) {
+ return axios({
+ url: '/AgvWaring/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆Agv鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function AgvWaringFromExcel (data, parameter) {
+ return axios({
+ url: '/AgvWaring/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇Agv鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function AgvWaringDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/AgvWaring/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+/**
+ * Agv澶嶄綅
+ *
+ * @author yhh
+ */
+export function AgvWaringReset (id) {
+ return axios({
+ url: '/AgvWaring/PcResetAgvFault',
+ method: 'post',
+ data: {id}
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js
new file mode 100644
index 0000000..599bad7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BaackupWarehouseOrderManage.js
@@ -0,0 +1,140 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderPage (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澶囧簱璁″垝鍒楄〃
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderList (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderAdd (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderEdit (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎澶囧簱璁″垝
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderDelete (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭澶囧簱璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderToExcel (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆澶囧簱璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇澶囧簱璁″垝鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function BackupWarehouseOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function BackupWarehouseOrderSubclass() {
+ return axios({
+ url: '/BackupWarehouseOrder/OrderTypeSubclass',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 澶囧簱璁″垝璇︽儏
+ *
+ * @author yhh
+ */
+export function BackupWarehouseOrderDetailPage (parameter) {
+ return axios({
+ url: '/BackupWarehouseOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js
new file mode 100644
index 0000000..ecba79f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage.js
@@ -0,0 +1,169 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勭洏鍏ュ簱
+ *
+ * @author liduanping
+ */
+export function BindEntrancePage (parameter) {
+ return axios({
+ url: '/BindEntrance/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缁勭洏鍏ュ簱鍒楄〃
+ *
+ * @author liduanping
+ */
+export function BindEntranceList (parameter) {
+ return axios({
+ url: '/BindEntrance/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎵嬪姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceManualWare (parameter) {
+ return axios({
+ url: '/BindEntrance/ManualWare',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑷姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceAutoWare (parameter) {
+ return axios({
+ url: '/BindEntrance/AutoWare',
+ method: 'post',
+ data: parameter
+ })
+}
+
+// 缁勭洏 202311
+export function AutoWare (parameter) {
+ return axios({
+ url: '/bindentrance/AutoWare',
+ method: 'post',
+ data: parameter
+ })
+}
+
+// 鑷姩鍏ュ簱 202311
+export function automaticWarehousing (parameter) {
+ return axios({
+ url: '/bindentrance/automaticWarehousing',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+// 浜哄伐鍏ュ簱 202311
+export function manualWarehousing (parameter) {
+ return axios({
+ url: '/bindentrance/manualWarehousing',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+// 鐗╂枡鏌ヨ 202311
+export function MaterialRukuPage (parameter) {
+ return axios({
+ url: '/bindentrance/GetMaterial?MaterialNo='+parameter.MaterialNo,
+ method: 'get',
+ data: parameter
+ })
+}
+
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetContainer (parameter) {
+ return axios({
+ url: '/BindEntrance/GetContainer',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐗╂枡淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetMaterial (parameter) {
+ return axios({
+ url: '/BindEntrance/GetMaterial',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅-鑾峰彇鐗╂枡
+ *
+ * @author dla
+ */
+export function BindMixtureGetContainer (parameter) {
+ return axios({
+ url: '/BindEntrance/getcontainer',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缁勭洏鎺ュ彛
+ *
+ * @author yhh
+ */
+export function BindAction (parameter) {
+ return axios({
+ url: '/BindEntrance/BindEntrance',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 绉诲簱
+ *
+ * @author yhh
+ */
+export function BindEntranceTransfer (parameter) {
+ return axios({
+ url: '/BindEntrance/StockTransfer',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐩爣浠撳簱涓嬫媺鍒楄〃
+ *
+ * @author yhh
+ */
+export function BindEntranceGetSelects () {
+ return axios({
+ url: '/BindEntrance/GetAreaList',
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js
new file mode 100644
index 0000000..bababb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/BindEntranceManage2.js
@@ -0,0 +1,40 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鎵嬪姩鍏ュ簱
+ *
+ * @author yhh
+ */
+export function BindEntranceManualWare (parameter) {
+ return axios({
+ url: '/PlywoodGroupDisk/PlywoodManualWare',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎵樼洏淇℃伅
+ *
+ * @author yhh
+ */
+export function BindEntranceGetContainer (parameter) {
+ return axios({
+ url: '/PlywoodGroupDisk/PlywoodGetContainer',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缁勭洏鎺ュ彛
+ *
+ * @author yhh
+ */
+export function BindAction (parameter) {
+ return axios({
+ url: '/PlywoodGroupDisk/PlywoodBindEntrance',
+ method: 'post',
+ data: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js
new file mode 100644
index 0000000..b0e6b8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DeliveryWorkManage.js
@@ -0,0 +1,127 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkPage (parameter) {
+ return axios({
+ url: '/DeliveryWork/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏀惰揣浣滀笟鍒楄〃
+ *
+ * @author yc
+ */
+export function DeliveryWorkList (parameter) {
+ return axios({
+ url: '/DeliveryWork/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkAdd (parameter) {
+ return axios({
+ url: '/DeliveryWork/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkEdit (parameter) {
+ return axios({
+ url: '/DeliveryWork/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鏀惰揣浣滀笟
+ *
+ * @author yc
+ */
+export function DeliveryWorkDelete (parameter) {
+ return axios({
+ url: '/DeliveryWork/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鏀惰揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DeliveryWorkToExcel (parameter) {
+ return axios({
+ url: '/DeliveryWork/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鏀惰揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DeliveryWorkFromExcel (data, parameter) {
+ return axios({
+ url: '/DeliveryWork/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鏀惰揣浣滀笟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DeliveryWorkDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/DeliveryWork/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function DeliveryWorkDetailPage (parameter) {
+ return axios({
+ url: '/DeliveryWork/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js
new file mode 100644
index 0000000..10421d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderPage (parameter) {
+ return axios({
+ url: '/DispatchedOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍙戣揣鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function DispatchedOrderList (parameter) {
+ return axios({
+ url: '/DispatchedOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderAdd (parameter) {
+ return axios({
+ url: '/DispatchedOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderEdit (parameter) {
+ return axios({
+ url: '/DispatchedOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣鍗�
+ *
+ * @author yc
+ */
+export function DispatchedOrderDelete (parameter) {
+ return axios({
+ url: '/DispatchedOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOrderToExcel (parameter) {
+ return axios({
+ url: '/DispatchedOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍙戣揣鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/DispatchedOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/DispatchedOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOrderLargeCategories() {
+ return axios({
+ url: '/DispatchedOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOrderSubclass(id) {
+ return axios({
+ url: '/DispatchedOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 鏌ヨ閲囪喘鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function DispatchedOrderDetailPage (parameter) {
+ return axios({
+ url: '/DispatchedOrder/detailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js
new file mode 100644
index 0000000..faf1c90
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedOutboundOrderManage.js
@@ -0,0 +1,154 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderPage (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍙戣揣鍑哄簱鍒楄〃
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderList (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderAdd (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderEdit (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣鍑哄簱
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderDelete (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣鍑哄簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderToExcel (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍙戣揣鍑哄簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣鍑哄簱鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedOutboundOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderLargeCategories() {
+ return axios({
+ url: '/DispatchedOutboundOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderSubclass(id) {
+ return axios({
+ url: '/DispatchedOutboundOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 鍙戣揣鍑哄簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function DispatchedOutboundOrderDetailPage (parameter) {
+ return axios({
+ url: '/DispatchedOutboundOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js
new file mode 100644
index 0000000..b5f55fb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/DispatchedWorkManage.js
@@ -0,0 +1,125 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkPage (parameter) {
+ return axios({
+ url: '/DispatchedWork/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍙戣揣浣滀笟鍒楄〃
+ *
+ * @author yc
+ */
+export function DispatchedWorkList (parameter) {
+ return axios({
+ url: '/DispatchedWork/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkAdd (parameter) {
+ return axios({
+ url: '/DispatchedWork/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkEdit (parameter) {
+ return axios({
+ url: '/DispatchedWork/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍙戣揣浣滀笟
+ *
+ * @author yc
+ */
+export function DispatchedWorkDelete (parameter) {
+ return axios({
+ url: '/DispatchedWork/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍙戣揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedWorkToExcel (parameter) {
+ return axios({
+ url: '/DispatchedWork/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍙戣揣浣滀笟鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function DispatchedWorkFromExcel (data, parameter) {
+ return axios({
+ url: '/DispatchedWork/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍙戣揣浣滀笟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function DispatchedWorkDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/DispatchedWork/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function DispatchedWorkDetailPage (parameter) {
+ return axios({
+ url: '/DispatchedWork/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js
new file mode 100644
index 0000000..b7dc248
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage.js
@@ -0,0 +1,41 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author liduanping
+ */
+export function WmsMaterialStockPage (parameter) {
+ return axios({
+ url: '/ExWarehouse/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎵嬪姩鍑哄簱
+ *
+ * @author yhh
+ */
+export function IexwarehouseManual (parameter) {
+ return axios({
+ url: '/ExWarehouse/manualExWarehouse',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑷姩鍑哄簱
+ *
+ * @author yhh
+ */
+export function IexwarehouseAuto (parameter) {
+ return axios({
+ url: '/ExWarehouse/AutoExWarehouse',
+ method: 'post',
+ data: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js
new file mode 100644
index 0000000..0d64661
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ExWarehouseManage1.js
@@ -0,0 +1,130 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsPage (parameter) {
+ return axios({
+ url: '/cnctakematerials/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsAdd (data) {
+ return axios({
+ url: '/cnctakematerials/AddCNCTakematerial',
+ method: 'post',
+ data: data
+ })
+}
+
+/**
+ * 鍒犻櫎鍙枡
+ *
+ * @author XJF
+ */
+export function CncTakeMaterialsDelete (parameter) {
+ return axios({
+ url: '/LesTakematerials/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍙枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/cnctakematerials/CNCGetTakeMaterialsNo',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+ return axios({
+ url: '/cnctakematerials/CNCMaterialSourcepage',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 鍙枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+ return axios({
+ url: '/cnctakematerials/CNCBatchTakeMaterials',
+ method: 'post',
+ data:{id:ids}
+ })
+}
+
+/**
+ * 鍙枡鍗曡鎯呬笅鍙�
+ *
+ * @author yhh
+ */
+export function DetailDistribute (id) {
+ return axios({
+ url: '/cnctakematerials/CNCBatchTakeMaterialsDetail',
+ method: 'post',
+ data:{id}
+ })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function CncTakeMaterialsDetailPage (params) {
+ return axios({
+ url: '/cnctakematerials/detailPage',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 鑾峰彇浜х嚎
+ *
+ * @author yhh
+ */
+export function GetLines() {
+ return axios({
+ url: '/cnctakematerials/GetProductionlineList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStations(id) {
+ return axios({
+ url: '/cnctakematerials/GetStationList',
+ method: 'get',
+ params:{id}
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js
new file mode 100644
index 0000000..0514fa8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/Files/SysExcelTemplateManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨExcel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplatePage (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * Excel妯℃澘鍒楄〃
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateList (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateAdd (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateEdit (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎Excel妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateDelete (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateToExcel (parameter) {
+ return axios({
+ url: '/SysExcelTemplate/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateFromExcel (data, parameter) {
+ return axios({
+ url: '/SysExcelTemplate/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function SysExcelTemplateDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/SysExcelTemplate/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js
new file mode 100644
index 0000000..d93a8d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAccessDetailsManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsPage (parameter) {
+ return axios({
+ url: '/FoamingAccessDetails/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍑哄叆搴撹褰曞垪琛�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsList (parameter) {
+ return axios({
+ url: '/FoamingAccessDetails/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsAdd (parameter) {
+ return axios({
+ url: '/FoamingAccessDetails/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsEdit (parameter) {
+ return axios({
+ url: '/FoamingAccessDetails/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function FoamingAccessDetailsDelete (parameter) {
+ return axios({
+ url: '/FoamingAccessDetails/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js
new file mode 100644
index 0000000..731980c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingAgvTaskManage.js
@@ -0,0 +1,139 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskPage (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娉℃搏杞﹂棿Agv浠诲姟琛ㄥ垪琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskList (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskAdd (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskEdit (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎娉℃搏杞﹂棿Agv浠诲姟琛�
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskDelete (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 瀵煎嚭娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel鏂囦欢
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskToExcel (parameter) {
+ return axios({
+ url: '/FoamingAgvTask/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel鏂囦欢
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskFromExcel (data, parameter) {
+ return axios({
+ url: '/FoamingAgvTask/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+/**
+ * 涓嬭浇娉℃搏杞﹂棿Agv浠诲姟琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/FoamingAgvTask/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yrj
+ */
+export function FoamingAgvTaskForceComplete (id) {
+ return axios({
+ url: '/FoamingAgvTask/finish',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 鐢熸垚AGB浠诲姟锛屾柟渚挎祴璇�
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function foamingAgvTaskGenerate(parameter) {
+ return axios({
+ url: '/FoamingInteractive/CreateInTask',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js
new file mode 100644
index 0000000..be1c2eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingChuKuOrderManage.js
@@ -0,0 +1,147 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderPage (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍑哄簱鍗曟嵁璇︽儏
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderDetailPage (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/detailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缂栬緫鏃惰幏鍙栧嚭搴撳崟淇℃伅
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderDetailEdit (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/editDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderAdd (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderEdit (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍙戞场杞﹂棿鍑哄簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingChuKuOrderDelete (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎵归噺涓嬪彂
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderMulDistribute (ids) {
+ return axios({
+ url: '/FoamingChuKuOrder/batchDistribute',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+/**
+ * 鎵归噺鎾ゅ洖
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderMulWithdraw (ids) {
+ return axios({
+ url: '/FoamingChuKuOrder/batchWithdraw',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
+/**
+ * 鍒嗛〉鏌ヨ鍙嚭搴撶墿鏂欎俊鎭�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderStockPage (parameter) {
+ return axios({
+ url: '/FoamingChuKuOrder/stockPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+/**
+ * 鍗曟嵁瀹屾垚
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderOutForceComplete (id) {
+ return axios({
+ url: '/FoamingChuKuOrder/OutForceComplete',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 鑾峰彇鍗曟嵁鍙�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingChuKuOrderGetNo () {
+ return axios({
+ url: '/FoamingChuKuOrder/GetChuKuOrderNo',
+ method: 'post'
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js
new file mode 100644
index 0000000..33aa12e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingLocationViewManage.js
@@ -0,0 +1,92 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撳尯鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetArea () {
+ return axios({
+ url: '/Foaminglocationview/GetArea',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ *
+ * @author yhh
+ */
+export function GetAisle (parameter) {
+ return axios({
+ url: '/Foaminglocationview/GetPalceAisle',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇鎺掑垪琛�
+ *
+ * @author yhh
+ */
+export function GetPalceRowno (parameter) {
+ return axios({
+ url: '/Foaminglocationview/GetPalceRowno',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇涓�涓帓涓殑搴撲綅鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPalceList (parameter) {
+ return axios({
+ url: '/Foaminglocationview/GetPalceList',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇搴撳尯璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+ return axios({
+ url: '/Foaminglocationview/GetMaterialDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊搴撲綅閿佸畾鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+ return axios({
+ url: '/Foaminglocationview/UpdatePalceIslock',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊搴撲綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+ return axios({
+ url: '/Foaminglocationview/UpdatePalceKongXian',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js
new file mode 100644
index 0000000..0b408e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingMaterialStockManage.js
@@ -0,0 +1,77 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockPage (parameter) {
+ return axios({
+ url: '/FoamingMaterialStock/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 搴撳瓨琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockList (parameter) {
+ return axios({
+ url: '/FoamingMaterialStock/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockAdd (parameter) {
+ return axios({
+ url: '/FoamingMaterialStock/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockEdit (parameter) {
+ return axios({
+ url: '/FoamingMaterialStock/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function FoamingMaterialStockDelete (parameter) {
+ return axios({
+ url: '/FoamingMaterialStock/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+* 鑾峰彇WmsArea鍒楄〃
+* @author XJF
+*/
+export function FoamingMaterialStockFkWmsAreaList() {
+ return axios({
+ url: '/FoamingMaterialStock/fkWmsArea',
+ method: 'get'
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js
new file mode 100644
index 0000000..862fc09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingRuKuOrderManage.js
@@ -0,0 +1,175 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderPage (parameter) {
+ return axios({
+ url: '/FoamingRuKuOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍏ュ簱鍗曟嵁璇︽儏
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderDetailPage (parameter) {
+ return axios({
+ url: '/FoamingRuKuOrder/detailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderAdd (parameter) {
+ return axios({
+ url: '/FoamingRuKuOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderEdit (parameter) {
+ return axios({
+ url: '/FoamingRuKuOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍙戞场杞﹂棿鍏ュ簱鍗曟嵁锛堢啛鍖栧簱锛�
+ *
+ * @author yrj
+ */
+export function FoamingRuKuOrderDelete (parameter) {
+ return axios({
+ url: '/FoamingRuKuOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎵归噺涓嬪彂
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderMulDistribute (params) {
+ return axios({
+ url: '/FoamingRuKuOrder/batchDistribute',
+ method: 'post',
+ data: params
+ })
+}
+
+/**
+ * 鎵归噺鎾ゅ洖
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderMulWithdraw (ids) {
+ return axios({
+ url: '/FoamingRuKuOrder/batchWithdraw',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderForceComplete (id) {
+ return axios({
+ url: '/FoamingRuKuOrder/ForceComplete',
+ method: 'post',
+ data: {id}
+ })
+}
+
+
+/**
+ * 澧炶ˉ鏁伴噺
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderAddOrderDetails (params) {
+ return axios({
+ url: '/FoamingRuKuOrder/AddOrderDetails',
+ method: 'post',
+ data: params
+ })
+}
+
+/**
+ * 璇︽儏鍏ュ簱
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderExecuteTask (params) {
+ return axios({
+ url: '/FoamingRuKuOrder/ExecuteTask',
+ method: 'post',
+ data: params
+ })
+}
+
+
+/**
+ * 鑾峰彇鍗曟嵁鍙�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderGetNo () {
+ return axios({
+ url: '/FoamingRuKuOrder/GetRuKuOrderNo',
+ method: 'post'
+ })
+}
+
+
+/**
+ * 鑾峰彇瀹藉害涓嬫媺鍒楄〃鏁版嵁
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuOrderGetMaterialWide () {
+ return axios({
+ url: '/FoamingRuKuOrder/GetMaterialWide',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 璇︽儏鍙栨秷
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingRuKuDetailCancel(id) {
+ return axios({
+ url: '/FoamingRuKuOrder/RuKuCancelTask',
+ method: 'post',
+ data:{id}
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js
new file mode 100644
index 0000000..1791da7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/FoamingTaskManage.js
@@ -0,0 +1,108 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙戞场杞﹂棿浠诲姟绠$悊琛紙鐔熷寲搴擄級
+ *
+ * @author yrj
+ */
+export function FoamingTaskPage (parameter) {
+ return axios({
+ url: '/FoamingTask/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskForceComplete (id) {
+ return axios({
+ url: '/FoamingTask/finish',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 浠诲姟鍙栨秷
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskCancel (ids) {
+ return axios({
+ url: '/FoamingTask/batchCancel',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+/**
+ * 浠诲姟鏆傚仠
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskPause (ids) {
+ return axios({
+ url: '/FoamingTask/batchBreak',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+/**
+ * 浠诲姟缁х画
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskContinue (ids) {
+ return axios({
+ url: '/FoamingTask/batchContinue',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskLevelUpdate (parameter) {
+ return axios({
+ url: '/FoamingTask/updateTaskLevel',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskUpLevel (id) {
+ return axios({
+ url: '/FoamingTask/upwardTaskLevel',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 鏇存柊浼樺厛绾�
+ *
+ * @author yuhuanhuan
+ */
+export function FoamingTaskDownLevel (id) {
+ return axios({
+ url: '/FoamingTask/downTaskLevel',
+ method: 'post',
+ data: {id}
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js
new file mode 100644
index 0000000..1ad4936
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryPlanManage.js
@@ -0,0 +1,225 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐩樼偣璁″垝
+ *
+ * @author li
+ */
+export function InventoryPlanPage (parameter) {
+ return axios({
+ url: '/InventoryPlan/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎶ュ憡椤甸潰鏌ヨ鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanRecordPage (parameter) {
+ return axios({
+ url: '/InventoryPlan/InventoryComplete',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鐩樼偣璁″垝鍒楄〃
+ *
+ * @author li
+ */
+export function InventoryPlanList (parameter) {
+ return axios({
+ url: '/InventoryPlan/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanAdd (parameter) {
+ return axios({
+ url: '/InventoryPlan/AddInventoryPlan',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鐩樼偣璁″垝
+ *
+ * @author yhh
+ */
+export function InventoryPlanEdit (parameter) {
+ return axios({
+ url: '/InventoryPlan/UpdateInventoryPlan',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鐩樼偣璁″垝
+ *
+ * @author li
+ */
+export function InventoryPlanDelete (parameter) {
+ return axios({
+ url: '/InventoryPlan/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鐩樼偣璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryPlanToExcel (parameter) {
+ return axios({
+ url: '/InventoryPlan/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鐩樼偣璁″垝鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryPlanFromExcel (data, parameter) {
+ return axios({
+ url: '/InventoryPlan/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鐩樼偣璁″垝鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function InventoryPlanDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/InventoryPlan/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+
+/**
+* 鑾峰彇InventoryRule鍒楄〃
+* @author li
+*/
+export function InventoryPlanFkInventoryRuleList() {
+ return axios({
+ url: '/InventoryPlan/fkInventoryRule',
+ method: 'get'
+ })
+}
+
+/**
+* 鑾峰彇浠撳簱涓嬫媺鍒楄〃
+* @author yhh
+*/
+export function InventoryPlanGetAreas() {
+ return axios({
+ url: '/InventoryPlan/InventoryArea',
+ method: 'get'
+ })
+}
+
+/**
+* 鑾峰彇鐩樼偣瑙勫垯涓嬫媺鍒楄〃
+* @author yhh
+*/
+export function InventoryPlanGetCheckRules() {
+ return axios({
+ url: '/InventoryPlan/InventoryRule',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇璁″垝鍙�
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/InventoryPlan/CreatePlanNo',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鍙姞鍏ヨ鍒掔殑鏄庣粏鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldOuts(params) {
+ return axios({
+ url: '/InventoryPlan/SelectStock',
+ method: 'get',
+ params: params
+ })
+}
+
+/**
+ * 鐩樼偣璁″垝璇︽儏
+ *
+ * @author yhh
+ */
+export function InventoryPlanDetailPage (parameter) {
+ return axios({
+ url: '/InventoryPlan/DetailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鐩樼偣瀹℃牳
+ *
+ * @author yhh
+ */
+export function InventoryReview (parameter) {
+ return axios({
+ url: '/InventoryPlan/UpdateExamine',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏀瑰彉搴撳瓨鏁�
+ *
+ * @author yhh
+ */
+export function InventoryChangeStockNumber (parameter) {
+ return axios({
+ url: '/InventoryPlan/UpdateInventoryStock',
+ method: 'post',
+ data: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js
new file mode 100644
index 0000000..6c2ad26
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InventoryRuleManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRulePage (parameter) {
+ return axios({
+ url: '/InventoryRule/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鐩樼偣瑙勫垯鍒楄〃
+ *
+ * @author li
+ */
+export function InventoryRuleList (parameter) {
+ return axios({
+ url: '/InventoryRule/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleAdd (parameter) {
+ return axios({
+ url: '/InventoryRule/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleEdit (parameter) {
+ return axios({
+ url: '/InventoryRule/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鐩樼偣瑙勫垯
+ *
+ * @author li
+ */
+export function InventoryRuleDelete (parameter) {
+ return axios({
+ url: '/InventoryRule/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鐩樼偣瑙勫垯鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryRuleToExcel (parameter) {
+ return axios({
+ url: '/InventoryRule/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鐩樼偣瑙勫垯鐨凟xcel鏂囦欢
+ *
+ * @author li
+ */
+export function InventoryRuleFromExcel (data, parameter) {
+ return axios({
+ url: '/InventoryRule/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鐩樼偣瑙勫垯鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function InventoryRuleDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/InventoryRule/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js
new file mode 100644
index 0000000..660e504
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/InvertingStorageManage.js
@@ -0,0 +1,66 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛樿揣搴撲綅
+ *
+ * @author yhh
+ */
+export function GetCunHouPlace (parameter) {
+ return axios({
+ url: '/Relocation/GetCunHouPlace',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏌ヨ绌洪棽搴撲綅
+ *
+ * @author yhh
+ */
+export function GetKongXianPlace (parameter) {
+ return axios({
+ url: '/Relocation/GetKongXianPlace',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑷姩鍊掑簱
+ *
+ * @author yhh
+ */
+export function AutoSubmit (data) {
+ return axios({
+ url: '/Relocation/ZdSubmitPlace',
+ method: 'post',
+ data: data
+ })
+}
+
+/**
+ * 鎵嬪姩鍊掑簱
+ *
+ * @author yhh
+ */
+export function ManualSubmit (data) {
+ return axios({
+ url: '/Relocation/SdSubmitPlace',
+ method: 'post',
+ data: data
+ })
+}
+
+/**
+ * 鏌ヨ搴撲綅璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+ return axios({
+ url: '/Relocation/GetPlaceDetail',
+ method: 'get',
+ params: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js
new file mode 100644
index 0000000..5d70484
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesDeviceWaringManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringPage (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 璁惧鎶ヨ鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringList (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringAdd (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringEdit (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎璁惧鎶ヨ
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringDelete (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭璁惧鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringToExcel (parameter) {
+ return axios({
+ url: '/LesDeviceWaring/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆璁惧鎶ヨ鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringFromExcel (data, parameter) {
+ return axios({
+ url: '/LesDeviceWaring/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function LesDeviceWaringDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/LesDeviceWaring/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js
new file mode 100644
index 0000000..3431311
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesFoamingPackWarehouseManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehousePage (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎵撳寘淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseList (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseAdd (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseEdit (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鎵撳寘淇℃伅
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseDelete (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鎵撳寘淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseToExcel (parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鎵撳寘淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseFromExcel (data, parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鎵撳寘淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function LesFoamingPackWarehouseDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/LesFoamingPackWarehouse/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js
new file mode 100644
index 0000000..01db0bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesProductionlineManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlinePage (parameter) {
+ return axios({
+ url: '/LesProductionline/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 浜х嚎淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function LesProductionlineList (parameter) {
+ return axios({
+ url: '/LesProductionline/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineAdd (parameter) {
+ return axios({
+ url: '/LesProductionline/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineEdit (parameter) {
+ return axios({
+ url: '/LesProductionline/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎浜х嚎淇℃伅
+ *
+ * @author XJF
+ */
+export function LesProductionlineDelete (parameter) {
+ return axios({
+ url: '/LesProductionline/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js
new file mode 100644
index 0000000..2d7bbd8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesStationManage.js
@@ -0,0 +1,161 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationPage (parameter) {
+ return axios({
+ url: '/LesStation/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 宸ヤ綅琛ㄥ垪琛�
+ *
+ * @author li
+ */
+export function LesStationList (parameter) {
+ return axios({
+ url: '/LesStation/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationAdd (parameter) {
+ return axios({
+ url: '/LesStation/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationEdit (parameter) {
+ return axios({
+ url: '/LesStation/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎宸ヤ綅琛�
+ *
+ * @author li
+ */
+export function LesStationDelete (parameter) {
+ return axios({
+ url: '/LesStation/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭宸ヤ綅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author li
+ */
+export function LesStationToExcel (parameter) {
+ return axios({
+ url: '/LesStation/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆宸ヤ綅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author li
+ */
+export function LesStationFromExcel (data, parameter) {
+ return axios({
+ url: '/LesStation/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇宸ヤ綅琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author li
+ */
+export function LesStationDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/LesStation/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+
+/**
+* 鑾峰彇LesProductionline鍒楄〃
+* @author li
+*/
+export function LesStationFkLesProductionlineList() {
+ return axios({
+ url: '/LesStation/fkLesProductionline',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 鑾峰彇浜х嚎鏁版嵁
+ *
+ * @author yhh
+ */
+export function GetLines () {
+ return axios({
+ url: '/LesStation/GetProductionlineList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鏍规嵁浜х嚎锛岃幏鍙栧伐浣嶆暟鎹�
+ *
+ * @author yhh
+ */
+export function GetStations (id) {
+ return axios({
+ url: '/LesStation/GetStationList',
+ method: 'get',
+ params:{id}
+ })
+}
+
+/**
+ * 鑾峰彇浜х嚎淇℃伅
+ */
+export function getProLineList() {
+ return axios({
+ url: '/lesstation/fkLesProductionline',
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js
new file mode 100644
index 0000000..d1f922b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LesTakematerialsManage.js
@@ -0,0 +1,194 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsPage (parameter) {
+ return axios({
+ url: '/LesTakematerials/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsAdd (data) {
+ return axios({
+ url: '/lesTakematerials/AddTakematerial',
+ method: 'post',
+ data: data
+ })
+}
+
+/**
+ * 鍒犻櫎鍙枡
+ *
+ * @author XJF
+ */
+export function LesTakematerialsDelete (ids) {
+ return axios({
+ url: '/LesTakematerials/delete',
+ method: 'post',
+ data:{id:ids}
+ })
+}
+
+/**
+ * 鑾峰彇鍙枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/lesTakematerials/GetTakeMaterialsNo',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+ return axios({
+ url: '/lesTakematerials/MaterialSourcepage',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 棰嗘枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+ return axios({
+ url: '/lesTakematerials/BatchTakeMaterials',
+ method: 'post',
+ data:{id:ids}
+ })
+}
+
+/**
+ * 棰嗘枡鍗曞畬鎴�
+ *
+ * @author yhh
+ */
+export function ForceComplete (id) {
+ return axios({
+ url: '/lesTakematerials/CompleteOrder',
+ method: 'post',
+ data:{id:id}
+ })
+}
+
+
+/**
+ * 棰嗘枡鍗曡鎯呬笅鍙�
+ *
+ * @author yhh
+ */
+export function DetailDistribute (params) {
+ return axios({
+ url: '/lesTakematerials/BatchTakeMaterialsDetial',
+ method: 'post',
+ data:params
+ })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function LesTakeMaterialsDetailPage (params) {
+ return axios({
+ url: '/lesTakematerials/detailPage',
+ method: 'get',
+ params:params
+ })
+}
+
+
+/**
+ * 鑾峰彇浜х嚎
+ *
+ * @author yhh
+ */
+export function GetLines() {
+ return axios({
+ url: '/lesTakematerials/GetProductionlineList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStations(id) {
+ return axios({
+ url: '/lesTakematerials/GetStationList',
+ method: 'get',
+ params:{id}
+ })
+}
+
+/**
+ * 鑾峰彇搴撳尯涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetAreas() {
+ return axios({
+ url: '/lesTakematerials/GetAreaList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鍥惧彿涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetDrawinNos() {
+ return axios({
+ url: '/lesTakematerials/GetDrawingNoList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鑸瑰彿涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetSipNos() {
+ return axios({
+ url: '/lesTakematerials/GetShipNoList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鎸夌墿鏂欐彁浜�
+ *
+ * @author yhh
+ */
+export function LesTakematerialsAutoAdd (data) {
+ return axios({
+ url: '/lesTakematerials/AutoAddTakematerial',
+ method: 'post',
+ data: data
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js
new file mode 100644
index 0000000..d8bfa09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/LocationViewManage.js
@@ -0,0 +1,90 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撳尯鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetArea () {
+ return axios({
+ url: '/LocationView/GetArea',
+ method: 'get'
+ })
+}
+/**
+ * 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ *
+ * @author yhh
+ */
+export function GetAisle (parameter) {
+ return axios({
+ url: '/LocationView/GetAisle',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏍规嵁搴撳尯鑾峰彇鎺掑垪琛�
+ *
+ * @author yhh
+ */
+export function GetPalceRowno (parameter) {
+ return axios({
+ url: '/LocationView/GetPalceRowno',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇涓�涓帓涓殑搴撲綅鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPalceList (parameter) {
+ return axios({
+ url: '/LocationView/GetPalceList',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇搴撳尯璇︽儏
+ *
+ * @author yhh
+ */
+export function GetLocationDetail (parameter) {
+ return axios({
+ url: '/LocationView/GetMaterialDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊搴撲綅閿佸畾鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+ return axios({
+ url: '/LocationView/UpdatePalceIslock',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊搴撲綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+ return axios({
+ url: '/LocationView/UpdatePalceKongXian',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js
new file mode 100644
index 0000000..72d7ad0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PMFinishedOrderManage.js
@@ -0,0 +1,154 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderPage (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderList (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderAdd (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderEdit (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�
+ *
+ * @author yc
+ */
+export function PMFinishedOrderDelete (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function PMFinishedOrderToExcel (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function PMFinishedOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/PMFinishedOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function PMFinishedOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/PMFinishedOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderLargeCategories() {
+ return axios({
+ url: '/PMFinishedOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderSubclass(id) {
+ return axios({
+ url: '/PMFinishedOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 瀹屽伐鍏ュ簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function PMFinishedOrderDetailPage (parameter) {
+ return axios({
+ url: '/PMFinishedOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js
new file mode 100644
index 0000000..49e9a5d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlyPrepareRecord.js
@@ -0,0 +1,41 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鏌ヨ
+ *
+ * @author yhh
+ */
+export function PlywoodPreparationPage (parameter) {
+ return axios({
+ url: '/plywoodpreparation/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鎹鎯�
+ *
+ * @author yhh
+ */
+export function PlywoodPreparationDetailPage (params) {
+ return axios({
+ url: '/plywoodpreparation/detailPage',
+ method: 'get',
+ params:params
+ })
+}
+
+
+/**
+ * 鑳跺悎鏉垮鏂欒鍒掍笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+ return axios({
+ url: '/plywoodpreparation/BatchPreparationMaterials',
+ method: 'post',
+ data:{id:ids}
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js
new file mode 100644
index 0000000..6d2f40e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PlywoodStockManage.js
@@ -0,0 +1,15 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author yhh
+ */
+export function PlywoodStockPage (parameter) {
+ return axios({
+ url: '/plywoodmaterialstock/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js
new file mode 100644
index 0000000..6f7ef42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ProductionReturnedOrderManage.js
@@ -0,0 +1,153 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderPage (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 浜х嚎閫�搴撶鐞嗗垪琛�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderList (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderAdd (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderEdit (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎浜х嚎閫�搴撶鐞�
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderDelete (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭浜х嚎閫�搴撶鐞嗙殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderToExcel (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆浜х嚎閫�搴撶鐞嗙殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇浜х嚎閫�搴撶鐞嗙殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ProductionReturnedOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderLargeCategories() {
+ return axios({
+ url: '/ProductionReturnedOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderSubclass(id) {
+ return axios({
+ url: '/ProductionReturnedOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 浜х嚎閫�搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function ProductionReturnedOrderDetailPage (parameter) {
+ return axios({
+ url: '/ProductionReturnedOrder/DetailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js
new file mode 100644
index 0000000..b42f30a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderPage (parameter) {
+ return axios({
+ url: '/PurchaseOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閲囪喘鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderList (parameter) {
+ return axios({
+ url: '/PurchaseOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderAdd (parameter) {
+ return axios({
+ url: '/PurchaseOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderEdit (parameter) {
+ return axios({
+ url: '/PurchaseOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閲囪喘鍗�
+ *
+ * @author XJF
+ */
+export function PurchaseOrderDelete (parameter) {
+ return axios({
+ url: '/PurchaseOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閲囪喘鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function PurchaseOrderToExcel (parameter) {
+ return axios({
+ url: '/PurchaseOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閲囪喘鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function PurchaseOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/PurchaseOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閲囪喘鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function PurchaseOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/PurchaseOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseOrderLargeCategories() {
+ return axios({
+ url: '/PurchaseOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseOrderSubclass(id) {
+ return axios({
+ url: '/PurchaseOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 鏌ヨ閲囪喘鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function PurchaseOrderDetailPage (parameter) {
+ return axios({
+ url: '/PurchaseOrder/detailPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js
new file mode 100644
index 0000000..ceec83f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/PurchaseReceiveOrderManage.js
@@ -0,0 +1,205 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderPage (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閲囪喘鏀惰揣鍒楄〃
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderList (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderAdd (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderEdit (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閲囪喘鏀惰揣
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderDelete (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閲囪喘鏀惰揣鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderToExcel (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閲囪喘鏀惰揣鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閲囪喘鏀惰揣鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function PurchaseReceiveOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderLargeCategories() {
+ return axios({
+ url: '/PurchaseReceiveOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderSubclass(id) {
+ return axios({
+ url: '/PurchaseReceiveOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 閿�鍞��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderDetailPage (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇閲囪喘鏀惰喘鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/PurchaseReceiveOrder/GetPurchaseReceiveOrderNo',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鏈粦瀹氭敹璐у崟鐨勯噰璐崟鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetPurchaseOrders() {
+ return axios({
+ url: '/PurchaseReceiveOrder/GetPurchaseOrderNo',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鍙敹鑾风殑鐗╂枡鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldReceiveMaterials(params) {
+ return axios({
+ url: '/PurchaseReceiveOrder/GetDetailByPurchaseOrderNo',
+ method: 'get',
+ params: params
+ })
+}
+
+/**
+ * 缂栬緫閲囪喘鏀惰揣璇︽儏鏀惰揣鏁�
+ *
+ * @author yhh
+ */
+export function PurchaseReceiveOrderEditDetailNumber (parameter) {
+ return axios({
+ url: '/PurchaseReceiveOrder/EditDetail',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md
new file mode 100644
index 0000000..fadf99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/README.md
@@ -0,0 +1 @@
+/** 鎮ㄧ殑涓氬姟鎺ュ彛鏂囦欢鍏ㄥ啓鍦ㄦ鏂囦欢澶逛笅闈紝鍗囩骇搴曞骇鐩存帴杩佺Щ浠g爜鍗冲彲 **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js
new file mode 100644
index 0000000..d51baf9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ReceiveMaterialOrderManage.js
@@ -0,0 +1,128 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderPage (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 棰嗘枡鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderList (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderAdd (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderEdit (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎棰嗘枡鍗�
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderDelete (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderToExcel (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ReceiveMaterialOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 棰嗘枡鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function ReceiveMaterialOrderDetailPage (parameter) {
+ return axios({
+ url: '/ReceiveMaterialOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js
new file mode 100644
index 0000000..1fff5ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbPrepareRecord.js
@@ -0,0 +1,41 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鏌ヨ
+ *
+ * @author yhh
+ */
+export function RsbPreparationPage (parameter) {
+ return axios({
+ url: '/rsbpreparation/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑳跺悎鏉垮鏂欏崟鎹鎯�
+ *
+ * @author yhh
+ */
+export function RsbPreparationDetailPage (params) {
+ return axios({
+ url: '/rsbpreparation/detailPage',
+ method: 'get',
+ params:params
+ })
+}
+
+
+/**
+ * 鑳跺悎鏉垮鏂欒鍒掍笅鍙�
+ *
+ * @author yhh
+ */
+export function Distribute (ids) {
+ return axios({
+ url: '/rsbpreparation/BatchPreparationMaterials',
+ method: 'post',
+ data:{id:ids}
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js
new file mode 100644
index 0000000..7d56aa3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/RsbStockManage.js
@@ -0,0 +1,15 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author yhh
+ */
+export function RsbStockPage (parameter) {
+ return axios({
+ url: '/rsbmaterialstock/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js
new file mode 100644
index 0000000..6229b6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockOutboundOrderManage.js
@@ -0,0 +1,191 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderPage (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閿�鍞嚭搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderList (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderAdd (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderEdit (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閿�鍞嚭搴�
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderDelete (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閿�鍞嚭搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderToExcel (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閿�鍞嚭搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閿�鍞嚭搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SalesStockOutboundOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁鍙戣揣浠撳簱鍒楄〃
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderGetAreas() {
+ return axios({
+ url: '/SalesStockOutboundOrder/SalesStockOutboundOrderGetAreaList',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 閿�鍞嚭搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderDetailPage (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/SalesStockOutboundOrder/GetSalesStockOutboundOrderNoo',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鍙嚭搴撶殑鏄庣粏鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldOutMaterials(params) {
+ return axios({
+ url: '/SalesStockOutboundOrder/GetMaterialList',
+ method: 'get',
+ params: params
+ })
+}
+
+/**
+ * 缂栬緫鍗曟嵁璇︽儏鏁伴噺
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderEditDetailNumber (parameter) {
+ return axios({
+ url: '/SalesStockOutboundOrder/UpdateSalesStockOutboundDetail',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 涓嬪彂
+ *
+ * @author yhh
+ */
+export function SalesStockOutboundOrderMulDistribute (ids) {
+ return axios({
+ url: '/SalesStockOutboundOrder/BatchSalesStockOutboundOrder',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js
new file mode 100644
index 0000000..967fa96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SalesStockReturnOrderManage.js
@@ -0,0 +1,190 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderPage (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閿�鍞��搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderList (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderAdd (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderEdit (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閿�鍞��搴�
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderDelete (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閿�鍞��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderToExcel (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閿�鍞��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閿�鍞��搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SalesStockReturnOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 閿�鍞��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderDetailPage (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇閿�鍞��搴撳崟鍙�
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/SalesStockReturnOrder/GetSalesStockReturnOrderNo',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 鑾峰彇鏈粦瀹氶攢鍞��搴撳崟鐨勫嚭搴撳崟(璁″垝)鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetStockOuts() {
+ return axios({
+ url: '/SalesStockReturnOrder/GetSalesStockOutboundOrderNo',
+ method: 'get'
+ })
+}
+
+/**
+ * 缂栬緫鍞��搴撳崟璇︽儏閫�搴撴暟
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderEditDetailNumber (parameter) {
+ return axios({
+ url: '/SalesStockReturnOrder/UpdateSalesStockReturnOrderDetail',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍙��搴撶殑鐗╂枡鍒楄〃
+ *
+ * @author yhh
+ */
+export function GetCouldReturnMaterials(params) {
+ return axios({
+ url: '/SalesStockReturnOrder/GetDetailBySalesStockOutboundOrderNo',
+ method: 'get',
+ params: params
+ })
+}
+
+/**
+ * 涓嬪彂
+ *
+ * @author yhh
+ */
+export function SalesStockReturnOrderMulDistribute (ids) {
+ return axios({
+ url: '/SalesStockReturnOrder/BatchSalesStockReturnOrder',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js
new file mode 100644
index 0000000..64f674a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/StationViewManage.js
@@ -0,0 +1,65 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 浜х嚎涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetProductionLines () {
+ return axios({
+ url: '/stationview/SelectProductionLine',
+ method: 'get'
+ })
+}
+
+/**
+ * 鏍规嵁浜х嚎鑾峰彇宸ヤ綅
+ *
+ * @author yhh
+ */
+export function GetStationList (id) {
+ return axios({
+ url: '/stationview/GetStationList',
+ method: 'get',
+ params:{id}
+ })
+}
+
+/**
+ * 鑾峰彇宸ヤ綅璇︽儏
+ *
+ * @author yhh
+ */
+export function GetStationDetail (params) {
+ return axios({
+ url: '/stationview/GetMaterialDetail',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 鏇存柊宸ヤ綅浣跨敤鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateLock (parameter) {
+ return axios({
+ url: '/stationview/UpdateStationIslock',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊宸ヤ綅绌洪棽鐘舵��
+ *
+ * @author yhh
+ */
+export function UpdateEmpty (parameter) {
+ return axios({
+ url: '/stationview/UpdateStationKongXian',
+ method: 'get',
+ params: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js
new file mode 100644
index 0000000..e5380b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SupplierStockReturnOrderManage.js
@@ -0,0 +1,152 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderPage (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 渚涘簲鍟嗛��搴撳垪琛�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderList (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderAdd (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderEdit (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎渚涘簲鍟嗛��搴�
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderDelete (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭渚涘簲鍟嗛��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderToExcel (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆渚涘簲鍟嗛��搴撶殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇渚涘簲鍟嗛��搴撶殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function SupplierStockReturnOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderLargeCategories() {
+ return axios({
+ url: '/SupplierStockReturnOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderSubclass(id) {
+ return axios({
+ url: '/SupplierStockReturnOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 渚涘簲鍟嗛��搴撳崟璇︽儏
+ *
+ * @author yhh
+ */
+export function SupplierStockReturnOrderDetailPage (parameter) {
+ return axios({
+ url: '/SupplierStockReturnOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js
new file mode 100644
index 0000000..bcf66e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/SysTenantManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantPage (parameter) {
+ return axios({
+ url: '/SysTenant/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 绉熸埛琛ㄥ垪琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantList (parameter) {
+ return axios({
+ url: '/SysTenant/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantAdd (parameter) {
+ return axios({
+ url: '/SysTenant/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantEdit (parameter) {
+ return axios({
+ url: '/SysTenant/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绉熸埛琛�
+ *
+ * @author 钃濈嫄鏄�
+ */
+export function SysTenantDelete (parameter) {
+ return axios({
+ url: '/SysTenant/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js
new file mode 100644
index 0000000..13a1d0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent2Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Page (parameter) {
+ return axios({
+ url: '/TestStudent2/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓淇℃伅鍒楄〃
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2List (parameter) {
+ return axios({
+ url: '/TestStudent2/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Add (parameter) {
+ return axios({
+ url: '/TestStudent2/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Edit (parameter) {
+ return axios({
+ url: '/TestStudent2/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2Delete (parameter) {
+ return axios({
+ url: '/TestStudent2/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2ToExcel (parameter) {
+ return axios({
+ url: '/TestStudent2/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2FromExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent2/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudent2DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent2/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js
new file mode 100644
index 0000000..80e8d39
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent3Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Page (parameter) {
+ return axios({
+ url: '/TestStudent3/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ *
+ * @author liuwq
+ */
+export function TestStudent3List (parameter) {
+ return axios({
+ url: '/TestStudent3/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Add (parameter) {
+ return axios({
+ url: '/TestStudent3/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Edit (parameter) {
+ return axios({
+ url: '/TestStudent3/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Delete (parameter) {
+ return axios({
+ url: '/TestStudent3/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ToExcel (parameter) {
+ return axios({
+ url: '/TestStudent3/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ImportExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent3/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function TestStudent3DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent3/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js
new file mode 100644
index 0000000..a7f1b0a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudent5Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Page (parameter) {
+ return axios({
+ url: '/TestStudent5/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娴嬭瘯瀛︾敓琛ㄥ垪琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5List (parameter) {
+ return axios({
+ url: '/TestStudent5/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Add (parameter) {
+ return axios({
+ url: '/TestStudent5/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Edit (parameter) {
+ return axios({
+ url: '/TestStudent5/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎娴嬭瘯瀛︾敓琛�
+ *
+ * @author shaocx
+ */
+export function TestStudent5Delete (parameter) {
+ return axios({
+ url: '/TestStudent5/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭娴嬭瘯瀛︾敓琛ㄧ殑Excel鏂囦欢
+ *
+ * @author shaocx
+ */
+export function TestStudent5ToExcel (parameter) {
+ return axios({
+ url: '/TestStudent5/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆娴嬭瘯瀛︾敓琛ㄧ殑Excel鏂囦欢
+ *
+ * @author shaocx
+ */
+export function TestStudent5FromExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent5/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author shaocx
+ */
+export function TestStudent5DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent5/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js
new file mode 100644
index 0000000..94a99b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestStudentManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentPage (parameter) {
+ return axios({
+ url: '/TestStudent/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentList (parameter) {
+ return axios({
+ url: '/TestStudent/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentAdd (parameter) {
+ return axios({
+ url: '/TestStudent/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentEdit (parameter) {
+ return axios({
+ url: '/TestStudent/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentDelete (parameter) {
+ return axios({
+ url: '/TestStudent/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentToExcel (parameter) {
+ return axios({
+ url: '/TestStudent/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentImportExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestStudentDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js
new file mode 100644
index 0000000..a42c0fa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/TestTeacherManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherPage (parameter) {
+ return axios({
+ url: '/TestTeacher/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娴嬭瘯鑰佸笀琛ㄥ垪琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherList (parameter) {
+ return axios({
+ url: '/TestTeacher/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherAdd (parameter) {
+ return axios({
+ url: '/TestTeacher/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherEdit (parameter) {
+ return axios({
+ url: '/TestTeacher/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎娴嬭瘯鑰佸笀琛�
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherDelete (parameter) {
+ return axios({
+ url: '/TestTeacher/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭娴嬭瘯鑰佸笀琛ㄧ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherToExcel (parameter) {
+ return axios({
+ url: '/TestTeacher/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆娴嬭瘯鑰佸笀琛ㄧ殑Excel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherFromExcel (data, parameter) {
+ return axios({
+ url: '/TestTeacher/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function TestTeacherDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestTeacher/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js
new file mode 100644
index 0000000..e764428
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TestDemo/VStudentManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentPage (parameter) {
+ return axios({
+ url: '/VStudent/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓瑙嗗浘鍒楄〃
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentList (parameter) {
+ return axios({
+ url: '/VStudent/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentAdd (parameter) {
+ return axios({
+ url: '/VStudent/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentEdit (parameter) {
+ return axios({
+ url: '/VStudent/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓瑙嗗浘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentDelete (parameter) {
+ return axios({
+ url: '/VStudent/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentToExcel (parameter) {
+ return axios({
+ url: '/VStudent/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentFromExcel (data, parameter) {
+ return axios({
+ url: '/VStudent/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author 閭甸暱绁�
+ */
+export function VStudentDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/VStudent/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js
new file mode 100644
index 0000000..60cedbf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/TransferOrderManage.js
@@ -0,0 +1,154 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderPage (parameter) {
+ return axios({
+ url: '/TransferOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 璋冩嫧鍗曞垪琛�
+ *
+ * @author yc
+ */
+export function TransferOrderList (parameter) {
+ return axios({
+ url: '/TransferOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderAdd (parameter) {
+ return axios({
+ url: '/TransferOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderEdit (parameter) {
+ return axios({
+ url: '/TransferOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎璋冩嫧鍗�
+ *
+ * @author yc
+ */
+export function TransferOrderDelete (parameter) {
+ return axios({
+ url: '/TransferOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭璋冩嫧鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function TransferOrderToExcel (parameter) {
+ return axios({
+ url: '/TransferOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆璋冩嫧鍗曠殑Excel鏂囦欢
+ *
+ * @author yc
+ */
+export function TransferOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/TransferOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇璋冩嫧鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function TransferOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TransferOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function TransferOrderLargeCategories() {
+ return axios({
+ url: '/TransferOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function TransferOrderSubclass(id) {
+ return axios({
+ url: '/TransferOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 璋冩嫧鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function TransferOrderDetailPage (parameter) {
+ return axios({
+ url: '/TransferOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js
new file mode 100644
index 0000000..cb24693
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_AccessDetailsManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsPage (parameter) {
+ return axios({
+ url: '/View_AccessDetails/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍑哄叆搴撹褰曞垪琛�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsList (parameter) {
+ return axios({
+ url: '/View_AccessDetails/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsAdd (parameter) {
+ return axios({
+ url: '/View_AccessDetails/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsEdit (parameter) {
+ return axios({
+ url: '/View_AccessDetails/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍑哄叆搴撹褰�
+ *
+ * @author lidunanping
+ */
+export function View_AccessDetailsDelete (parameter) {
+ return axios({
+ url: '/View_AccessDetails/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js
new file mode 100644
index 0000000..6cefad6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/View_Materialstock_MaterialManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialPage (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 搴撳瓨鐗╂枡瑙嗗浘鍒楄〃
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialList (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialAdd (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialEdit (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎搴撳瓨鐗╂枡瑙嗗浘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialDelete (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialToExcel (parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialFromExcel (data, parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇搴撳瓨鐗╂枡瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function View_Materialstock_MaterialDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/View_Materialstock_Material/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js
new file mode 100644
index 0000000..da3b082
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAreaManage.js
@@ -0,0 +1,123 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaPage (parameter) {
+ return axios({
+ url: '/WmsArea/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 搴撳尯淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsAreaList (parameter) {
+ return axios({
+ url: '/WmsArea/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaAdd (parameter) {
+ return axios({
+ url: '/WmsArea/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaEdit (parameter) {
+ return axios({
+ url: '/WmsArea/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎搴撳尯淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAreaDelete (parameter) {
+ return axios({
+ url: '/WmsArea/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭搴撳尯淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAreaToExcel (parameter) {
+ return axios({
+ url: '/WmsArea/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆搴撳尯淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAreaFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsArea/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+/**
+ * 涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsAreaDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsArea/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鑾峰彇缁勮杞﹂棿搴撳尯
+ *
+ * @author yhh
+ */
+export function GetZuzhuangAreas () {
+ return axios({
+ url: '/WmsArea/TaskWmsArea',
+ method: 'get'
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js
new file mode 100644
index 0000000..0e38ce1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsAssembleMaterialAttributManage.js
@@ -0,0 +1,125 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributPage (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缁勮杞﹂棿鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributList (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributAdd (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributEdit (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎缁勮杞﹂棿鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributDelete (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributToExcel (parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇缁勮杞﹂棿鐗╂枡淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsAssembleMaterialAttributDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+
+/**
+* 鑾峰彇WmsAssembleMaterial鍒楄〃
+* @author XJF
+*/
+export function WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+ return axios({
+ url: '/WmsAssembleMaterialAttribut/fkWmsAssembleMaterial',
+ method: 'get'
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js
new file mode 100644
index 0000000..470c4b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsContainerManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerPage (parameter) {
+ return axios({
+ url: '/WmsContainer/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎵樼洏淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsContainerList (parameter) {
+ return axios({
+ url: '/WmsContainer/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerAdd (parameter) {
+ return axios({
+ url: '/WmsContainer/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerEdit (parameter) {
+ return axios({
+ url: '/WmsContainer/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鎵樼洏淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsContainerDelete (parameter) {
+ return axios({
+ url: '/WmsContainer/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鎵樼洏淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsContainerToExcel (parameter) {
+ return axios({
+ url: '/WmsContainer/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鎵樼洏淇℃伅鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsContainerFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsContainer/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsContainerDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsContainer/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js
new file mode 100644
index 0000000..1ee1090
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsDumpOrderManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderPage (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 杞偍鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderList (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderAdd (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderEdit (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎杞偍鍗�
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderDelete (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭杞偍鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsDumpOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆杞偍鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsDumpOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsDumpOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsDumpOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js
new file mode 100644
index 0000000..690f882
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsGoodsReturnOrderManage.js
@@ -0,0 +1,123 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderPage (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閫�璐у崟鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderList (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderAdd (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderEdit (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閫�璐у崟
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderDelete (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閫�璐у崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閫�璐у崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsGoodsReturnOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+ return axios({
+ url: '/WmsGoodsReturnOrder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js
new file mode 100644
index 0000000..17dd604
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialManage.js
@@ -0,0 +1,102 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialPage (parameter) {
+ return axios({
+ url: '/WmsMaterial/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsMaterialList (parameter) {
+ return axios({
+ url: '/WmsMaterial/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialAdd (parameter) {
+ return axios({
+ url: '/WmsMaterial/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialEdit (parameter) {
+ return axios({
+ url: '/WmsMaterial/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鐗╂枡淇℃伅
+ *
+ * @author XJF
+ */
+export function WmsMaterialDelete (parameter) {
+ return axios({
+ url: '/WmsMaterial/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇搴撳尯涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetAreas (parameter) {
+ return axios({
+ url: '/WmsMaterial/GetAreaList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇宸ヤ綅涓嬫媺
+ *
+ * @author yhh
+ */
+export function GetStations (parameter) {
+ return axios({
+ url: '/WmsMaterial/GetStationList',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍚屾Desk鏁版嵁
+ *
+ * @author dln
+ */
+export function Getdeskdata () {
+ return axios({
+ url: '/deskdatasynchronous/GetMomMaterial',
+ method: 'post'
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js
new file mode 100644
index 0000000..b8f774b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMaterialStockManage.js
@@ -0,0 +1,26 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳瓨琛�
+ *
+ * @author XJF
+ */
+export function WmsMaterialStockPage (parameter) {
+ return axios({
+ url: '/WmsMaterialStock/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+/**
+* 鑾峰彇鎵�鍦ㄥ簱鍖哄垪琛�
+* @author XJF
+*/
+export function WmsMaterialStockFkWmsAreaList() {
+ return axios({
+ url: '/WmsMaterialStock/WmsArea',
+ method: 'get'
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js
new file mode 100644
index 0000000..c943ecd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsMerchantinfoManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoPage (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀹㈠晢淇℃伅琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoList (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoAdd (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoEdit (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀹㈠晢淇℃伅琛�
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoDelete (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀹㈠晢淇℃伅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoToExcel (parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀹㈠晢淇℃伅琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsMerchantinfoDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsMerchantinfo/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js
new file mode 100644
index 0000000..07d5c17
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderInspectionManage.js
@@ -0,0 +1,137 @@
+锘縤mport { axios } from '@/utils/request'
+// 鎶ユ鍗�
+/**
+ * 鏌ヨ鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderPage (parameter) {
+ return axios({
+ url: '/wmsinspectorder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍗曟嵁琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderList (parameter) {
+ return axios({
+ url: '/WmsOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderAdd (parameter) {
+ return axios({
+ url: '/WmsOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderEdit (parameter) {
+ return axios({
+ url: '/WmsOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderDelete (parameter) {
+ return axios({
+ url: '/WmsOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ *
+ */
+ export function WmsOrderRukuDetail(parameter) {
+ return axios({
+ url: '/wmsinspectorder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎶ユ
+ *
+ */
+ export function WmsOrderBaojian(parameter) {
+ return axios({
+ url: '/wmsinspectorder/InspectionDeclaration',
+ method: 'post',
+ data: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js
new file mode 100644
index 0000000..4f899fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderManage.js
@@ -0,0 +1,137 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderPage (parameter) {
+ return axios({
+ url: '/WmsOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍗曟嵁琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderList (parameter) {
+ return axios({
+ url: '/WmsOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderAdd (parameter) {
+ return axios({
+ url: '/WmsOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderEdit (parameter) {
+ return axios({
+ url: '/WmsOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍗曟嵁琛�
+ *
+ * @author XJF
+ */
+export function WmsOrderDelete (parameter) {
+ return axios({
+ url: '/WmsOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍗曟嵁琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ *
+ */
+ export function WmsOrderRukuDetail (parameter) {
+ return axios({
+ url: 'wmsorder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 涓嬪彂
+ *
+ */
+ export function dealDistribute(data) {
+ return axios({
+ url: '/wmsorder/DistributeInOrder',
+ method: 'post',
+ data: data
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js
new file mode 100644
index 0000000..2ca8d60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsOrderTypeManage.js
@@ -0,0 +1,53 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏍规嵁鐖秈d鏌ヨ鍗曟嵁绫诲瀷鍒楄〃
+ * @author yuhuanhuan
+ */
+export function WareOrderTypePage (pid) {
+ return axios({
+ url: '/WareOrderType/listNonPage',
+ method: 'get',
+ params: {Pid:pid}
+ })
+}
+
+
+/**
+ * 娣诲姞鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeAdd (parameter) {
+ return axios({
+ url: '/WareOrderType/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeEdit (parameter) {
+ return axios({
+ url: '/WareOrderType/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ *
+ * @author yrj
+ */
+export function WareOrderTypeDelete (parameter) {
+ return axios({
+ url: '/WareOrderType/delete',
+ method: 'post',
+ data: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js
new file mode 100644
index 0000000..b4711a5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPdaPowerManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨPDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerPage (parameter) {
+ return axios({
+ url: '/WmsPdaPower/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * PDA鑿滃崟鍒楄〃
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerList (parameter) {
+ return axios({
+ url: '/WmsPdaPower/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerAdd (parameter) {
+ return axios({
+ url: '/WmsPdaPower/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerEdit (parameter) {
+ return axios({
+ url: '/WmsPdaPower/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎PDA鑿滃崟
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerDelete (parameter) {
+ return axios({
+ url: '/WmsPdaPower/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭PDA鑿滃崟鐨凟xcel鏂囦欢
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerToExcel (parameter) {
+ return axios({
+ url: '/WmsPdaPower/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆PDA鑿滃崟鐨凟xcel鏂囦欢
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsPdaPower/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author ldp
+ */
+export function WmsPdaPowerDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsPdaPower/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js
new file mode 100644
index 0000000..848f501
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsPlaceManage.js
@@ -0,0 +1,117 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlacePage (parameter) {
+ return axios({
+ url: '/WmsPlace/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 搴撲綅淇℃伅鍒楄〃
+ *
+ * @author liduanping
+ */
+export function WmsPlaceList (parameter) {
+ return axios({
+ url: '/WmsPlace/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceAdd (parameter) {
+ return axios({
+ url: '/WmsPlace/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceEdit (parameter) {
+ return axios({
+ url: '/WmsPlace/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎搴撲綅淇℃伅
+ *
+ * @author liduanping
+ */
+export function WmsPlaceDelete (parameter) {
+ return axios({
+ url: '/WmsPlace/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+* 鑾峰彇WmsArea鍒楄〃
+* @author liduanping
+*/
+export function WmsPlaceFkWmsAreaList() {
+ return axios({
+ url: '/WmsPlace/fkWmsArea',
+ method: 'get'
+ })
+}
+
+/**
+ * 鎵归噺閿佸畾
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceLock (ids) {
+ return axios({
+ url: '/WmsPlace/MoreLock',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+/**
+ * 鎵归噺瑙i攣
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceUnlock (ids) {
+ return axios({
+ url: '/WmsPlace/MoreUnlock',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+
+/**
+ * 鏃犲弬鑾峰彇宸烽亾鍒楄〃
+ *
+ * @author yuhuanhuan
+ */
+export function WmsPlaceGetFAisles () {
+ return axios({
+ url: '/WmsPlace/GetFAisle',
+ method: 'get'
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js
new file mode 100644
index 0000000..2dd5d99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsReceiptOrderManage.js
@@ -0,0 +1,147 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderPage (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏀惰揣鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderList (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderAdd (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderEdit (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鏀惰揣鍗�
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderDelete (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鏀惰揣鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鏀惰揣鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsReceiptOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+ return axios({
+ url: '/WmsReceiptOrder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+// 纭鏀惰揣
+export function WmsReceiptOrderSh(parameter) {
+ return axios({
+ url: '/wmsreceiptorder/PcConfirmReceipt',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 鎶ユ
+ *
+ */
+ export function WmsOrderBaojian(parameter) {
+ return axios({
+ url: '/wmsinspectorder/InspectionDeclaration',
+ method: 'post',
+ data: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js
new file mode 100644
index 0000000..f084a31
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSortOrderManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderPage (parameter) {
+ return axios({
+ url: '/WmsSortOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍒嗘嫞鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderList (parameter) {
+ return axios({
+ url: '/WmsSortOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderAdd (parameter) {
+ return axios({
+ url: '/WmsSortOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderEdit (parameter) {
+ return axios({
+ url: '/WmsSortOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鍒嗘嫞鍗�
+ *
+ * @author XJF
+ */
+export function WmsSortOrderDelete (parameter) {
+ return axios({
+ url: '/WmsSortOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭鍒嗘嫞鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsSortOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsSortOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鍒嗘嫞鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsSortOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsSortOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsSortOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsSortOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js
new file mode 100644
index 0000000..2c67a4f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsStockReturnOrderManage.js
@@ -0,0 +1,124 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderPage (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 閫�搴撳崟鍒楄〃
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderList (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderAdd (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderEdit (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎閫�搴撳崟
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderDelete (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭閫�搴撳崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆閫�搴撳崟鐨凟xcel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsStockReturnOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderRDetail (parameter) {
+ return axios({
+ url: '/WmsStockReturnOrder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js
new file mode 100644
index 0000000..b49b812
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsSupplierManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierPage (parameter) {
+ return axios({
+ url: '/WmsSupplier/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 渚涘簲鍟嗗垪琛�
+ *
+ * @author li
+ */
+export function WmsSupplierList (parameter) {
+ return axios({
+ url: '/WmsSupplier/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierAdd (parameter) {
+ return axios({
+ url: '/WmsSupplier/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierEdit (parameter) {
+ return axios({
+ url: '/WmsSupplier/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎渚涘簲鍟�
+ *
+ * @author li
+ */
+export function WmsSupplierDelete (parameter) {
+ return axios({
+ url: '/WmsSupplier/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js
new file mode 100644
index 0000000..5a60a7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTakeMaterialOrderManage.js
@@ -0,0 +1,141 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderPage (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 棰嗘枡鍗曞垪琛�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderList (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderAdd (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderEdit (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎棰嗘枡鍗�
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderDelete (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderToExcel (parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆棰嗘枡鍗曠殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsTakeMaterialOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsTakeMaterialOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+
+
+
+
+/**
+ * 鐗╂枡璇︽儏
+ */
+ export function WmsOrderLldDetail (parameter) {
+ return axios({
+ url: '/wmstakematerialorder/PageDetail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 棰嗘枡鍗曚笅鍙�
+ *
+ * @author yhh
+ */
+ export function Distribute (ids) {
+ return axios({
+ url: '/wmstakematerialorder/DistributeOrder',
+ method: 'post',
+ data:{id:ids}
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js
new file mode 100644
index 0000000..0a337b3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsTaskManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ浠诲姟绠$悊
+ *
+ * @author liduanping
+ */
+export function WmsTaskPage (parameter) {
+ return axios({
+ url: '/WmsTask/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 浠诲姟鐗╂枡璇︽儏
+ *
+ * @author yhh
+ */
+export function WmsTaskDetail (parameter) {
+ return axios({
+ url: '/WmsTask/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎浠诲姟
+ *
+ * @author yhh
+ */
+export function WmsTaskCancel (id) {
+ return axios({
+ url: '/WmsTask/CancelTask',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 寮哄埗瀹屾垚
+ *
+ * @author yhh
+ */
+export function WmsTaskFinish (id) {
+ return axios({
+ url: '/WmsTask/finish',
+ method: 'post',
+ data: {id}
+ })
+}
+
+/**
+ * 鏇存敼浼樺厛绾�
+ *
+ * @author yhh
+ */
+export function WmsTaskUpdateLevel (parameter) {
+ return axios({
+ url: '/WmsTask/upwardTaskLevel',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js
new file mode 100644
index 0000000..e0dd0b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/WmsWarehouseEntranceManage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntrancePage (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 搴撳彛琛ㄥ垪琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceList (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceAdd (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceEdit (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎搴撳彛琛�
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceDelete (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭搴撳彛琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceToExcel (parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆搴撳彛琛ㄧ殑Excel鏂囦欢
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceFromExcel (data, parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+ *
+ * @author XJF
+ */
+export function WmsWarehouseEntranceDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/WmsWarehouseEntrance/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js
new file mode 100644
index 0000000..e04e489
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ZZProductFinishedOrderManage.js
@@ -0,0 +1,153 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderPage (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鍒楄〃
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderList (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderAdd (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderEdit (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderDelete (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderToExcel (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel鏂囦欢
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderFromExcel (data, parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author yc
+ */
+export function ZZProductFinishedOrderDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鍗曟嵁澶х被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderLargeCategories() {
+ return axios({
+ url: '/ZZProductFinishedOrder/OrderTypeLargeCategory',
+ method: 'get'
+ })
+}
+
+/**
+ * 鍗曟嵁灏忕被涓嬫媺
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderSubclass(id) {
+ return axios({
+ url: '/ZZProductFinishedOrder/OrderTypeSubclass',
+ method: 'get',
+ params:{id}
+ })
+}
+
+
+/**
+ * 瀹屽伐鍏ュ簱鍗曡鎯�
+ *
+ * @author yhh
+ */
+export function ZZProductFinishedOrderDetailPage (parameter) {
+ return axios({
+ url: '/ZZProductFinishedOrder/DetailsPage',
+ method: 'get',
+ params: parameter
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js
new file mode 100644
index 0000000..2d4db38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/ceManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function cePage (parameter) {
+ return axios({
+ url: '/ce/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鐗╂枡淇℃伅鍒楄〃
+ *
+ * @author liduanping
+ */
+export function ceList (parameter) {
+ return axios({
+ url: '/ce/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceAdd (parameter) {
+ return axios({
+ url: '/ce/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceEdit (parameter) {
+ return axios({
+ url: '/ce/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鐗╂枡淇℃伅
+ *
+ * @author liduanping
+ */
+export function ceDelete (parameter) {
+ return axios({
+ url: '/ce/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js
new file mode 100644
index 0000000..16eb5dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/cesManage.js
@@ -0,0 +1,66 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨces
+ *
+ * @author liduanping
+ */
+export function cesPage (parameter) {
+ return axios({
+ url: '/ces/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * ces鍒楄〃
+ *
+ * @author liduanping
+ */
+export function cesList (parameter) {
+ return axios({
+ url: '/ces/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞ces
+ *
+ * @author liduanping
+ */
+export function cesAdd (parameter) {
+ return axios({
+ url: '/ces/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫ces
+ *
+ * @author liduanping
+ */
+export function cesEdit (parameter) {
+ return axios({
+ url: '/ces/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎ces
+ *
+ * @author liduanping
+ */
+export function cesDelete (parameter) {
+ return axios({
+ url: '/ces/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js
new file mode 100644
index 0000000..8e98139
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/liuying/TestStudent2Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Page (parameter) {
+ return axios({
+ url: '/TestStudent2/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛↙iuying鍒楄〃
+ *
+ * @author liuying
+ */
+export function TestStudent2List (parameter) {
+ return axios({
+ url: '/TestStudent2/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Add (parameter) {
+ return axios({
+ url: '/TestStudent2/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Edit (parameter) {
+ return axios({
+ url: '/TestStudent2/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛↙iuying
+ *
+ * @author liuying
+ */
+export function TestStudent2Delete (parameter) {
+ return axios({
+ url: '/TestStudent2/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛↙iuying鐨凟xcel鏂囦欢
+ *
+ * @author liuying
+ */
+export function TestStudent2ToExcel (parameter) {
+ return axios({
+ url: '/TestStudent2/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛↙iuying鐨凟xcel鏂囦欢
+ *
+ * @author liuying
+ */
+export function TestStudent2FromExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent2/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛↙iuying鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author liuying
+ */
+export function TestStudent2DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent2/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js
new file mode 100644
index 0000000..146fadc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/prePareManage.js
@@ -0,0 +1,79 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManagePage (parameter) {
+ return axios({
+ url: '/lespreparation/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManageAdd (data) {
+ return axios({
+ url: '/lespreparation/AddPreparation',
+ method: 'post',
+ data: data
+ })
+}
+
+/**
+ * 鍒犻櫎澶囨枡鍗�
+ *
+ * @author yhh
+ */
+export function PrePareManageDelete (ids) {
+ return axios({
+ url: '/lespreparation/delete',
+ method: 'post',
+ data: {id:ids}
+ })
+}
+
+/**
+ * 鑾峰彇澶囨枡鍗曞彿
+ *
+ * @author yhh
+ */
+export function GetBillNumber () {
+ return axios({
+ url: '/lespreparation/GetTakeMaterialsNo',
+ method: 'get'
+ })
+}
+
+
+/**
+ * 澶囨枡鐗╂枡鏌ヨ
+ *
+ * @author yhh
+ */
+export function QueryMaterials (params) {
+ return axios({
+ url: '/lespreparation/MaterialSourcepage',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 鍗曟嵁璇︽儏
+ *
+ * @author yhh
+ */
+export function CncTakeMaterialsDetailPage (params) {
+ return axios({
+ url: '/lespreparation/detailPage',
+ method: 'get',
+ params:params
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js
new file mode 100644
index 0000000..3b29097
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/main/test/TestStudent3Manage.js
@@ -0,0 +1,114 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Page (parameter) {
+ return axios({
+ url: '/TestStudent3/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ *
+ * @author liuwq
+ */
+export function TestStudent3List (parameter) {
+ return axios({
+ url: '/TestStudent3/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Add (parameter) {
+ return axios({
+ url: '/TestStudent3/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Edit (parameter) {
+ return axios({
+ url: '/TestStudent3/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ *
+ * @author liuwq
+ */
+export function TestStudent3Delete (parameter) {
+ return axios({
+ url: '/TestStudent3/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3ToExcel (parameter) {
+ return axios({
+ url: '/TestStudent3/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel鏂囦欢
+ *
+ * @author liuwq
+ */
+export function TestStudent3FromExcel (data, parameter) {
+ return axios({
+ url: '/TestStudent3/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ *
+ * @author liuwq
+ */
+export function TestStudent3DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/TestStudent3/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md
new file mode 100644
index 0000000..46aab4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/README.md
@@ -0,0 +1 @@
+/** 姝ゆ枃浠跺す涓嬩唬鐮佸敖閲忎笉瑕佸姩锛屽簳搴у崌绾х洿鎺ヨ鐩栨浛鎹� **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js
new file mode 100644
index 0000000..870787e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/appManage.js
@@ -0,0 +1,106 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�4鏈�23鏃�12:10:57
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 绯荤粺搴旂敤鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function getAppPage (parameter) {
+ return axios({
+ url: '/sysApp/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 绯荤粺搴旂敤鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function getAppList (parameter) {
+ return axios({
+ url: '/sysApp/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏂板绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppAdd (parameter) {
+ return axios({
+ url: '/sysApp/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @param parameter
+ * @returns {*}
+ */
+export function sysAppEdit (parameter) {
+ return axios({
+ url: '/sysApp/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppDelete (parameter) {
+ return axios({
+ url: '/sysApp/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 璁句负榛樿搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020骞�7鏈�9鏃�15:05:01
+ */
+export function sysAppSetAsDefault (parameter) {
+ return axios({
+ url: '/sysApp/setAsDefault',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 淇敼搴旂敤鐘舵��
+ *
+ * @author zuohuaijun
+ * @date 2021骞�1鏈�1鏃�
+ */
+export function sysAppChangeStatus (parameter) {
+ return axios({
+ url: '/sysApp/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js
new file mode 100644
index 0000000..2703f28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/auditorworkflowManage.js
@@ -0,0 +1,61 @@
+import {
+ axios
+} from '@/utils/request'
+
+// 瀹℃牳娴佺▼鐩稿叧
+
+/**
+ * 鑾峰彇鎴戝彂璧风殑娴佺▼
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getMystartWorkflow(parameter) {
+ return axios({
+ url: '/workflowmanager/page',
+ method: 'post',
+ params: parameter
+ })
+}
+
+/**
+ * 鏈鏍告祦绋�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getMyUnAuditorWorkflow(parameter) {
+ return axios({
+ url: '/auditorworkflow/myworkflowlist',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娴佺▼瀹℃牳鑺傜偣鏁版嵁
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function getStepAuditor(parameter) {
+ return axios({
+ url: '/auditorworkflow/stepauditor',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 瀹℃牳娴佺▼
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/09
+ */
+ export function auditorWorkflow(parameter) {
+ return axios({
+ url: '/auditorworkflow/auditor',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js
new file mode 100644
index 0000000..34bdd41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/configManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ閰嶇疆鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigPage (parameter) {
+ return axios({
+ url: '/sysConfig/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigAdd (parameter) {
+ return axios({
+ url: '/sysConfig/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigEdit (parameter) {
+ return axios({
+ url: '/sysConfig/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:57
+ */
+export function sysConfigDelete (parameter) {
+ return axios({
+ url: '/sysConfig/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏革紝涓句緥锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 02:06
+ */
+export function sysDictTypeDropDown (parameter) {
+ return axios({
+ url: '/sysDictType/dropDown',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇绯荤粺鐨勬墍鏈変换鍔″垪琛�
+ *
+ * @author yubaoshan
+ * @date 2020/7/8 20:46
+ */
+export function sysTimersGetActionClasses (parameter) {
+ return axios({
+ url: '/sysTimers/getActionClasses',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js
new file mode 100644
index 0000000..34f6770
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictDataManage.js
@@ -0,0 +1,87 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:24
+ */
+export function sysDictDataPage(parameter) {
+ return axios({
+ url: '/sysDictData/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:24
+ */
+export function sysDictDataAdd(parameter) {
+ return axios({
+ url: '/sysDictData/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:25
+ */
+export function sysDictDataEdit(parameter) {
+ return axios({
+ url: '/sysDictData/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺瀛楀吀鍊�
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 02:25
+ */
+export function sysDictDataDelete(parameter) {
+ return axios({
+ url: '/sysDictData/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 淇敼绯荤粺瀛楀吀鐘舵��
+ *
+ * @author xusn
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictDataChangeStatus(parameter) {
+ return axios({
+ url: '/sysDictData/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏍规嵁Code鑾峰彇瀛楀吀鏁版嵁
+ *
+ * @author lanhuxing
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictDataListbycode(parameter) {
+ return axios({
+ url: '/sysDictData/listbycode?code=' + parameter.code,
+ method: 'get',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js
new file mode 100644
index 0000000..7569c5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/dictManage.js
@@ -0,0 +1,101 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:46
+ */
+export function sysDictTypePage(parameter) {
+ return axios({
+ url: '/sysDictType/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:46
+ */
+export function sysDictTypeAdd(parameter) {
+ return axios({
+ url: '/sysDictType/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:50
+ */
+export function sysDictTypeEdit(parameter) {
+ return axios({
+ url: '/sysDictType/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺瀛楀吀绫诲瀷
+ *
+ * @author yubaoshan
+ * @date 2020/5/17 01:50
+ */
+export function sysDictTypeDelete(parameter) {
+ return axios({
+ url: '/sysDictType/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏革紝涓句緥锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author yubaoshan
+ * @date 2020/6/10 00:10
+ */
+export function sysDictTypeDropDown(parameter) {
+ return axios({
+ url: '/sysDictType/dropDown',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎵�鏈夊瓧鍏革紝鍚姩鏃跺姞鍏ョ紦瀛樹娇鐢�
+ *
+ * @author yubaoshan
+ * @date 2020/6/10 00:10
+ */
+export function sysDictTypeTree(parameter) {
+ return axios({
+ url: '/sysDictType/tree',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 淇敼绯荤粺瀛楀吀鐘舵��
+ *
+ * @author xusn
+ * @date 2021-04-30 11:00:16
+ */
+export function sysDictTypeChangeStatus(parameter) {
+ return axios({
+ url: '/sysDictType/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js
new file mode 100644
index 0000000..1321bcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/emailManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍙戦�侀偖浠�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 23:22
+ */
+export function emailSendEmail (parameter) {
+ return axios({
+ url: '/email/sendEmail',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍙戦�乭tml閭欢
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 23:23
+ */
+export function emailSendEmailHtml (parameter) {
+ return axios({
+ url: '/email/sendEmailHtml',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js
new file mode 100644
index 0000000..dd48818
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/enumManage.js
@@ -0,0 +1,29 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏍规嵁鏋氫妇鍚嶇О鑾峰彇鏋氫妇鏁版嵁锛岃繑鍥炴牸寮忎负锛歔{code:"M",value:"鐢�"},{code:"F",value:"濂�"}]
+ *
+ * @author taoran
+ * @date 2021-04-16 21:13/sysEnumData/list/{enumName}
+ */
+export function sysEnumDataList (parameter) {
+ return axios({
+ url: '/sysEnumData/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏍规嵁瀹炰綋鍚嶅拰瀛楁鍚嶈幏鍙栨灇涓炬暟鎹�
+ *
+ * @author taoran
+ * @date 2021-04-16 21:13
+ */
+export function sysEnumDataListByField (parameter) {
+ return axios({
+ url: '/sysEnumData/listByFiled',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js
new file mode 100644
index 0000000..76c6f27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/excelTemplateManage.js
@@ -0,0 +1,134 @@
+锘縤mport { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨExcel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplatePage (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * Excel妯℃澘鍒楄〃
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateList (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateAdd (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateEdit (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎Excel妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateDelete (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 瀵煎嚭Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateToExcel (parameter) {
+ return axios({
+ url: '/sysExcelTemplate/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆Excel妯℃澘鐨凟xcel鏂囦欢
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateFromExcel (data, parameter) {
+ return axios({
+ url: '/sysExcelTemplate/fromExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+ })
+}
+
+/**
+ * 涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateDownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/sysExcelTemplate/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 淇敼Excel妯℃澘鐘舵��
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateChangeStatus(parameter) {
+ return axios({
+ url: '/sysExcelTemplate/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ *
+ * @author zhangzhan
+ */
+export function sysExcelTemplateGetColumnList(parameter) {
+ return axios({
+ url: '/sysExcelTemplate/getColumnList',
+ method: 'get',
+ params: parameter,
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js
new file mode 100644
index 0000000..389ccdb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/fileManage.js
@@ -0,0 +1,115 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoPage (parameter) {
+ return axios({
+ url: '/sysFileInfo/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍏ㄩ儴鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoList (parameter) {
+ return axios({
+ url: '/sysFileInfo/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 涓婁紶鏂囦欢
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoUpload (parameter) {
+ return axios({
+ url: '/sysFileInfo/upload',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 涓嬭浇鏂囦欢
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDownload (parameter) {
+ return axios({
+ url: '/sysFileInfo/download',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 鏌ョ湅鍥剧墖
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoPreview (parameter) {
+ return axios({
+ url: '/sysFileInfo/preview',
+ method: 'get',
+ params: parameter,
+ responseType: 'arraybuffer'
+ })
+}
+
+/**
+ * 鏌ョ湅璇︽儏鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDetail (parameter) {
+ return axios({
+ url: '/sysFileInfo/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鏂囦欢淇℃伅琛�
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 00:20
+ */
+export function sysFileInfoDelete (parameter) {
+ return axios({
+ url: '/sysFileInfo/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 涓婁紶澶村儚
+ *
+ * @author zuohuaijun
+ * @date 2021/4/23 00:20
+ */
+export function sysFileInfoUploadAvatar (parameter) {
+ return axios({
+ url: '/sysFileInfo/uploadAvatar',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js
new file mode 100644
index 0000000..ad1d8aa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/formDesignmanage.js
@@ -0,0 +1,81 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 淇濆瓨琛ㄥ崟
+ */
+export function formAdd(parameter) {
+ return axios({
+ url: '/formmanager/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇琛ㄥ崟
+ */
+ export function formEntity(parameter) {
+ return axios({
+ url: '/formmanager/entity',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇琛ㄥ崟鏌ョ湅 涓嶈兘缂栬緫
+ */
+ export function formEntityView(parameter) {
+ return axios({
+ url: '/formmanager/entityview',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏇存柊琛ㄥ崟
+ */
+ export function formEdit(parameter) {
+ return axios({
+ url: '/formmanager/update',
+ method: 'post',
+ data: parameter
+ })
+}
+
+// 鍒犻櫎琛ㄥ崟
+export function formDelete(parameter) {
+ return axios({
+ url: '/formmanager/delete',
+ method: 'delete',
+ data: parameter
+ })
+}
+
+// 鍙戝竷琛ㄥ崟
+export function formPublish(parameter) {
+ return axios({
+ url: '/formmanager/publish',
+ method: 'post',
+ data: parameter
+ })
+}
+
+// 鑾峰彇琛ㄥ崟鍒楄〃
+export function formList(parameter) {
+ return axios({
+ url: '/formmanager/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+// 鑾峰彇琛ㄥ崟鍒楄〃
+export function getformList(parameter) {
+ return axios({
+ url: '/formmanager/publislist',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js
new file mode 100644
index 0000000..55fda7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/homeManage.js
@@ -0,0 +1,43 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yhh
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇搴撲綅鏁版嵁
+ *
+ * @author yhh
+ */
+export function GetPalceNumbers () {
+ return axios({
+ url: '/locationview/GetPalceDetail',
+ method: 'get'
+ })
+}
+
+/**
+ * 鑾峰彇鍑哄叆搴撶粺璁℃暟鎹�
+ *
+ * @author yhh
+ */
+export function GeInOutTaskNumber (params) {
+ return axios({
+ url: '/locationview/task-detail',
+ method: 'get',
+ params:params
+ })
+}
+
+/**
+ * 鑾峰彇鍑哄叆搴撴�绘暟
+ *
+ * @author yhh
+ */
+export function GeInOutTotalNumber () {
+ return axios({
+ url: '/locationview/GetTaskCount',
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js
new file mode 100644
index 0000000..b1f2d52
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/logManage.js
@@ -0,0 +1,93 @@
+/*
+ * @Author: your name
+ * @Date: 2021-04-17 17:45:37
+ * @LastEditTime: 2021-04-17 18:03:59
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\api\modular\system\logManage.js
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ璁块棶鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysVisLogPage (parameter) {
+ return axios({
+ url: '/sysVisLog/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏌ヨ鎿嶄綔鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysOpLogPage (parameter) {
+ return axios({
+ url: '/sysOpLog/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏌ヨ寮傚父鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/5/19 11:57
+ */
+export function sysExLogPage (parameter) {
+ return axios({
+ url: '/sysExLog/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娓呯┖璁块棶鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function sysVisLogDelete (parameter) {
+ return axios({
+ url: '/sysVisLog/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 娓呯┖鐧诲綍鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+export function sysOpLogDelete (parameter) {
+ return axios({
+ url: '/sysOpLog/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 娓呯┖寮傚父鏃ュ織
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 23:09
+ */
+ export function sysExLogDelete (parameter) {
+ return axios({
+ url: '/sysExLog/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js
new file mode 100644
index 0000000..15d8909
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/loginManage.js
@@ -0,0 +1,119 @@
+/**
+ * 绯荤粺搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:06
+ */
+import { axios } from '@/utils/request'
+
+/**
+ * 鐧诲綍
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:06
+ */
+export function login (parameter) {
+ return axios({
+ url: '/login',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鐧诲嚭
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:07
+ */
+export function logout (parameter) {
+ return axios({
+ url: '/logout',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:08
+ */
+export function getLoginUser (parameter) {
+ return axios({
+ url: '/getLoginUser',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇绉熸埛寮�鍏�
+ *
+ * @author yubaoshan
+ * @date 2020/9/5 1:24
+ */
+export function getTenantOpen (parameter) {
+ return axios({
+ url: '/getTenantOpen',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 19:29
+ */
+export function getSmsCaptcha (parameter) {
+ return axios({
+ url: '/getSmsCaptcha',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇楠岃瘉鐮佸紑鍏�
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function getCaptchaOpen (parameter) {
+ return axios({
+ url: '/getCaptchaOpen',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇楠岃瘉鍥剧墖 浠ュ強token
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function reqGet(data) {
+ return axios({
+ url: '/captcha/get',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 婊戝姩鎴栬�呯偣閫夐獙璇�
+ *
+ * @author Jax
+ * @date 2021/1/22 00:00
+ */
+export function reqCheck(data) {
+ return axios({
+ url: '/captcha/check',
+ method: 'post',
+ data
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js
new file mode 100644
index 0000000..fb02013
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/machineManage.js
@@ -0,0 +1,32 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ *
+ * 绯荤粺灞炴�х洃鎺�
+ *
+ */
+export function sysMachineUse(parameter) {
+ return axios({
+ url: '/sysMachine/use',
+ method: 'get',
+ params: parameter
+ })
+}
+
+export function sysMachineBase(parameter) {
+ return axios({
+ url: '/sysMachine/base',
+ method: 'get',
+ params: parameter
+ })
+}
+
+export function sysMachineNetwork(parameter) {
+ return axios({
+ url: '/sysMachine/network',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js
new file mode 100644
index 0000000..454c406
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/menuManage.js
@@ -0,0 +1,130 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇鑿滃崟鍒楄〃
+ *
+ * @author yubaoshan
+ * @param parameter
+ * @returns {*}
+ */
+export function getMenuList (parameter) {
+ return axios({
+ url: '/sysMenu/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇pda鑿滃崟鍒楄〃
+ *
+ * @author yuhuanhuan
+ * @param id
+ * @returns {*}
+ */
+export function getPdaMenuList (id) {
+ return axios({
+ url: '/sysMenu/listpda',
+ method: 'get',
+ params: {id}
+ })
+}
+
+
+/**
+ * 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板锛岀紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+ *
+ * @author yubaoshan
+ * @date 2020/4/23 12:22
+ */
+export function getMenuTree (parameter) {
+ return axios({
+ url: '/sysMenu/tree',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澧炲姞鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/24 23:23
+ */
+export function sysMenuAdd (parameter) {
+ return axios({
+ url: '/sysMenu/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 澧炲姞鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/24 23:23
+ */
+export function sysMenuDelete (parameter) {
+ return axios({
+ url: '/sysMenu/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏌ョ湅鑿滃崟璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/4/25 01:11
+ */
+export function sysMenuDetail (parameter) {
+ return axios({
+ url: '/sysMenu/detail',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/4/25 01:11
+ */
+export function sysMenuEdit (parameter) {
+ return axios({
+ url: '/sysMenu/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 17:30
+ */
+export function SysMenuTreeForGrant (parameter) {
+ return axios({
+ url: '/sysMenu/treeForGrant',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏍规嵁绯荤粺鍒囨崲鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/28 15:25
+ */
+export function sysMenuChange (parameter) {
+ return axios({
+ url: '/sysMenu/change',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js
new file mode 100644
index 0000000..d4f7277
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticePage (parameter) {
+ return axios({
+ url: '/sysNotice/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeAdd (parameter) {
+ return axios({
+ url: '/sysNotice/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeEdit (parameter) {
+ return axios({
+ url: '/sysNotice/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeDelete (parameter) {
+ return axios({
+ url: '/sysNotice/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 閫氱煡鍏憡璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/6/30 01:56
+ */
+export function sysNoticeDetail (parameter) {
+ return axios({
+ url: '/sysNotice/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 淇敼鐘舵��
+ *
+ * @author yubaoshan
+ * @date 2020/7/30 02:23
+ */
+export function sysNoticeChangeStatus (parameter) {
+ return axios({
+ url: '/sysNotice/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js
new file mode 100644
index 0000000..d28174a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/noticeReceivedManage.js
@@ -0,0 +1,24 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ鎴戞敹鍒扮殑绯荤粺閫氱煡鍏憡
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:02
+ */
+export function sysNoticeReceived (parameter) {
+ return axios({
+ url: '/sysNotice/received',
+ method: 'get',
+ params: parameter
+ })
+}
+
+export function unReadNotice (parameter) {
+ return axios({
+ url: '/sysNotice/unread',
+ method: 'get',
+ params: parameter
+ })
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js
new file mode 100644
index 0000000..dd92dc7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/onlineUserManage.js
@@ -0,0 +1,45 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ *
+ * @author 鍐欐剰
+ * @date 2021/7/21 23:34
+ */
+export function sysOnlineUserPage(parameter) {
+ return axios({
+ url: '/sysOnlineUser/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍦ㄧ嚎鐢ㄦ埛鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/6/8 11:11
+ */
+export function sysOnlineUserList(parameter) {
+ return axios({
+ url: '/sysOnlineUser/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 寮哄埗涓嬬嚎
+ *
+ * @author yubaoshan
+ * @date 2020/6/8 11:11
+ */
+export function sysOnlineUserForceExist(parameter) {
+ return axios({
+ url: '/sysOnlineUser/forceExist',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js
new file mode 100644
index 0000000..6ad82f6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/orgManage.js
@@ -0,0 +1,85 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇鏈烘瀯鏍�
+ *
+ * @author yubaoshan
+ * @date 2020/4/26 12:08
+ */
+export function getOrgTree (parameter) {
+ return axios({
+ url: '/sysOrg/tree',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鏈烘瀯鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 12:59
+ */
+export function getOrgList (parameter) {
+ return axios({
+ url: '/sysOrg/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鏈烘瀯鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 16:17
+ */
+export function getOrgPage (parameter) {
+ return axios({
+ url: '/sysOrg/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏂板鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 13:56
+ */
+export function sysOrgAdd (parameter) {
+ return axios({
+ url: '/sysOrg/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 13:56
+ */
+export function sysOrgEdit (parameter) {
+ return axios({
+ url: '/sysOrg/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鏈烘瀯
+ *
+ * @author yubaoshan
+ * @date 2020/5/11 12:59
+ */
+export function sysOrgDelete (parameter) {
+ return axios({
+ url: '/sysOrg/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js
new file mode 100644
index 0000000..847cf61
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/posManage.js
@@ -0,0 +1,71 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鏌ヨ绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosPage (parameter) {
+ return axios({
+ url: '/sysPos/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 绯荤粺鑱屼綅鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/6/21 23:50
+ */
+export function sysPosList (parameter) {
+ return axios({
+ url: '/sysPos/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosAdd (parameter) {
+ return axios({
+ url: '/sysPos/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosEdit (parameter) {
+ return axios({
+ url: '/sysPos/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绯荤粺鑱屼綅
+ *
+ * @author yubaoshan
+ * @date 2020/5/25 01:31
+ */
+export function sysPosDelete (parameter) {
+ return axios({
+ url: '/sysPos/delete',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js
new file mode 100644
index 0000000..40c5093
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/roleManage.js
@@ -0,0 +1,155 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鑾峰彇瑙掕壊鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function getRolePage (parameter) {
+ return axios({
+ url: '/sysRole/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澧炲姞瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function sysRoleAdd (parameter) {
+ return axios({
+ url: '/sysRole/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 11:44
+ */
+export function sysRoleEdit (parameter) {
+ return axios({
+ url: '/sysRole/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/6 17:51
+ */
+export function sysRoleDelete (parameter) {
+ return axios({
+ url: '/sysRole/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/7 11:28
+ */
+export function sysRoleDeteil (parameter) {
+ return axios({
+ url: '/sysRole/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎺堟潈瑙掕壊鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 23:59
+ */
+export function sysRoleDropDown (parameter) {
+ return axios({
+ url: '/sysRole/dropDown',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎷ユ湁鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/02 19:02
+ */
+export function sysRoleOwnMenu (parameter) {
+ return axios({
+ url: '/sysRole/ownMenu',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎺堟潈鑿滃崟
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 21:10
+ */
+export function sysRoleGrantMenu (parameter) {
+ return axios({
+ url: '/sysRole/grantMenu',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 鎺堟潈pda鑿滃崟
+ *
+ * @author yuhuanhuan
+ */
+export function sysRoleGrantPdaMenu (parameter) {
+ return axios({
+ url: '/sysRole/grantPdaMenu',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎷ユ湁鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/02 21:40
+ */
+export function sysRoleOwnData (parameter) {
+ return axios({
+ url: '/sysRole/ownData',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎺堟潈鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 21:50
+ */
+export function sysRoleGrantData (parameter) {
+ return axios({
+ url: '/sysRole/grantData',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js
new file mode 100644
index 0000000..9973bd2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/smsManage.js
@@ -0,0 +1,43 @@
+import { axios } from '@/utils/request'
+
+/**
+ * 鍙戦�佽褰曟煡璇�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:11
+ */
+export function smsPage (parameter) {
+ return axios({
+ url: '/sms/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 楠岃瘉鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:12
+ */
+export function sysSendLoginMessage (parameter) {
+ return axios({
+ url: '/sms/sendLoginMessage',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 楠岃瘉鐭俊楠岃瘉鐮�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 22:12
+ */
+export function sysValidateMessage (parameter) {
+ return axios({
+ url: '/sms/validateMessage',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js
new file mode 100644
index 0000000..6168e7e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/tenantManage.js
@@ -0,0 +1,96 @@
+/**
+ * 绉熸埛
+ */
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 绉熸埛鍒楄〃
+ *
+ */
+export function sysTenantPage(parameter) {
+ return axios({
+ url: '/sysTenant/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏂板绉熸埛
+ *
+ */
+export function sysTenantAdd(parameter) {
+ return axios({
+ url: '/sysTenant/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎绉熸埛
+ *
+ */
+export function sysTenantDelete(parameter) {
+ return axios({
+ url: '/sysTenant/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫绉熸埛
+ *
+ */
+export function sysTenantEdit(parameter) {
+ return axios({
+ url: '/sysTenant/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎷ユ湁鑿滃崟
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 10:30
+ */
+export function sysTenantOwnMenu (parameter) {
+ return axios({
+ url: '/sysTenant/ownMenu',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎺堟潈鑿滃崟
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 10:30
+ */
+export function sysTenantGrantMenu (parameter) {
+ return axios({
+ url: '/sysTenant/grantMenu',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 閲嶇疆瀵嗙爜
+ *
+ * @author zuohuaijun
+ * @date 2021/04/22 11:00
+ */
+export function sysTenantResetPwd (parameter) {
+ return axios({
+ url: '/sysTenant/resetPwd',
+ method: 'post',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js
new file mode 100644
index 0000000..5ee86e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/timersManage.js
@@ -0,0 +1,143 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 鍒嗛〉鏌ヨ瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:13
+ */
+export function sysTimersPage(parameter) {
+ return axios({
+ url: '/sysTimers/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鍏ㄩ儴瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersList(parameter) {
+ return axios({
+ url: '/sysTimers/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鏌ョ湅璇︽儏瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersDetail(parameter) {
+ return axios({
+ url: '/sysTimers/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersAdd(parameter) {
+ return axios({
+ url: '/sysTimers/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersDelete(parameter) {
+ return axios({
+ url: '/sysTimers/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersEdit(parameter) {
+ return axios({
+ url: '/sysTimers/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇绯荤粺鐨勬墍鏈変换鍔″垪琛�
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersGetActionClasses(parameter) {
+ return axios({
+ url: '/sysTimers/getActionClasses',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍚姩瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersStart(parameter) {
+ return axios({
+ url: '/sysTimers/start',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍋滄瀹氭椂浠诲姟
+ *
+ * @author yubaoshan
+ * @date 2020/7/3 03:23
+ */
+export function sysTimersStop(parameter) {
+ return axios({
+ url: '/sysTimers/stop',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ *
+ * @author zuohuaijun
+ * @date 2021/04/24 23:10
+ */
+export function sysTimersLocalJobList(parameter) {
+ return axios({
+ url: '/sysTimers/localJobList',
+ method: 'get',
+ data: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js
new file mode 100644
index 0000000..00fb75e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/userManage.js
@@ -0,0 +1,268 @@
+import {
+ axios
+} from '@/utils/request'
+
+/**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
+ *
+ * @author yubaoshan
+ * @date 2020/4/26 12:08
+ */
+export function getUserPage(parameter) {
+ return axios({
+ url: '/sysUser/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 澧炲姞鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 02:08
+ */
+export function sysUserAdd(parameter) {
+ return axios({
+ url: '/sysUser/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 02:08
+ */
+export function sysUserEdit(parameter) {
+ return axios({
+ url: '/sysUser/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐢ㄦ埛璇︽儏
+ *
+ * @author yubaoshan
+ * @date 2020/5/5 19:55
+ */
+export function sysUserDetail(parameter) {
+ return axios({
+ url: '/sysUser/detail',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎鐢ㄦ埛
+ *
+ * @author yubaoshan
+ * @date 2020/5/7 19:31
+ */
+export function sysUserDelete(parameter) {
+ return axios({
+ url: '/sysUser/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎷ユ湁瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/6/3 11:58
+ */
+export function sysUserOwnRole(parameter) {
+ return axios({
+ url: '/sysUser/ownRole',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎺堟潈瑙掕壊
+ *
+ * @author yubaoshan
+ * @date 2020/5/26 23:59
+ */
+export function sysUserGrantRole(parameter) {
+ return axios({
+ url: '/sysUser/grantRole',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鎷ユ湁鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 23:14
+ */
+export function sysUserOwnData(parameter) {
+ return axios({
+ url: '/sysUser/ownData',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鎺堟潈鏁版嵁
+ *
+ * @author yubaoshan
+ * @date 2020/6/2 23:15
+ */
+export function sysUserGrantData(parameter) {
+ return axios({
+ url: '/sysUser/grantData',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 淇敼鐘舵��
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 21:36
+ */
+export function sysUserChangeStatus(parameter) {
+ return axios({
+ url: '/sysUser/changeStatus',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 閲嶇疆瀵嗙爜
+ *
+ * @author yubaoshan
+ * @date 2020/6/23 22:04
+ */
+export function sysUserResetPwd(parameter) {
+ return axios({
+ url: '/sysUser/resetPwd',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 淇敼瀵嗙爜
+ *
+ * @author yubaoshan
+ * @date 2020/6/25 00:25
+ */
+export function sysUserUpdatePwd(parameter) {
+ return axios({
+ url: '/sysUser/updatePwd',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鐢ㄦ埛閫夋嫨鍣�
+ *
+ * @author yubaoshan
+ * @date 2020/6/25 00:25
+ */
+export function sysUserSelector(parameter) {
+ return axios({
+ url: '/sysUser/selector',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鐢ㄦ埛鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/05/07
+ */
+ export function getUserList(parameter) {
+ return axios({
+ url: '/sysUser/userList',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 淇敼澶村儚
+ *
+ * @author yubaoshan
+ * @date 2020/9/20 2:21
+ */
+export function sysUserUpdateAvatar(parameter) {
+ return axios({
+ url: '/sysUser/updateAvatar',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏇存柊鍩烘湰淇℃伅
+ *
+ * @author yubaoshan
+ * @date 2020/9/20 03:12
+ */
+export function sysUserUpdateInfo(parameter) {
+ return axios({
+ url: '/sysUser/updateInfo',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 瀵煎嚭鐢ㄦ埛淇℃伅
+ *
+ * @author zuohuaijun
+ * @date 2021/4/20 01:00
+ */
+export function sysUserExport(parameter) {
+ return axios({
+ url: '/sysUser/export',
+ method: 'get',
+ data: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆鐢ㄦ埛淇℃伅
+ *
+ * @author zuohuaijun
+ * @date 2021/4/20 01:00
+ */
+export function sysUserImport(parameter) {
+ return axios({
+ url: '/sysUser/import',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇鎵�灞炰骇绾夸笅鎷夊垪琛�
+ *
+ * @author yhh
+ */
+export function sysUserGetLines() {
+ return axios({
+ url: '/sysUser/selectLesWorkShopType',
+ method: 'get',
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js
new file mode 100644
index 0000000..d0ab711
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/api/modular/system/workflowManage.js
@@ -0,0 +1,117 @@
+import {
+ axios
+} from '@/utils/request'
+
+// 宸ヤ綔娴佺浉鍏矨PI
+
+/**
+ * 鑾峰彇姝ラ鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function getAllStepBodyList(parameter) {
+ return axios({
+ url: '/stepBodyManage/allstepBody',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鑾峰彇娴佺▼瀹氫箟鍒楄〃
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/06
+ */
+ export function getWorkflowDefinitionList(parameter) {
+ return axios({
+ url: '/workflowdefinition/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/06
+ */
+ export function addWorkflowDefinition(parameter) {
+ return axios({
+ url: '/workflowdefinition/create',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function deleteWorkflowDefinition(parameter) {
+ return axios({
+ url: '/workflowdefinition/delete',
+ method: 'delete',
+ data: parameter
+ })
+}
+
+/**
+ * 鏇存柊宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+ export function workflowUpdata(parameter) {
+ return axios({
+ url: '/workflowdefinition/update',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鏍规嵁id鍜岀増鏈幏鍙栧伐浣滄祦淇℃伅
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/07
+ */
+export function getWorkflowByID(parameter) {
+ return axios({
+ url: '/workflowdefinition/workflow/',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 鍙戣捣宸ヤ綔娴�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/10
+ */
+ export function startWorkflow(parameter) {
+ return axios({
+ url: '/workflowmanager/Start',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鑾峰彇宸ヤ綔娴佽緭鍏ュ弬鏁�
+ *
+ * @author 椋炶浘鏁戠伀
+ * @date 2022/5/10
+ */
+ export function inputsWorkflow(parameter) {
+ return axios({
+ url: '/workflowmanager/inputsparameter',
+ method: 'get',
+ params: parameter
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg b/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg
new file mode 100644
index 0000000..b02a8d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/icons/bx-analyse.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1551058675966" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7872" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M85.333333 512h85.333334a340.736 340.736 0 0 1 99.712-241.621333 337.493333 337.493333 0 0 1 108.458666-72.96 346.453333 346.453333 0 0 1 261.546667-1.749334A106.154667 106.154667 0 0 0 746.666667 298.666667C805.802667 298.666667 853.333333 251.136 853.333333 192S805.802667 85.333333 746.666667 85.333333c-29.397333 0-55.978667 11.776-75.221334 30.933334-103.722667-41.514667-222.848-40.874667-325.76 2.517333a423.594667 423.594667 0 0 0-135.68 91.264 423.253333 423.253333 0 0 0-91.306666 135.637333A426.88 426.88 0 0 0 85.333333 512z m741.248 133.205333c-17.109333 40.618667-41.685333 77.141333-72.96 108.416s-67.797333 55.850667-108.458666 72.96a346.453333 346.453333 0 0 1-261.546667 1.749334A106.154667 106.154667 0 0 0 277.333333 725.333333C218.197333 725.333333 170.666667 772.864 170.666667 832S218.197333 938.666667 277.333333 938.666667c29.397333 0 55.978667-11.776 75.221334-30.933334A425.173333 425.173333 0 0 0 512 938.666667a425.941333 425.941333 0 0 0 393.258667-260.352A426.325333 426.325333 0 0 0 938.666667 512h-85.333334a341.034667 341.034667 0 0 1-26.752 133.205333z" p-id="7873"></path><path d="M512 318.378667c-106.752 0-193.621333 86.869333-193.621333 193.621333S405.248 705.621333 512 705.621333s193.621333-86.869333 193.621333-193.621333S618.752 318.378667 512 318.378667z m0 301.909333c-59.690667 0-108.288-48.597333-108.288-108.288S452.309333 403.712 512 403.712s108.288 48.597333 108.288 108.288-48.597333 108.288-108.288 108.288z" p-id="7874"></path></svg>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png b/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png
new file mode 100644
index 0000000..18c5c5d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/login_bk.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg b/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg
new file mode 100644
index 0000000..da49afa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/logo.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/notice.png b/iWare_RawMaterialWarehouse_Web/src/assets/notice.png
new file mode 100644
index 0000000..b713953
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/notice.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png b/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png
new file mode 100644
index 0000000..76921c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/text_logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png b/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png
new file mode 100644
index 0000000..94abec2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/assets/welcome.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue
new file mode 100644
index 0000000..8f39978
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/ArticleListContent.vue
@@ -0,0 +1,89 @@
+<template>
+ <div class="antd-pro-components-article-list-content-index-listContent">
+ <div class="description">
+ <slot>
+ {{ description }}
+ </slot>
+ </div>
+ <div class="extra">
+ <a-avatar :src="avatar" size="small" />
+ <a :href="href">{{ owner }}</a> 鍙戝竷鍦� <a :href="href">{{ href }}</a>
+ <em>{{ updateAt | moment }}</em>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'ArticleListContent',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'antd-pro-components-article-list-content-index-listContent'
+ },
+ description: {
+ type: String,
+ default: ''
+ },
+ owner: {
+ type: String,
+ required: true
+ },
+ avatar: {
+ type: String,
+ required: true
+ },
+ href: {
+ type: String,
+ required: true
+ },
+ updateAt: {
+ type: String,
+ required: true
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+@import '../index.less';
+
+.antd-pro-components-article-list-content-index-listContent {
+ .description {
+ max-width: 720px;
+ line-height: 22px;
+ }
+ .extra {
+ margin-top: 16px;
+ color: @text-color-secondary;
+ line-height: 22px;
+
+ & /deep/ .ant-avatar {
+ position: relative;
+ top: 1px;
+ width: 20px;
+ height: 20px;
+ margin-right: 8px;
+ vertical-align: top;
+ }
+
+ & > em {
+ margin-left: 16px;
+ color: @disabled-color;
+ font-style: normal;
+ }
+ }
+}
+
+@media screen and (max-width: @screen-xs) {
+ .antd-pro-components-article-list-content-index-listContent {
+ .extra {
+ & > em {
+ display: block;
+ margin-top: 8px;
+ margin-left: 0;
+ }
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js
new file mode 100644
index 0000000..37d35c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ArticleListContent/index.js
@@ -0,0 +1,3 @@
+import ArticleListContent from './ArticleListContent'
+
+export default ArticleListContent
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue
new file mode 100644
index 0000000..26e149e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/Item.vue
@@ -0,0 +1,46 @@
+<template>
+ <tooltip v-if="tips !== ''">
+ <template slot="title">{{ tips }}</template>
+ <avatar :size="avatarSize" :src="src" />
+ </tooltip>
+ <avatar v-else :size="avatarSize" :src="src" />
+</template>
+
+<script>
+import Avatar from 'ant-design-vue/es/avatar'
+import Tooltip from 'ant-design-vue/es/tooltip'
+
+export default {
+ name: 'AvatarItem',
+ components: {
+ Avatar,
+ Tooltip
+ },
+ props: {
+ tips: {
+ type: String,
+ default: '',
+ required: false
+ },
+ src: {
+ type: String,
+ default: ''
+ }
+ },
+ data () {
+ return {
+ size: this.$parent.size
+ }
+ },
+ computed: {
+ avatarSize () {
+ return this.size !== 'mini' && this.size || 20
+ }
+ },
+ watch: {
+ '$parent.size' (val) {
+ this.size = val
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue
new file mode 100644
index 0000000..446ceeb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/List.vue
@@ -0,0 +1,99 @@
+<!--
+<template>
+ <div :class="[prefixCls]">
+ <ul>
+ <slot></slot>
+ <template v-for="item in filterEmpty($slots.default).slice(0, 3)"></template>
+
+ <template v-if="maxLength > 0 && filterEmpty($slots.default).length > maxLength">
+ <avatar-item :size="size">
+ <avatar :size="size !== 'mini' && size || 20" :style="excessItemsStyle">{{ `+${maxLength}` }}</avatar>
+ </avatar-item>
+ </template>
+ </ul>
+ </div>
+</template>
+-->
+
+<script>
+import Avatar from 'ant-design-vue/es/avatar'
+import AvatarItem from './Item'
+import { filterEmpty } from '@/components/_util/util'
+
+export default {
+ AvatarItem,
+ name: 'AvatarList',
+ components: {
+ Avatar,
+ AvatarItem
+ },
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-avatar-list'
+ },
+ /**
+ * 澶村儚澶у皬 绫诲瀷: large銆乻mall 銆乵ini, default
+ * 榛樿鍊�: default
+ */
+ size: {
+ type: [String, Number],
+ default: 'default'
+ },
+ /**
+ * 瑕佹樉绀虹殑鏈�澶ч」鐩�
+ */
+ maxLength: {
+ type: Number,
+ default: 0
+ },
+ /**
+ * 澶氫綑鐨勯」鐩鏍�
+ */
+ excessItemsStyle: {
+ type: Object,
+ default: () => {
+ return {
+ color: '#f56a00',
+ backgroundColor: '#fde3cf'
+ }
+ }
+ }
+ },
+ data () {
+ return {}
+ },
+ methods: {
+ getItems (items) {
+ const classString = {
+ [`${this.prefixCls}-item`]: true,
+ [`${this.size}`]: true
+ }
+
+ if (this.maxLength > 0) {
+ items = items.slice(0, this.maxLength)
+ items.push((<Avatar size={ this.size } style={ this.excessItemsStyle }>{`+${this.maxLength}`}</Avatar>))
+ }
+ const itemList = items.map((item) => (
+ <li class={ classString }>{ item }</li>
+ ))
+ return itemList
+ }
+ },
+ render () {
+ const { prefixCls, size } = this.$props
+ const classString = {
+ [`${prefixCls}`]: true,
+ [`${size}`]: true
+ }
+ const items = filterEmpty(this.$slots.default)
+ const itemsDom = items && items.length ? <ul class={`${prefixCls}-items`}>{ this.getItems(items) }</ul> : null
+
+ return (
+ <div class={ classString }>
+ { itemsDom }
+ </div>
+ )
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js
new file mode 100644
index 0000000..dd6bb8b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.js
@@ -0,0 +1,4 @@
+import AvatarList from './List'
+import './index.less'
+
+export default AvatarList
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less
new file mode 100644
index 0000000..9ce073f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.less
@@ -0,0 +1,60 @@
+@import "../index";
+
+@avatar-list-prefix-cls: ~"@{ant-pro-prefix}-avatar-list";
+@avatar-list-item-prefix-cls: ~"@{ant-pro-prefix}-avatar-list-item";
+
+.@{avatar-list-prefix-cls} {
+ display: inline-block;
+
+ ul {
+ list-style: none;
+ display: inline-block;
+ padding: 0;
+ margin: 0 0 0 8px;
+ font-size: 0;
+ }
+}
+
+.@{avatar-list-item-prefix-cls} {
+ display: inline-block;
+ font-size: @font-size-base;
+ margin-left: -8px;
+ width: @avatar-size-base;
+ height: @avatar-size-base;
+
+ :global {
+ .ant-avatar {
+ border: 1px solid #fff;
+ cursor: pointer;
+ }
+ }
+
+ &.large {
+ width: @avatar-size-lg;
+ height: @avatar-size-lg;
+ }
+
+ &.small {
+ width: @avatar-size-sm;
+ height: @avatar-size-sm;
+ }
+
+ &.mini {
+ width: 20px;
+ height: 20px;
+
+ :global {
+ .ant-avatar {
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+
+ .ant-avatar-string {
+ font-size: 12px;
+ line-height: 18px;
+ }
+ }
+ }
+ }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md
new file mode 100644
index 0000000..dc9c092
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/AvatarList/index.md
@@ -0,0 +1,64 @@
+# AvatarList 鐢ㄦ埛澶村儚鍒楄〃
+
+
+涓�缁勭敤鎴峰ご鍍忥紝甯哥敤鍦ㄩ」鐩�/鍥㈤槦鎴愬憳鍒楄〃銆傚彲閫氳繃璁剧疆 `size` 灞炴�ф潵鎸囧畾澶村儚澶у皬銆�
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import AvatarList from '@/components/AvatarList'
+const AvatarListItem = AvatarList.AvatarItem
+
+export default {
+ components: {
+ AvatarList,
+ AvatarListItem
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず [demo](https://pro.loacg.com/test/home)
+
+```html
+<avatar-list size="mini">
+ <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+ <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+</avatar-list>
+```
+鎴�
+```html
+<avatar-list :max-length="3">
+ <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+ <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+</avatar-list>
+```
+
+
+
+## API
+
+### AvatarList
+
+| 鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+| ---------------- | -------- | ---------------------------------- | --------- |
+| size | 澶村儚澶у皬 | `large`銆乣small` 銆乣mini`, `default` | `default` |
+| maxLength | 瑕佹樉绀虹殑鏈�澶ч」鐩� | number | - |
+| excessItemsStyle | 澶氫綑鐨勯」鐩鏍� | CSSProperties | - |
+
+### AvatarList.Item
+
+| 鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+| ---- | ------ | --------- | --- |
+| tips | 澶村儚灞曠ず鏂囨 | string | - |
+| src | 澶村儚鍥剧墖杩炴帴 | string | - |
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue
new file mode 100644
index 0000000..4482845
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Bar.vue
@@ -0,0 +1,62 @@
+<template>
+ <div :style="{ padding: '0 0 32px 32px' }">
+ <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
+ <v-chart
+ height="254"
+ :data="data"
+ :forceFit="true"
+ :padding="['auto', 'auto', '40', '50']">
+ <v-tooltip />
+ <v-axis />
+ <v-bar position="x*y"/>
+ </v-chart>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Bar',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ data: {
+ type: Array,
+ default: () => {
+ return []
+ }
+ },
+ scale: {
+ type: Array,
+ default: () => {
+ return [{
+ dataKey: 'x',
+ min: 2
+ }, {
+ dataKey: 'y',
+ title: '鏃堕棿',
+ min: 1,
+ max: 22
+ }]
+ }
+ },
+ tooltip: {
+ type: Array,
+ default: () => {
+ return [
+ 'x*y',
+ (x, y) => ({
+ name: x,
+ value: y
+ })
+ ]
+ }
+ }
+ },
+ data () {
+ return {
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue
new file mode 100644
index 0000000..fc1f425
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/ChartCard.vue
@@ -0,0 +1,120 @@
+<template>
+ <a-card :loading="loading" :body-style="{ padding: '20px 24px 8px' }" :bordered="false">
+ <div class="chart-card-header">
+ <div class="meta">
+ <span class="chart-card-title">
+ <slot name="title">
+ {{ title }}
+ </slot>
+ </span>
+ <span class="chart-card-action">
+ <slot name="action"></slot>
+ </span>
+ </div>
+ <div class="total">
+ <slot name="total">
+ <span>{{ typeof total === 'function' && total() || total }}</span>
+ </slot>
+ </div>
+ </div>
+ <div class="chart-card-content">
+ <div class="content-fix">
+ <slot></slot>
+ </div>
+ </div>
+ <div class="chart-card-footer">
+ <div class="field">
+ <slot name="footer"></slot>
+ </div>
+ </div>
+ </a-card>
+</template>
+
+<script>
+export default {
+ name: 'ChartCard',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ total: {
+ type: [Function, Number, String],
+ required: false,
+ default: null
+ },
+ loading: {
+ type: Boolean,
+ default: false
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .chart-card-header {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+
+ .meta {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+ color: rgba(0, 0, 0, .45);
+ font-size: 14px;
+ line-height: 22px;
+ }
+ }
+
+ .chart-card-action {
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0;
+ }
+
+ .chart-card-footer {
+ border-top: 1px solid #e8e8e8;
+ padding-top: 9px;
+ margin-top: 8px;
+
+ > * {
+ position: relative;
+ }
+
+ .field {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin: 0;
+ }
+ }
+
+ .chart-card-content {
+ margin-bottom: 12px;
+ position: relative;
+ height: 46px;
+ width: 100%;
+
+ .content-fix {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ }
+ }
+
+ .total {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap;
+ color: #000;
+ margin-top: 4px;
+ margin-bottom: 0;
+ font-size: 30px;
+ line-height: 38px;
+ height: 38px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue
new file mode 100644
index 0000000..4019fb1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Liquid.vue
@@ -0,0 +1,67 @@
+<template>
+ <div>
+ <v-chart
+ :forceFit="true"
+ :height="height"
+ :width="width"
+ :data="data"
+ :scale="scale"
+ :padding="0">
+ <v-tooltip />
+ <v-interval
+ :shape="['liquid-fill-gauge']"
+ position="transfer*value"
+ color=""
+ :v-style="{
+ lineWidth: 10,
+ opacity: 0.75
+ }"
+ :tooltip="[
+ 'transfer*value',
+ (transfer, value) => {
+ return {
+ name: transfer,
+ value,
+ };
+ },
+ ]"
+ ></v-interval>
+ <v-guide
+ v-for="(row, index) in data"
+ :key="index"
+ type="text"
+ :top="true"
+ :position="{
+ gender: row.transfer,
+ value: 45
+ }"
+ :content="row.value + '%'"
+ :v-style="{
+ fontSize: 100,
+ textAlign: 'center',
+ opacity: 0.75,
+ }"
+ />
+ </v-chart>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Liquid',
+ props: {
+ height: {
+ type: Number,
+ default: 0
+ },
+ width: {
+ type: Number,
+ default: 0
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue
new file mode 100644
index 0000000..58fe92c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniArea.vue
@@ -0,0 +1,56 @@
+<template>
+ <div class="antv-chart-mini">
+ <div class="chart-wrapper" :style="{ height: 46 }">
+ <v-chart :force-fit="true" :height="height" :data="data" :padding="[36, 0, 18, 0]">
+ <v-tooltip />
+ <v-smooth-area position="x*y" />
+ </v-chart>
+ </div>
+ </div>
+</template>
+
+<script>
+import moment from 'moment'
+const data = []
+const beginDay = new Date().getTime()
+
+for (let i = 0; i < 10; i++) {
+ data.push({
+ x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
+ y: Math.round(Math.random() * 10)
+ })
+}
+
+const tooltip = [
+ 'x*y',
+ (x, y) => ({
+ name: x,
+ value: y
+ })
+]
+const scale = [{
+ dataKey: 'x',
+ min: 2
+}, {
+ dataKey: 'y',
+ title: '鏃堕棿',
+ min: 1,
+ max: 22
+}]
+
+export default {
+ name: 'MiniArea',
+ data () {
+ return {
+ data,
+ tooltip,
+ scale,
+ height: 100
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ @import "chart";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue
new file mode 100644
index 0000000..beac404
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniBar.vue
@@ -0,0 +1,57 @@
+<template>
+ <div class="antv-chart-mini">
+ <div class="chart-wrapper" :style="{ height: 46 }">
+ <v-chart :force-fit="true" :height="height" :data="data" :padding="[36, 5, 18, 5]">
+ <v-tooltip />
+ <v-bar position="x*y" />
+ </v-chart>
+ </div>
+ </div>
+</template>
+
+<script>
+import moment from 'moment'
+const data = []
+const beginDay = new Date().getTime()
+
+for (let i = 0; i < 10; i++) {
+ data.push({
+ x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'),
+ y: Math.round(Math.random() * 10)
+ })
+}
+
+const tooltip = [
+ 'x*y',
+ (x, y) => ({
+ name: x,
+ value: y
+ })
+]
+
+const scale = [{
+ dataKey: 'x',
+ min: 2
+}, {
+ dataKey: 'y',
+ title: '鏃堕棿',
+ min: 1,
+ max: 30
+}]
+
+export default {
+ name: 'MiniBar',
+ data () {
+ return {
+ data,
+ tooltip,
+ scale,
+ height: 100
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ @import "chart";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue
new file mode 100644
index 0000000..e691363
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniProgress.vue
@@ -0,0 +1,75 @@
+<template>
+ <div class="chart-mini-progress">
+ <div class="target" :style="{ left: target + '%'}">
+ <span :style="{ backgroundColor: color }" />
+ <span :style="{ backgroundColor: color }"/>
+ </div>
+ <div class="progress-wrapper">
+ <div class="progress" :style="{ backgroundColor: color, width: percentage + '%', height: height }"></div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'MiniProgress',
+ props: {
+ target: {
+ type: Number,
+ default: 0
+ },
+ height: {
+ type: String,
+ default: '10px'
+ },
+ color: {
+ type: String,
+ default: '#13C2C2'
+ },
+ percentage: {
+ type: Number,
+ default: 0
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .chart-mini-progress {
+ padding: 5px 0;
+ position: relative;
+ width: 100%;
+
+ .target {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+
+ span {
+ border-radius: 100px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 4px;
+ width: 2px;
+
+ &:last-child {
+ top: auto;
+ bottom: 0;
+ }
+ }
+ }
+ .progress-wrapper {
+ background-color: #f5f5f5;
+ position: relative;
+
+ .progress {
+ transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+ border-radius: 1px 0 0 1px;
+ background-color: #1890ff;
+ width: 0;
+ height: 100%;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue
new file mode 100644
index 0000000..e5455c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/MiniSmoothArea.vue
@@ -0,0 +1,40 @@
+<template>
+ <div :class="prefixCls">
+ <div class="chart-wrapper" :style="{ height: 46 }">
+ <v-chart :force-fit="true" :height="100" :data="dataSource" :scale="scale" :padding="[36, 0, 18, 0]">
+ <v-tooltip />
+ <v-smooth-line position="x*y" :size="2" />
+ <v-smooth-area position="x*y" />
+ </v-chart>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'MiniSmoothArea',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-smooth-area'
+ },
+ scale: {
+ type: [Object, Array],
+ required: true
+ },
+ dataSource: {
+ type: Array,
+ required: true
+ }
+ },
+ data () {
+ return {
+ height: 100
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ @import "smooth.area.less";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue
new file mode 100644
index 0000000..5ee88ad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Radar.vue
@@ -0,0 +1,68 @@
+<template>
+ <v-chart :forceFit="true" height="400" :data="data" :padding="[20, 20, 95, 20]" :scale="scale">
+ <v-tooltip></v-tooltip>
+ <v-axis :dataKey="axis1Opts.dataKey" :line="axis1Opts.line" :tickLine="axis1Opts.tickLine" :grid="axis1Opts.grid" />
+ <v-axis :dataKey="axis2Opts.dataKey" :line="axis2Opts.line" :tickLine="axis2Opts.tickLine" :grid="axis2Opts.grid" />
+ <v-legend dataKey="user" marker="circle" :offset="30" />
+ <v-coord type="polar" radius="0.8" />
+ <v-line position="item*score" color="user" :size="2" />
+ <v-point position="item*score" color="user" :size="4" shape="circle" />
+ </v-chart>
+</template>
+
+<script>
+const axis1Opts = {
+ dataKey: 'item',
+ line: null,
+ tickLine: null,
+ grid: {
+ lineStyle: {
+ lineDash: null
+ },
+ hideFirstLine: false
+ }
+}
+const axis2Opts = {
+ dataKey: 'score',
+ line: null,
+ tickLine: null,
+ grid: {
+ type: 'polygon',
+ lineStyle: {
+ lineDash: null
+ }
+ }
+}
+
+const scale = [
+ {
+ dataKey: 'score',
+ min: 0,
+ max: 80
+ }, {
+ dataKey: 'user',
+ alias: '绫诲瀷'
+ }
+]
+
+export default {
+ name: 'Radar',
+ props: {
+ data: {
+ type: Array,
+ default: null
+ }
+ },
+ data () {
+ return {
+ axis1Opts,
+ axis2Opts,
+ scale
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue
new file mode 100644
index 0000000..afb56a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/RankList.vue
@@ -0,0 +1,77 @@
+<template>
+ <div class="rank">
+ <h4 class="title">{{ title }}</h4>
+ <ul class="list">
+ <li :key="index" v-for="(item, index) in list">
+ <span :class="index < 3 ? 'active' : null">{{ index + 1 }}</span>
+ <span>{{ item.name }}</span>
+ <span>{{ item.total }}</span>
+ </li>
+ </ul>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'RankList',
+ // ['title', 'list']
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ list: {
+ type: Array,
+ default: null
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .rank {
+ padding: 0 32px 32px 72px;
+
+ .list {
+ margin: 25px 0 0;
+ padding: 0;
+ list-style: none;
+
+ li {
+ margin-top: 16px;
+
+ span {
+ color: rgba(0, 0, 0, .65);
+ font-size: 14px;
+ line-height: 22px;
+
+ &:first-child {
+ background-color: #f5f5f5;
+ border-radius: 20px;
+ display: inline-block;
+ font-size: 12px;
+ font-weight: 600;
+ margin-right: 24px;
+ height: 20px;
+ line-height: 20px;
+ width: 20px;
+ text-align: center;
+ }
+ &.active {
+ background-color: #314659;
+ color: #fff;
+ }
+ &:last-child {
+ float: right;
+ }
+ }
+ }
+ }
+ }
+
+ .mobile .rank {
+ padding: 0 32px 32px 32px;
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue
new file mode 100644
index 0000000..74d1b3f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TagCloud.vue
@@ -0,0 +1,113 @@
+<template>
+ <v-chart :width="width" :height="height" :padding="[0]" :data="data" :scale="scale">
+ <v-tooltip :show-title="false" />
+ <v-coord type="rect" direction="TL" />
+ <v-point position="x*y" color="category" shape="cloud" tooltip="value*category" />
+ </v-chart>
+</template>
+
+<script>
+import { registerShape } from 'viser-vue'
+const DataSet = require('@antv/data-set')
+
+const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'
+
+const scale = [
+ { dataKey: 'x', nice: false },
+ { dataKey: 'y', nice: false }
+]
+
+registerShape('point', 'cloud', {
+ draw (cfg, container) {
+ return container.addShape('text', {
+ attrs: {
+ fillOpacity: cfg.opacity,
+ fontSize: cfg.origin._origin.size,
+ rotate: cfg.origin._origin.rotate,
+ text: cfg.origin._origin.text,
+ textAlign: 'center',
+ fontFamily: cfg.origin._origin.font,
+ fill: cfg.color,
+ textBaseline: 'Alphabetic',
+ ...cfg.style,
+ x: cfg.x,
+ y: cfg.y
+ }
+ })
+ }
+})
+
+export default {
+ name: 'TagCloud',
+ props: {
+ tagList: {
+ type: Array,
+ required: true
+ },
+ height: {
+ type: Number,
+ default: 400
+ },
+ width: {
+ type: Number,
+ default: 640
+ }
+ },
+ data () {
+ return {
+ data: [],
+ scale
+ }
+ },
+ watch: {
+ tagList: function (val) {
+ if (val.length > 0) {
+ this.initTagCloud(val)
+ }
+ }
+ },
+ mounted () {
+ if (this.tagList.length > 0) {
+ this.initTagCloud(this.tagList)
+ }
+ },
+ methods: {
+ initTagCloud (dataSource) {
+ const { height, width } = this
+
+ const dv = new DataSet.View().source(dataSource)
+ const range = dv.range('value')
+ const min = range[0]
+ const max = range[1]
+ const imageMask = new Image()
+ imageMask.crossOrigin = ''
+ imageMask.src = imgUrl
+ imageMask.onload = () => {
+ dv.transform({
+ type: 'tag-cloud',
+ fields: ['name', 'value'],
+ size: [width, height],
+ imageMask,
+ font: 'Verdana',
+ padding: 0,
+ timeInterval: 5000, // max execute time
+ rotate () {
+ let random = ~~(Math.random() * 4) % 4
+ if (random === 2) {
+ random = 0
+ }
+ return random * 90 // 0, 90, 270
+ },
+ fontSize (d) {
+ if (d.value) {
+ return ((d.value - min) / (max - min)) * (32 - 8) + 8
+ }
+ return 0
+ }
+ })
+ this.data = dv.rows
+ }
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue
new file mode 100644
index 0000000..7f96f0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/TransferBar.vue
@@ -0,0 +1,64 @@
+<template>
+ <div :style="{ padding: '0 0 32px 32px' }">
+ <h4 :style="{ marginBottom: '20px' }">{{ title }}</h4>
+ <v-chart
+ height="254"
+ :data="data"
+ :scale="scale"
+ :forceFit="true"
+ :padding="['auto', 'auto', '40', '50']">
+ <v-tooltip />
+ <v-axis />
+ <v-bar position="x*y"/>
+ </v-chart>
+ </div>
+</template>
+
+<script>
+const tooltip = [
+ 'x*y',
+ (x, y) => ({
+ name: x,
+ value: y
+ })
+]
+const scale = [{
+ dataKey: 'x',
+ title: '鏃ユ湡(澶�)',
+ alias: '鏃ユ湡(澶�)',
+ min: 2
+}, {
+ dataKey: 'y',
+ title: '娴侀噺(Gb)',
+ alias: '娴侀噺(Gb)',
+ min: 1
+}]
+
+export default {
+ name: 'Bar',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ }
+ },
+ data () {
+ return {
+ data: [],
+ scale,
+ tooltip
+ }
+ },
+ created () {
+ this.getMonthBar()
+ },
+ methods: {
+ getMonthBar () {
+ this.$http.get('/analysis/month-bar')
+ .then(res => {
+ this.data = res.result
+ })
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue
new file mode 100644
index 0000000..2dce37e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/Trend.vue
@@ -0,0 +1,82 @@
+<template>
+ <div class="chart-trend">
+ {{ term }}
+ <span>{{ rate }}%</span>
+ <span :class="['trend-icon', trend]"><a-icon :type="'caret-' + trend"/></span>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Trend',
+ props: {
+ term: {
+ type: String,
+ default: '',
+ required: true
+ },
+ percentage: {
+ type: Number,
+ default: null
+ },
+ type: {
+ type: Boolean,
+ default: null
+ },
+ target: {
+ type: Number,
+ default: 0
+ },
+ value: {
+ type: Number,
+ default: 0
+ },
+ fixed: {
+ type: Number,
+ default: 2
+ }
+ },
+ data () {
+ return {
+ trend: this.type && 'up' || 'down',
+ rate: this.percentage
+ }
+ },
+ created () {
+ const type = this.type === null ? this.value >= this.target : this.type
+ this.trend = type ? 'up' : 'down'
+ this.rate = (this.percentage === null ? Math.abs(this.value - this.target) * 100 / this.target : this.percentage).toFixed(this.fixed)
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .chart-trend {
+ display: inline-block;
+ font-size: 14px;
+ line-height: 22px;
+
+ .trend-icon {
+ font-size: 12px;
+
+ &.up, &.down {
+ margin-left: 4px;
+ position: relative;
+ top: 1px;
+
+ i {
+ font-size: 12px;
+ transform: scale(.83);
+ }
+ }
+
+ &.up {
+ color: #f5222d;
+ }
+ &.down {
+ color: #52c41a;
+ top: -1px;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less b/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less
new file mode 100644
index 0000000..e04fa09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/chart.less
@@ -0,0 +1,13 @@
+.antv-chart-mini {
+ position: relative;
+ width: 100%;
+
+ .chart-wrapper {
+ position: absolute;
+ bottom: -28px;
+ width: 100%;
+
+/* margin: 0 -5px;
+ overflow: hidden;*/
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less b/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less
new file mode 100644
index 0000000..eabdb75
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Charts/smooth.area.less
@@ -0,0 +1,14 @@
+@import "../index";
+
+@smoothArea-prefix-cls: ~"@{ant-pro-prefix}-smooth-area";
+
+.@{smoothArea-prefix-cls} {
+ position: relative;
+ width: 100%;
+
+ .chart-wrapper {
+ position: absolute;
+ bottom: -28px;
+ width: 100%;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue b/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue
new file mode 100644
index 0000000..672028c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/ChooseSiteModal.vue
@@ -0,0 +1,110 @@
+<template>
+ <a-modal :title="title" v-model="innerVisible" @ok="onConfirm">
+ <a-form :form="form" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
+ <a-form-item :label="labelText">
+ <a-select v-decorator="rule" placeholder="璇烽�夋嫨..." >
+ <a-select-option v-for="(item,index) in sites" :key="'site-sel-'+index" :value="item">{{ item }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-modal>
+</template>
+
+<script>
+import { BindEntranceGetSelects } from '@/api/modular/main/BindEntranceManage'
+export default {
+ name:'wmsSiteChooseModal',
+ emits:['update:visible','confirm'],
+ props:{
+ type:{
+ type:String,
+ default:'in'
+ },
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ title:'',
+ labelText:'',
+ innerVisible:false,
+ form: this.$form.createForm(this, { name: 'choose-site-form' }),
+ sites:[],
+ rule:['site',{rules:[
+ { required: true, message: '' }
+ ]}]
+ }
+ },
+ watch:{
+ visible(newVal,oldVal){
+ this.changeInnerVisible()
+ },
+ innerVisible(newVal,oldVal){
+ this.changeVisible()
+ }
+ },
+ methods:{
+ changeInnerVisible(){
+ if (this.visible!==this.innerVisible){
+ this.innerVisible = this.visible
+ if (this.innerVisible) {
+ this.$nextTick(()=>{
+ this.opened()
+ })
+ }
+ }
+ },
+ changeVisible(){
+ if (this.innerVisible!==this.visible){
+ this.$emit('update:visible',this.innerVisible)
+ }
+ },
+ opened(){
+ this.initText()
+ this.getSites()
+ },
+ initText(){
+ if (this.type==='in') {
+ this.title="鍏ュ簱鍙i�夋嫨"
+ this.labelText = "鍏ュ簱鍙�"
+ this.rule[1].rules[0].message = "璇烽�夋嫨鍏ュ簱鍙�"
+ } else {
+ this.title="鍑哄簱鍙i�夋嫨"
+ this.labelText = "鍑哄簱鍙�"
+ this.rule[1].rules[0].message = "璇烽�夋嫨鍑哄簱鍙�"
+ }
+ },
+ getSites(){
+ // 鍏ュ簱鍙�
+ if(this.type==='in'){
+ if (this.sites.length===0) {
+ BindEntranceGetSelects().then(d=>{
+ this.sites = d.data || []
+ }).catch(()=>{
+
+ })
+ }
+ }else{
+ // 鍙湁涓�涓嚭搴撳彛
+ this.sites = ["鍑哄簱鍙�"]
+ }
+ },
+ onConfirm(){
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ this.innerVisible = false;
+ this.$emit('confirm',values.site)
+ }
+ });
+ }
+ },
+ created(){
+ this.changeInnerVisible()
+ }
+}
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue
new file mode 100644
index 0000000..575dd4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/CountDown.vue
@@ -0,0 +1,102 @@
+<template>
+ <span>
+ {{ lastTime | format }}
+ </span>
+</template>
+
+<script>
+
+function fixedZero (val) {
+ return val * 1 < 10 ? `0${val}` : val
+}
+
+export default {
+ name: 'CountDown',
+ props: {
+ format: {
+ type: Function,
+ default: undefined
+ },
+ target: {
+ type: [Date, Number],
+ required: true
+ },
+ onEnd: {
+ type: Function,
+ default: () => ({})
+ }
+ },
+ data () {
+ return {
+ dateTime: '0',
+ originTargetTime: 0,
+ lastTime: 0,
+ timer: 0,
+ interval: 1000
+ }
+ },
+ filters: {
+ format (time) {
+ const hours = 60 * 60 * 1000
+ const minutes = 60 * 1000
+
+ const h = Math.floor(time / hours)
+ const m = Math.floor((time - h * hours) / minutes)
+ const s = Math.floor((time - h * hours - m * minutes) / 1000)
+ return `${fixedZero(h)}:${fixedZero(m)}:${fixedZero(s)}`
+ }
+ },
+ created () {
+ this.initTime()
+ this.tick()
+ },
+ methods: {
+ initTime () {
+ let lastTime = 0
+ let targetTime = 0
+ this.originTargetTime = this.target
+ try {
+ if (Object.prototype.toString.call(this.target) === '[object Date]') {
+ targetTime = this.target
+ } else {
+ targetTime = new Date(this.target).getTime()
+ }
+ } catch (e) {
+ throw new Error('invalid target prop')
+ }
+
+ lastTime = targetTime - new Date().getTime()
+
+ this.lastTime = lastTime < 0 ? 0 : lastTime
+ },
+ tick () {
+ const { onEnd } = this
+
+ this.timer = setTimeout(() => {
+ if (this.lastTime < this.interval) {
+ clearTimeout(this.timer)
+ this.lastTime = 0
+ if (typeof onEnd === 'function') {
+ onEnd()
+ }
+ } else {
+ this.lastTime -= this.interval
+ this.tick()
+ }
+ }, this.interval)
+ }
+ },
+ beforeUpdate () {
+ if (this.originTargetTime !== this.target) {
+ this.initTime()
+ }
+ },
+ beforeDestroy () {
+ clearTimeout(this.timer)
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js
new file mode 100644
index 0000000..35e954f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.js
@@ -0,0 +1,3 @@
+import CountDown from './CountDown'
+
+export default CountDown
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md
new file mode 100644
index 0000000..fd46809
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/CountDown/index.md
@@ -0,0 +1,34 @@
+# CountDown 鍊掕鏃�
+
+鍊掕鏃剁粍浠躲��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import CountDown from '@/components/CountDown/CountDown'
+
+export default {
+ components: {
+ CountDown
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず [demo](https://pro.loacg.com/test/home)
+
+```html
+<count-down :target="new Date().getTime() + 3000000" :on-end="onEndHandle" />
+```
+
+
+
+## API
+
+| 鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+|----------|------------------------------------------|-------------|-------|
+| target | 鐩爣鏃堕棿 | Date | - |
+| onEnd | 鍊掕鏃剁粨鏉熷洖璋� | funtion | -|
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue
new file mode 100644
index 0000000..5203efd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/DepartmentSelect.vue
@@ -0,0 +1,48 @@
+ <template>
+ <a-tree-select
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ allowClear
+ :treeData="orgTree"
+ :placeholder="placeholder"
+ treeDefaultExpandAll
+ @change="onchange"
+ >
+ <span slot="title" slot-scope="{ id }">{{ id }}</span>
+ </a-tree-select>
+</template>
+<script>
+import { getOrgTree } from '@/api/modular/system/orgManage'
+
+export default {
+ name: 'DepartSelect',
+ props: {
+ placeholder: {
+ type: String
+ },
+ value: {
+ type: String
+ }
+ },
+ data() {
+ return {
+ orgTree: []
+ }
+ },
+ created() {
+ this.getOrgData()
+ },
+ methods: {
+ getOrgData() {
+ getOrgTree().then((res) => {
+ this.orgTree = res
+ })
+ },
+ /**
+ * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+ */
+ onchange (value) {
+ this.$emit('change', value)
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js
new file mode 100644
index 0000000..68ac87d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DepartmentSelect/index.js
@@ -0,0 +1,3 @@
+import DepartmentSelect from './DepartmentSelect'
+
+export default DepartmentSelect
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue
new file mode 100644
index 0000000..7f98fec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/DescriptionList.vue
@@ -0,0 +1,153 @@
+<template>
+ <div :class="['description-list', size, layout === 'vertical' ? 'vertical': 'horizontal']">
+ <div v-if="title" class="title">{{ title }}</div>
+ <a-row>
+ <slot></slot>
+ </a-row>
+ </div>
+</template>
+
+<script>
+import { Col } from 'ant-design-vue/es/grid/'
+
+const Item = {
+ name: 'DetailListItem',
+ props: {
+ term: {
+ type: String,
+ default: '',
+ required: false
+ }
+ },
+ inject: {
+ col: {
+ type: Number
+ }
+ },
+ render () {
+ return (
+ <Col {...{ props: responsive[this.col] }}>
+ <div class="term">{this.$props.term}</div>
+ <div class="content">{this.$slots.default}</div>
+ </Col>
+ )
+ }
+}
+
+const responsive = {
+ 1: { xs: 24 },
+ 2: { xs: 24, sm: 12 },
+ 3: { xs: 24, sm: 12, md: 8 },
+ 4: { xs: 24, sm: 12, md: 6 }
+}
+
+export default {
+ name: 'DetailList',
+ Item: Item,
+ components: {
+ Col
+ },
+ props: {
+ title: {
+ type: String,
+ default: '',
+ required: false
+ },
+ col: {
+ type: Number,
+ required: false,
+ default: 3
+ },
+ size: {
+ type: String,
+ required: false,
+ default: 'large'
+ },
+ layout: {
+ type: String,
+ required: false,
+ default: 'horizontal'
+ }
+ },
+ provide () {
+ return {
+ col: this.col > 4 ? 4 : this.col
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .description-list {
+
+ .title {
+ color: rgba(0,0,0,.85);
+ font-size: 14px;
+ font-weight: 500;
+ margin-bottom: 16px;
+ }
+
+ /deep/ .term {
+ color: rgba(0,0,0,.85);
+ display: table-cell;
+ line-height: 20px;
+ margin-right: 8px;
+ padding-bottom: 16px;
+ white-space: nowrap;
+
+ &:not(:empty):after {
+ content: ":";
+ margin: 0 8px 0 2px;
+ position: relative;
+ top: -.5px;
+ }
+ }
+
+ /deep/ .content {
+ color: rgba(0,0,0,.65);
+ display: table-cell;
+ min-height: 22px;
+ line-height: 22px;
+ padding-bottom: 16px;
+ width: 100%;
+ &:empty {
+ content: ' ';
+ height: 38px;
+ padding-bottom: 16px;
+ }
+ }
+
+ &.small {
+
+ .title {
+ font-size: 14px;
+ color: rgba(0, 0, 0, .65);
+ font-weight: normal;
+ margin-bottom: 12px;
+ }
+ /deep/ .term, .content {
+ padding-bottom: 8px;
+ }
+ }
+
+ &.large {
+ /deep/ .term, .content {
+ padding-bottom: 16px;
+ }
+
+ .title {
+ font-size: 16px;
+ }
+ }
+
+ &.vertical {
+ .term {
+ padding-bottom: 8px;
+ }
+ /deep/ .term, .content {
+ display: block;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js
new file mode 100644
index 0000000..7aed83d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/DescriptionList/index.js
@@ -0,0 +1,2 @@
+import DescriptionList from './DescriptionList'
+export default DescriptionList
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js b/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js
new file mode 100644
index 0000000..78e95b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Dialog.js
@@ -0,0 +1,113 @@
+import Modal from 'ant-design-vue/es/modal'
+export default (Vue) => {
+ function dialog (component, componentProps, modalProps) {
+ const _vm = this
+ modalProps = modalProps || {}
+ if (!_vm || !_vm._isVue) {
+ return
+ }
+ let dialogDiv = document.querySelector('body>div[type=dialog]')
+ if (!dialogDiv) {
+ dialogDiv = document.createElement('div')
+ dialogDiv.setAttribute('type', 'dialog')
+ document.body.appendChild(dialogDiv)
+ }
+
+ const handle = function (checkFunction, afterHandel) {
+ if (checkFunction instanceof Function) {
+ const res = checkFunction()
+ if (res instanceof Promise) {
+ res.then(c => {
+ c && afterHandel()
+ })
+ } else {
+ res && afterHandel()
+ }
+ } else {
+ // checkFunction && afterHandel()
+ checkFunction || afterHandel()
+ }
+ }
+
+ const dialogInstance = new Vue({
+ data () {
+ return {
+ visible: true
+ }
+ },
+ router: _vm.$router,
+ store: _vm.$store,
+ mounted () {
+ this.$on('close', (v) => {
+ this.handleClose()
+ })
+ },
+ methods: {
+ handleClose () {
+ handle(this.$refs._component.onCancel, () => {
+ this.visible = false
+ this.$refs._component.$emit('close')
+ this.$refs._component.$emit('cancel')
+ dialogInstance.$destroy()
+ })
+ },
+ handleOk () {
+ handle(this.$refs._component.onOK || this.$refs._component.onOk, () => {
+ this.visible = false
+ this.$refs._component.$emit('close')
+ this.$refs._component.$emit('ok')
+ dialogInstance.$destroy()
+ })
+ }
+ },
+ render: function (h) {
+ const that = this
+ const modalModel = modalProps && modalProps.model
+ if (modalModel) {
+ delete modalProps.model
+ }
+ const ModalProps = Object.assign({}, modalModel && { model: modalModel } || {}, {
+ attrs: Object.assign({}, {
+ ...(modalProps.attrs || modalProps)
+ }, {
+ visible: this.visible
+ }),
+ on: Object.assign({}, {
+ ...(modalProps.on || modalProps)
+ }, {
+ ok: () => {
+ that.handleOk()
+ },
+ cancel: () => {
+ that.handleClose()
+ }
+ })
+ })
+
+ const componentModel = componentProps && componentProps.model
+ if (componentModel) {
+ delete componentProps.model
+ }
+ const ComponentProps = Object.assign({}, componentModel && { model: componentModel } || {}, {
+ ref: '_component',
+ attrs: Object.assign({}, {
+ ...((componentProps && componentProps.attrs) || componentProps)
+ }),
+ on: Object.assign({}, {
+ ...((componentProps && componentProps.on) || componentProps)
+ })
+ })
+
+ return h(Modal, ModalProps, [h(component, ComponentProps)])
+ }
+ }).$mount(dialogDiv)
+ }
+
+ Object.defineProperty(Vue.prototype, '$dialog', {
+ get: () => {
+ return function () {
+ dialog.apply(this, arguments)
+ }
+ }
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue b/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue
new file mode 100644
index 0000000..13524cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Editor/QuillEditor.vue
@@ -0,0 +1,78 @@
+<template>
+ <div :class="prefixCls">
+ <quill-editor
+ v-model="content"
+ ref="myQuillEditor"
+ :options="editorOption"
+ @blur="onEditorBlur($event)"
+ @focus="onEditorFocus($event)"
+ @ready="onEditorReady($event)"
+ @change="onEditorChange($event)">
+ </quill-editor>
+
+ </div>
+</template>
+
+<script>
+import 'quill/dist/quill.core.css'
+import 'quill/dist/quill.snow.css'
+import 'quill/dist/quill.bubble.css'
+
+import { quillEditor } from 'vue-quill-editor'
+
+export default {
+ name: 'QuillEditor',
+ components: {
+ quillEditor
+ },
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-editor-quill'
+ },
+ // 琛ㄥ崟鏍¢獙鐢ㄥ瓧娈�
+ // eslint-disable-next-line
+ value: {
+ type: String
+ }
+ },
+ data () {
+ return {
+ content: null,
+ editorOption: {
+ // some quill options
+ }
+ }
+ },
+ methods: {
+ onEditorBlur (quill) {
+ },
+ onEditorFocus (quill) {
+ },
+ onEditorReady (quill) {
+ },
+ onEditorChange ({ quill, html, text }) {
+ this.$emit('change', html)
+ }
+ },
+ watch: {
+ value (val) {
+ this.content = val
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+@import url('../index.less');
+
+/* 瑕嗙洊 quill 榛樿杈规鍦嗚涓� ant 榛樿鍦嗚锛岀敤浜庣粺涓� ant 缁勪欢椋庢牸 */
+.ant-editor-quill {
+ /deep/ .ql-toolbar.ql-snow {
+ border-radius: @border-radius-base @border-radius-base 0 0;
+ }
+ /deep/ .ql-container.ql-snow {
+ border-radius: 0 0 @border-radius-base @border-radius-base;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue
new file mode 100644
index 0000000..7a79a9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Editor/WangEditor.vue
@@ -0,0 +1,126 @@
+<template>
+ <div>
+ <div id="editor" ref="myEditor"></div>
+ <slot></slot>
+ </div>
+</template>
+<script>
+ import WangEditor from 'wangeditor'
+ export default {
+ name: 'ComponentWangeditor',
+ data () {
+ return {
+ edit: ''
+ }
+ },
+ props: {
+ value: {
+ type: String,
+ default: ''
+ },
+ config: {
+ type: Object,
+ default: () => {
+ return {}
+ }
+ },
+ uploadConfig: {
+ type: Object,
+ default: () => {
+ return {
+ method: 'http', // 鏀寔custom(objurl)鍜宧ttp(鏈嶅姟鍣�)鍜宐ase64
+ url: '/'
+ }
+ }
+ }
+ },
+ computed: {
+ customConfig () {
+ return {
+ pasteFilterStyle: false, // 鍏抽棴鎺夌矘璐存牱寮忕殑杩囨护
+ pasteIgnoreImg: false, // 绮樿创鏃朵笉蹇界暐鍥剧墖
+ ...this.config
+ }
+ }
+ },
+ watch: {
+
+ },
+ components: {
+
+ },
+ methods: {
+ readBlobAsDataURL (blob, callback) {
+ var a = new FileReader()
+ a.onload = function (e) { callback(e.target.result) }
+ a.readAsDataURL(blob)
+ },
+ initEditor () {
+ var self = this
+ this.editor = new WangEditor(this.$refs.myEditor)
+ // 閰嶇疆 onchange 浜嬩欢
+ this.editor.customConfig = this.customConfig
+ this.editor.customConfig.uploadImgMaxLength = 5
+ this.editor.change = function () { // 缂栬緫鍖哄煙鍐呭鍙樺寲鏃�
+ self.$emit('input', this.txt.html())
+ self.$emit('onchange', this.txt.html(), this.txt)
+ // editor.txt.html('.....') //璁剧疆缂栬緫鍣ㄥ唴瀹�
+ // editor.txt.clear() //娓呯┖缂栬緫鍣ㄥ唴瀹�
+ // editor.txt.append('<p>杩藉姞鐨勫唴瀹�</p>')//缁х画杩藉姞鍐呭銆�
+ // editor.txt.text() // 璇诲彇 text
+ // editor.txt.getJSON() // 鑾峰彇 JSON 鏍煎紡鐨勫唴瀹�
+ }
+ this.editor.customConfig.customUploadImg = function (files, insert) {
+ if (self.uploadConfig.method === 'custom') {
+ files.forEach(file => {
+ var fileUrl = URL.createObjectURL(file)
+ insert(fileUrl)
+ })
+ }
+ if (self.uploadConfig.method === 'base64') {
+ files.forEach(file => {
+ self.readBlobAsDataURL(file, function (dataurl) {
+ insert(dataurl)
+ })
+ })
+ }
+ if (self.uploadConfig.method === 'http') {
+ if (self.uploadConfig.callback) {
+ self.uploadConfig.callback(files, insert)
+ } else {
+ var formData = new FormData()
+ files.forEach(file => {
+ formData.append('file', file)
+ })
+ self.$axios.post(self.uploadConfig.url, formData).then(({ data }) => {
+ if (data.status === 'success') {
+ insert(data.url)
+ }
+ })
+ }
+ }
+ }
+
+ this.editor.create() // 鐢熸垚缂栬緫鍣�
+ this.editor.txt.text(this.value) // 鐢熸垚缂栬緫鍣�
+ this.$emit('oninit', this.editor)
+ }
+ },
+ beforeCreate () {
+ },
+ created () {
+ },
+ beforeMount () {
+ },
+ mounted () {
+ this.initEditor()
+ }
+ }
+</script>
+
+<style >
+ .w-e-toolbar{
+ flex-wrap:wrap;
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue
new file mode 100644
index 0000000..5d59200
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/Ellipsis.vue
@@ -0,0 +1,64 @@
+<script>
+import Tooltip from 'ant-design-vue/es/tooltip'
+import { cutStrByFullLength, getStrFullLength } from '@/components/_util/util'
+/*
+ const isSupportLineClamp = document.body.style.webkitLineClamp !== undefined;
+
+ const TooltipOverlayStyle = {
+ overflowWrap: 'break-word',
+ wordWrap: 'break-word',
+ };
+ */
+
+export default {
+ name: 'Ellipsis',
+ components: {
+ Tooltip
+ },
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-ellipsis'
+ },
+ tooltip: {
+ type: Boolean
+ },
+ length: {
+ type: Number,
+ required: true
+ },
+ lines: {
+ type: Number,
+ default: 1
+ },
+ fullWidthRecognition: {
+ type: Boolean,
+ default: false
+ }
+ },
+ methods: {
+ getStrDom (str, fullLength) {
+ return (
+ <span>{ cutStrByFullLength(str, this.length) + (fullLength > this.length ? '...' : '') }</span>
+ )
+ },
+ getTooltip (fullStr, fullLength) {
+ return (
+ <Tooltip>
+ <template slot="title">{ fullStr }</template>
+ { this.getStrDom(fullStr, fullLength) }
+ </Tooltip>
+ )
+ }
+ },
+ render () {
+ const { tooltip, length } = this.$props
+ const str = this.$slots.default.map(vNode => vNode.text).join('')
+ const fullLength = getStrFullLength(str)
+ const strDom = tooltip && fullLength > length ? this.getTooltip(str, fullLength) : this.getStrDom(str, fullLength)
+ return (
+ strDom
+ )
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js
new file mode 100644
index 0000000..91e3ff4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.js
@@ -0,0 +1,3 @@
+import Ellipsis from './Ellipsis'
+
+export default Ellipsis
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md
new file mode 100644
index 0000000..f528ac7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Ellipsis/index.md
@@ -0,0 +1,38 @@
+# Ellipsis 鏂囨湰鑷姩鐪佺暐鍙�
+
+鏂囨湰杩囬暱鑷姩澶勭悊鐪佺暐鍙凤紝鏀寔鎸夌収鏂囨湰闀垮害鍜屾渶澶ц鏁颁袱绉嶆柟寮忔埅鍙栥��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import Ellipsis from '@/components/Ellipsis'
+
+export default {
+ components: {
+ Ellipsis
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず [demo](https://pro.loacg.com/test/home)
+
+```html
+<ellipsis :length="100" tooltip>
+ There were injuries alleged in three cases in 2015, and a
+ fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
+</ellipsis>
+```
+
+
+
+## API
+
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+tooltip | 绉诲姩鍒版枃鏈睍绀哄畬鏁村唴瀹圭殑鎻愮ず | boolean | -
+length | 鍦ㄦ寜鐓ч暱搴︽埅鍙栦笅鐨勬枃鏈渶澶у瓧绗︽暟锛岃秴杩囧垯鎴彇鐪佺暐 | number | -
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue b/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue
new file mode 100644
index 0000000..832896c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/ExceptionPage.vue
@@ -0,0 +1,130 @@
+<template>
+ <div class="exception">
+ <div class="imgBlock">
+ <div class="imgEle" :style="{backgroundImage: `url(${config[type].img})`}">
+ </div>
+ </div>
+ <div class="content">
+ <h1>{{ config[type].title }}</h1>
+ <div class="desc">{{ config[type].desc }}</div>
+ <div class="actions">
+ <a-button type="primary" @click="handleToHome">杩斿洖棣栭〉</a-button>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import types from './type'
+
+export default {
+ name: 'Exception',
+ props: {
+ type: {
+ type: String,
+ default: '404'
+ }
+ },
+ data () {
+ return {
+ config: types
+ }
+ },
+ methods: {
+ handleToHome () {
+ this.$router.push({ name: 'Console' })
+ }
+ }
+}
+</script>
+<style lang="less">
+@import "~ant-design-vue/lib/style/index";
+
+.exception {
+ display: flex;
+ align-items: center;
+ height: 80%;
+ min-height: 500px;
+
+ .imgBlock {
+ flex: 0 0 62.5%;
+ width: 62.5%;
+ padding-right: 152px;
+ zoom: 1;
+ &::before,
+ &::after {
+ content: ' ';
+ display: table;
+ }
+ &::after {
+ clear: both;
+ height: 0;
+ font-size: 0;
+ visibility: hidden;
+ }
+ }
+
+ .imgEle {
+ float: right;
+ width: 100%;
+ max-width: 430px;
+ height: 360px;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ background-size: contain;
+ }
+
+ .content {
+ flex: auto;
+
+ h1 {
+ margin-bottom: 24px;
+ color: #434e59;
+ font-weight: 600;
+ font-size: 72px;
+ line-height: 72px;
+ }
+
+ .desc {
+ margin-bottom: 16px;
+ color: @text-color-secondary;
+ font-size: 20px;
+ line-height: 28px;
+ }
+
+ .actions {
+ button:not(:last-child) {
+ margin-right: 8px;
+ }
+ }
+ }
+}
+
+@media screen and (max-width: @screen-xl) {
+ .exception {
+ .imgBlock {
+ padding-right: 88px;
+ }
+ }
+}
+
+@media screen and (max-width: @screen-sm) {
+ .exception {
+ display: block;
+ text-align: center;
+ .imgBlock {
+ margin: 0 auto 24px;
+ padding-right: 0;
+ }
+ }
+}
+
+@media screen and (max-width: @screen-xs) {
+ .exception {
+ .imgBlock {
+ margin-bottom: -24px;
+ overflow: hidden;
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js
new file mode 100644
index 0000000..dda91be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/index.js
@@ -0,0 +1,2 @@
+import ExceptionPage from './ExceptionPage.vue'
+export default ExceptionPage
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js b/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js
new file mode 100644
index 0000000..8158f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Exception/type.js
@@ -0,0 +1,19 @@
+const types = {
+ 403: {
+ img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
+ title: '403',
+ desc: '鎶辨瓑锛屼綘鏃犳潈璁块棶璇ラ〉闈�'
+ },
+ 404: {
+ img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg',
+ title: '404',
+ desc: '鎶辨瓑锛屼綘璁块棶鐨勯〉闈笉瀛樺湪鎴栦粛鍦ㄥ紑鍙戜腑'
+ },
+ 500: {
+ img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
+ title: '500',
+ desc: '鎶辨瓑锛屾湇鍔″櫒鍑洪敊浜�'
+ }
+}
+
+export default types
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue
new file mode 100644
index 0000000..f4056dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/FooterToolBar.vue
@@ -0,0 +1,30 @@
+<template>
+ <div :class="prefixCls">
+ <div style="float: left">
+ <slot name="extra">{{ extra }}</slot>
+ </div>
+ <div style="float: right">
+ <slot></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'FooterToolBar',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-footer-toolbar'
+ },
+ extra: {
+ type: [String, Object],
+ default: ''
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js
new file mode 100644
index 0000000..a0bf145
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.js
@@ -0,0 +1,4 @@
+import FooterToolBar from './FooterToolBar'
+import './index.less'
+
+export default FooterToolBar
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less
new file mode 100644
index 0000000..f56273f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.less
@@ -0,0 +1,23 @@
+@import "../index";
+
+@footer-toolbar-prefix-cls: ~"@{ant-pro-prefix}-footer-toolbar";
+
+.@{footer-toolbar-prefix-cls} {
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ right: 0;
+ height: 56px;
+ line-height: 56px;
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.03);
+ background: #fff;
+ border-top: 1px solid #e8e8e8;
+ padding: 0 24px;
+ z-index: 9;
+
+ &:after {
+ content: "";
+ display: block;
+ clear: both;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md
new file mode 100644
index 0000000..c1aec2c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/FooterToolbar/index.md
@@ -0,0 +1,48 @@
+# FooterToolbar 搴曢儴宸ュ叿鏍�
+
+鍥哄畾鍦ㄥ簳閮ㄧ殑宸ュ叿鏍忋��
+
+
+
+## 浣曟椂浣跨敤
+
+鍥哄畾鍦ㄥ唴瀹瑰尯鍩熺殑搴曢儴锛屼笉闅忔粴鍔ㄦ潯绉诲姩锛屽父鐢ㄤ簬闀块〉闈㈢殑鏁版嵁鎼滈泦鍜屾彁浜ゅ伐浣溿��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import FooterToolBar from '@/components/FooterToolbar'
+
+export default {
+ components: {
+ FooterToolBar
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず
+
+```html
+<footer-tool-bar>
+ <a-button type="primary" @click="validate" :loading="loading">鎻愪氦</a-button>
+</footer-tool-bar>
+```
+鎴�
+```html
+<footer-tool-bar extra="鎵╁睍淇℃伅鎻愮ず">
+ <a-button type="primary" @click="validate" :loading="loading">鎻愪氦</a-button>
+</footer-tool-bar>
+```
+
+
+## API
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+children (slot) | 宸ュ叿鏍忓唴瀹癸紝鍚戝彸瀵归綈 | - | -
+extra | 棰濆淇℃伅锛屽悜宸﹀榻� | String, Object | -
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue
new file mode 100644
index 0000000..9dc8a99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/GlobalFooter.vue
@@ -0,0 +1,46 @@
+<template>
+ <div class="footer">
+ <div class="links">
+ </div>
+ <div class="copyright">
+ 鐗堟潈鎵�鏈� Copyright漏浼熸湰鏅鸿兘鏈虹數(涓婃捣)鑲′唤鏈夐檺鍏徃
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'GlobalFooter',
+ data () {
+ return {}
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.footer {
+ padding: 0 16px;
+ margin: 0 0 10px;
+ text-align: center;
+
+ .links {
+ margin-bottom: 8px;
+
+ a {
+ color: rgba(0, 0, 0, 0.45);
+
+ &:hover {
+ color: rgba(0, 0, 0, 0.65);
+ }
+
+ &:not(:last-child) {
+ margin-right: 40px;
+ }
+ }
+ }
+ .copyright {
+ color: rgba(0, 0, 0, 0.45);
+ font-size: 14px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js
new file mode 100644
index 0000000..832e0bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalFooter/index.js
@@ -0,0 +1,2 @@
+import GlobalFooter from './GlobalFooter'
+export default GlobalFooter
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue
new file mode 100644
index 0000000..bccb7f8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/GlobalHeader.vue
@@ -0,0 +1,194 @@
+<template>
+ <transition name="showHeader">
+ <div v-if="visible" class="header-animat">
+ <a-layout-header
+ v-if="visible"
+ :class="[fixedHeader && 'ant-header-fixedHeader', sidebarOpened ? 'ant-header-side-opened' : 'ant-header-side-closed', ]"
+ :style="{ padding: '0', height: '55px' }">
+ <div v-if="mode === 'sidemenu'" class="header">
+
+ <a-menu style="height: 55px; border-bottom: 0px;" mode="horizontal" :default-selected-keys="this.defApp">
+ <a-icon
+ v-if="device==='mobile'"
+ class="trigger"
+ :type="collapsed ? 'menu-fold' : 'menu-unfold'"
+ @click="toggle" />
+ <a-icon
+ v-else
+ class="trigger"
+ :type="collapsed ? 'menu-unfold' : 'menu-fold'"
+ @click="toggle"
+ style="padding-left: 20px; padding-right: 20px;" />
+
+ <a-menu-item
+ v-for="(item) in userInfo.apps"
+ :key="item.code"
+ style="top:0px; line-height: 55px; padding-left: 10px; padding-right: 10px"
+ @click="switchApp(item.code)">
+ {{ item.name }}
+ </a-menu-item>
+ <user-menu></user-menu>
+ </a-menu>
+
+ </div>
+ <div v-else :class="['top-nav-header-index', theme]">
+
+ <div class="header-index-wide">
+ <div class="header-index-left">
+ <logo class="top-nav-header" :show-title="device !== 'mobile'" />
+ <s-menu v-if="device !== 'mobile'" mode="horizontal" :menu="menus" :theme="theme" />
+ <a-icon v-else class="trigger" :type="collapsed ? 'menu-fold' : 'menu-unfold'" @click="toggle" />
+ </div>
+ <user-menu class="header-index-right"></user-menu>
+ </div>
+ </div>
+ </a-layout-header>
+ </div>
+ </transition>
+</template>
+
+<script>
+ import UserMenu from '../tools/UserMenu'
+ import SMenu from '../Menu/'
+ import Logo from '../tools/Logo'
+ import {
+ mixin
+ } from '@/utils/mixin'
+ import {
+ mapActions,
+ mapGetters
+ } from 'vuex'
+ import {
+ ALL_APPS_MENU
+ } from '@/store/mutation-types'
+ import Vue from 'vue'
+ import {
+ message
+ } from 'ant-design-vue/es'
+ import Enumerable from 'linq'
+
+ export default {
+ name: 'GlobalHeader',
+ components: {
+ UserMenu,
+ SMenu,
+ Logo
+ },
+ computed: {
+ ...mapGetters(['userInfo'])
+ },
+ created() {
+ // this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+ var defautMenu = Enumerable.from(Vue.ls.get(ALL_APPS_MENU)).firstOrDefault(x => x.active === 'Y')
+ if (defautMenu !== undefined) {
+ this.defApp.push(defautMenu.code)
+ }
+ },
+ mixins: [mixin],
+ props: {
+ mode: {
+ type: String,
+ // sidemenu, topmenu
+ default: 'sidemenu'
+ },
+ menus: {
+ type: Array,
+ required: true
+ },
+ theme: {
+ type: String,
+ required: false,
+ default: 'dark'
+ },
+ collapsed: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ device: {
+ type: String,
+ required: false,
+ default: 'desktop'
+ }
+ },
+ data() {
+ return {
+ visible: true,
+ oldScrollTop: 0,
+ defApp: []
+ }
+ },
+ mounted() {
+ document.addEventListener('scroll', this.handleScroll, {
+ passive: true
+ })
+ },
+ methods: {
+ ...mapActions(['MenuChange']),
+
+ /**
+ * 搴旂敤鍒囨崲
+ */
+ switchApp(appCode) {
+ this.defApp = []
+ const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+ const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+ this.MenuChange(applicationData[0]).then((res) => {
+ hideMessage()
+ // eslint-disable-next-line handle-callback-err
+ }).catch((err) => {
+ message.error('搴旂敤鍒囨崲寮傚父')
+ })
+ },
+ handleScroll() {
+ if (!this.autoHideHeader) {
+ return
+ }
+
+ const scrollTop = document.body.scrollTop + document.documentElement.scrollTop
+ if (!this.ticking) {
+ this.ticking = true
+ requestAnimationFrame(() => {
+ if (this.oldScrollTop > scrollTop) {
+ this.visible = true
+ } else if (scrollTop > 300 && this.visible) {
+ this.visible = false
+ } else if (scrollTop < 300 && !this.visible) {
+ this.visible = true
+ }
+ this.oldScrollTop = scrollTop
+ this.ticking = false
+ })
+ }
+ },
+ toggle() {
+ this.$emit('toggle')
+ }
+ },
+ beforeDestroy() {
+ document.body.removeEventListener('scroll', this.handleScroll, true)
+ }
+ }
+</script>
+
+<style lang="less">
+ @import '../index.less';
+
+ .header-animat {
+ position: relative;
+ z-index: @ant-global-header-zindex;
+ }
+
+ .showHeader-enter-active {
+ transition: all 0.25s ease;
+ }
+
+ .showHeader-leave-active {
+ transition: all 0.5s ease;
+ }
+
+ .showHeader-enter,
+ .showHeader-leave-to {
+ opacity: 0;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js
new file mode 100644
index 0000000..0807c87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/GlobalHeader/index.js
@@ -0,0 +1,2 @@
+import GlobalHeader from './GlobalHeader'
+export default GlobalHeader
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue
new file mode 100644
index 0000000..810d297
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/IconSelector.vue
@@ -0,0 +1,86 @@
+<template>
+ <div :class="prefixCls">
+ <a-tabs v-model="currentTab" @change="handleTabChange">
+ <a-tab-pane v-for="v in icons" :tab="v.title" :key="v.key">
+ <ul>
+ <li v-for="(icon, key) in v.icons" :key="`${v.key}-${key}`" :class="{ 'active': selectedIcon==icon }" @click="handleSelectedIcon(icon)" >
+ <a-icon :type="icon" :style="{ fontSize: '36px' }" />
+ </li>
+ </ul>
+ </a-tab-pane>
+ </a-tabs>
+ </div>
+</template>
+
+<script>
+import icons from './icons'
+
+export default {
+ name: 'IconSelect',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-icon-selector'
+ },
+ // eslint-disable-next-line
+ value: {
+ type: String
+ }
+ },
+ data () {
+ return {
+ selectedIcon: this.value || '',
+ currentTab: 'directional',
+ icons
+ }
+ },
+ watch: {
+ value (val) {
+ this.selectedIcon = val
+ this.autoSwitchTab()
+ }
+ },
+ created () {
+ if (this.value) {
+ this.autoSwitchTab()
+ }
+ },
+ methods: {
+ handleSelectedIcon (icon) {
+ this.selectedIcon = icon
+ this.$emit('change', icon)
+ },
+ handleTabChange (activeKey) {
+ this.currentTab = activeKey
+ },
+ autoSwitchTab () {
+ icons.some(item => item.icons.some(icon => icon === this.value) && (this.currentTab = item.key))
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ @import "../index.less";
+
+ ul{
+ list-style: none;
+ padding: 0;
+ overflow-y: scroll;
+ height: 250px;
+
+ li{
+ display: inline-block;
+ padding: @padding-sm;
+ margin: 3px 0;
+ border-radius: @border-radius-base;
+
+ &:hover, &.active{
+ // box-shadow: 0px 0px 5px 2px @primary-color;
+ cursor: pointer;
+ color: @white;
+ background-color: @primary-color;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md
new file mode 100644
index 0000000..49e25b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/README.md
@@ -0,0 +1,47 @@
+IconSelector
+====
+
+> 鍥炬爣閫夋嫨缁勪欢锛屽父鐢ㄤ簬涓烘煇涓�涓暟鎹瀹氫竴涓浘鏍囨椂浣跨敤
+> eg: 璁惧畾鑿滃崟鍒楄〃鏃讹紝涓烘瘡涓彍鍗曡瀹氫竴涓浘鏍�
+
+璇ョ粍浠剁敱 [@Saraka](https://github.com/saraka-tsukai) 灏佽
+
+
+
+### 浣跨敤鏂瑰紡
+
+```vue
+<template>
+ <div>
+ <icon-selector @change="handleIconChange"/>
+ </div>
+</template>
+
+<script>
+import IconSelector from '@/components/IconSelector'
+
+export default {
+ name: 'YourView',
+ components: {
+ IconSelector
+ },
+ data () {
+ return {
+ }
+ },
+ methods: {
+ handleIconChange (icon) {
+ }
+ }
+}
+</script>
+```
+
+
+
+### 浜嬩欢
+
+
+| 鍚嶇О | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+| ------ | -------------------------- | ------ | ------ |
+| change | 褰撴敼鍙樹簡 `icon` 閫変腑椤硅Е鍙� | String | - |
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js
new file mode 100644
index 0000000..2afc40a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/icons.js
@@ -0,0 +1,36 @@
+/**
+ * 澧炲姞鏂扮殑鍥炬爣鏃讹紝璇烽伒寰互涓嬫暟鎹粨鏋�
+ * Adding new icon please follow the data structure below
+ */
+export default [
+ {
+ key: 'directional',
+ title: '鏂瑰悜鎬у浘鏍�',
+ icons: ['step-backward', 'step-forward', 'fast-backward', 'fast-forward', 'shrink', 'arrows-alt', 'down', 'up', 'left', 'right', 'caret-up', 'caret-down', 'caret-left', 'caret-right', 'up-circle', 'down-circle', 'left-circle', 'right-circle', 'double-right', 'double-left', 'vertical-left', 'vertical-right', 'forward', 'backward', 'rollback', 'enter', 'retweet', 'swap', 'swap-left', 'swap-right', 'arrow-up', 'arrow-down', 'arrow-left', 'arrow-right', 'play-circle', 'up-square', 'down-square', 'left-square', 'right-square', 'login', 'logout', 'menu-fold', 'menu-unfold', 'border-bottom', 'border-horizontal', 'border-inner', 'border-left', 'border-right', 'border-top', 'border-verticle', 'pic-center', 'pic-left', 'pic-right', 'radius-bottomleft', 'radius-bottomright', 'radius-upleft', 'fullscreen', 'fullscreen-exit']
+ },
+ {
+ key: 'suggested',
+ title: '鎻愮ず寤鸿鎬у浘鏍�',
+ icons: ['question', 'question-circle', 'plus', 'plus-circle', 'pause', 'pause-circle', 'minus', 'minus-circle', 'plus-square', 'minus-square', 'info', 'info-circle', 'exclamation', 'exclamation-circle', 'close', 'close-circle', 'close-square', 'check', 'check-circle', 'check-square', 'clock-circle', 'warning', 'issues-close', 'stop']
+ },
+ {
+ key: 'editor',
+ title: '缂栬緫绫诲浘鏍�',
+ icons: ['edit', 'form.vue', 'copy', 'scissor', 'delete', 'snippets', 'diff', 'highlight', 'align-center', 'align-left', 'align-right', 'bg-colors', 'bold', 'italic', 'underline', 'strikethrough', 'redo', 'undo', 'zoom-in', 'zoom-out', 'font-colors', 'font-size', 'line-height', 'column-height', 'dash', 'small-dash', 'sort-ascending', 'sort-descending', 'drag', 'ordered-list', 'radius-setting']
+ },
+ {
+ key: 'data',
+ title: '鏁版嵁绫诲浘鏍�',
+ icons: ['area-chart', 'pie-chart', 'bar-chart', 'dot-chart', 'line-chart', 'radar-chart', 'heat-map', 'fall', 'rise', 'stock', 'box-plot', 'fund', 'sliders']
+ },
+ {
+ key: 'brand_logo',
+ title: '缃戠珯閫氱敤鍥炬爣',
+ icons: ['lock', 'unlock', 'bars', 'book', 'calendar', 'cloud', 'cloud-download', 'code', 'copy', 'credit-card', 'delete', 'desktop', 'download', 'ellipsis', 'file', 'file-text', 'file-unknown', 'file-pdf', 'file-word', 'file-excel', 'file-jpg', 'file-ppt', 'file-markdown', 'file-add', 'folder', 'folder-open', 'folder-add', 'hdd', 'frown', 'meh', 'smile', 'inbox', 'laptop', 'appstore', 'link', 'mail', 'mobile', 'notification', 'paper-clip', 'picture', 'poweroff', 'reload', 'search', 'setting', 'share-alt', 'shopping-cart', 'tablet', 'tag', 'tags', 'to-top', 'upload', 'user', 'video-camera', 'home', 'loading', 'loading-3-quarters', 'cloud-upload', 'star', 'heart', 'environment', 'eye', 'camera', 'save', 'team', 'solution', 'phone', 'filter', 'exception', 'export', 'customer-service', 'qrcode', 'scan', 'like', 'dislike', 'message', 'pay-circle', 'calculator', 'pushpin', 'bulb', 'select', 'switcher', 'rocket', 'bell', 'disconnect', 'database', 'compass', 'barcode', 'hourglass', 'key', 'flag', 'layout', 'printer', 'sound', 'usb', 'skin', 'tool', 'sync', 'wifi', 'car', 'schedule', 'user-add', 'user-delete', 'usergroup-add', 'usergroup-delete', 'man', 'woman', 'shop', 'gift', 'idcard', 'medicine-box', 'red-envelope', 'coffee', 'copyright', 'trademark', 'safety', 'wallet', 'bank', 'trophy', 'contacts', 'global', 'shake', 'api', 'fork', 'dashboard', 'table', 'profile', 'alert', 'audit', 'branches', 'build', 'border', 'crown', 'experiment', 'fire', 'money-collect', 'property-safety', 'read', 'reconciliation', 'rest', 'security-scan', 'insurance', 'interaction', 'safety-certificate', 'project', 'thunderbolt', 'block', 'cluster', 'deployment-unit', 'dollar', 'euro', 'pound', 'file-done', 'file-exclamation', 'file-protect', 'file-search', 'file-sync', 'gateway', 'gold', 'robot', 'shopping']
+ },
+ {
+ key: 'application',
+ title: '鍝佺墝鍜屾爣璇�',
+ icons: ['android', 'apple', 'windows', 'ie', 'chrome', 'github', 'aliwangwang', 'dingding', 'weibo-square', 'weibo-circle', 'taobao-circle', 'html5', 'weibo', 'twitter', 'wechat', 'youtube', 'alipay-circle', 'taobao', 'skype', 'qq', 'medium-workmark', 'gitlab', 'medium', 'linkedin', 'google-plus', 'dropbox', 'facebook', 'codepen', 'code-sandbox', 'amazon', 'google', 'codepen-circle', 'alipay', 'ant-design', 'aliyun', 'zhihu', 'slack', 'slack-square', 'behance', 'behance-square', 'dribbble', 'dribbble-square', 'instagram', 'yuque', 'alibaba', 'yahoo']
+ }
+]
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js
new file mode 100644
index 0000000..2d27d70
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/IconSelector/index.js
@@ -0,0 +1,2 @@
+import IconSelector from './IconSelector'
+export default IconSelector
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Loading.js b/iWare_RawMaterialWarehouse_Web/src/components/Loading.js
new file mode 100644
index 0000000..5de79ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Loading.js
@@ -0,0 +1,64 @@
+import Vue from "vue";
+import { Spin } from "ant-design-vue";
+
+const createFullLoading = function(){
+ const instance = new Vue({
+ data: {
+ visible: false,
+ },
+ methods: {
+ show() {
+ this.visible = true;
+ },
+ hide() {
+ this.visible = false;
+ },
+ },
+ render(h, data) {
+ const fullscreenStyle = {
+ position: "fixed",
+ left: 0,
+ top: 0,
+ width: "100%",
+ height: "100%",
+ display: this.visible?'block':'none',
+ zIndex:99999999999
+ }
+ const maskStyle = {
+ position: "absolute",
+ left: 0,
+ top: 0,
+ width: "100%",
+ height: "100%",
+ zIndex:1,
+ backgroundColor:'rgba(0,0,0,.2)'
+ }
+ const innerStyle = {
+ position: "absolute",
+ left: 0,
+ top: 0,
+ width: "100%",
+ height: "100%",
+ zIndex:2,
+ backgroundColor:'transparent',
+ display: "flex",
+ justifyContent: "center",
+ alignItems: "center"
+ }
+ return (
+ <div style={fullscreenStyle}>
+ <div style={maskStyle}></div>
+ <div style={innerStyle}><Spin /></div>
+ </div>
+ )
+ },
+ });
+ const component = instance.$mount();
+ document.body.appendChild(component.$el);
+ return instance
+}
+
+export default createFullLoading
+
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue
new file mode 100644
index 0000000..2889535
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/SideMenu.vue
@@ -0,0 +1,61 @@
+<template>
+ <a-layout-sider
+ :class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
+ width="230px"
+ :collapsible="collapsible"
+ v-model="collapsed"
+ :trigger="null">
+ <logo />
+ <s-menu
+ :collapsed="collapsed"
+ :menu="menus"
+ :theme="theme"
+ :mode="mode"
+ @select="onSelect"
+ ></s-menu>
+ </a-layout-sider>
+
+</template>
+
+<script>
+import Logo from '@/components/tools/Logo'
+import SMenu from './index'
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+ name: 'SideMenu',
+ components: { Logo, SMenu },
+ mixins: [mixin, mixinDevice],
+ props: {
+ mode: {
+ type: String,
+ required: false,
+ default: 'inline'
+ },
+ theme: {
+ type: String,
+ required: false,
+ default: 'dark'
+ },
+ collapsible: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ collapsed: {
+ type: Boolean,
+ required: false,
+ default: false
+ },
+ menus: {
+ type: Array,
+ required: true
+ }
+ },
+ methods: {
+ onSelect (obj) {
+ this.$emit('menuSelect', obj)
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js
new file mode 100644
index 0000000..4348509
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/index.js
@@ -0,0 +1,2 @@
+import SMenu from './menu'
+export default SMenu
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js
new file mode 100644
index 0000000..2b3f7a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.js
@@ -0,0 +1,177 @@
+import Menu from 'ant-design-vue/es/menu'
+import Icon from 'ant-design-vue/es/icon'
+
+export default {
+ name: 'SMenu',
+ props: {
+ menu: {
+ type: Array,
+ required: true
+ },
+ theme: {
+ type: String,
+ required: false,
+ default: 'dark'
+ },
+ mode: {
+ type: String,
+ required: false,
+ default: 'inline'
+ },
+ collapsed: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ data () {
+ return {
+ openKeys: [],
+ selectedKeys: [],
+ cachedOpenKeys: []
+ }
+ },
+ computed: {
+ rootSubmenuKeys: vm => {
+ const keys = []
+ vm.menu.forEach(item => keys.push(item.path))
+ return keys
+ }
+ },
+ mounted () {
+ this.updateMenu()
+ },
+ watch: {
+ collapsed (val) {
+ if (val) {
+ this.cachedOpenKeys = this.openKeys.concat()
+ this.openKeys = []
+ } else {
+ this.openKeys = this.cachedOpenKeys
+ }
+ },
+ $route: function () {
+ this.updateMenu()
+ }
+ },
+ methods: {
+ // select menu item
+ onOpenChange (openKeys) {
+ // 鍦ㄦ按骞虫ā寮忎笅鏃舵墽琛岋紝骞朵笖涓嶅啀鎵ц鍚庣画
+ if (this.mode === 'horizontal') {
+ this.openKeys = openKeys
+ return
+ }
+ // 闈炴按骞虫ā寮忔椂
+ const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key))
+ if (!this.rootSubmenuKeys.includes(latestOpenKey)) {
+ this.openKeys = openKeys
+ } else {
+ this.openKeys = latestOpenKey ? [latestOpenKey] : []
+ }
+ },
+ onSelect ({ item, key, selectedKeys }) {
+ this.selectedKeys = selectedKeys
+ this.$emit('select', { item, key, selectedKeys })
+ },
+ updateMenu () {
+ const routes = this.$route.matched.concat()
+ const { hidden } = this.$route.meta
+ if (routes.length >= 3 && hidden) {
+ routes.pop()
+ this.selectedKeys = [routes[routes.length - 1].path]
+ } else {
+ this.selectedKeys = [routes.pop().path]
+ }
+ const openKeys = []
+ if (this.mode === 'inline') {
+ routes.forEach(item => {
+ openKeys.push(item.path)
+ })
+ }
+
+ this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys)
+ },
+
+ // render
+ renderItem (menu) {
+ if (!menu.hidden) {
+ return menu.children && !menu.hideChildrenInMenu ? this.renderSubMenu(menu) : this.renderMenuItem(menu)
+ }
+ return null
+ },
+ renderMenuItem (menu) {
+ const target = menu.meta.target || null
+ const CustomTag = target && 'a' || 'router-link'
+ const props = { to: { name: menu.name } }
+ const attrs = { href: menu.path, target: menu.meta.target }
+
+ if (menu.children && menu.hideChildrenInMenu) {
+ // 鎶婃湁瀛愯彍鍗曠殑 骞朵笖 鐖惰彍鍗曟槸瑕侀殣钘忓瓙鑿滃崟鐨�
+ // 閮界粰瀛愯彍鍗曞鍔犱竴涓� hidden 灞炴��
+ // 鐢ㄦ潵缁欏埛鏂伴〉闈㈡椂锛� selectedKeys 鍋氭帶鍒剁敤
+ menu.children.forEach(item => {
+ item.meta = Object.assign(item.meta, { hidden: true })
+ })
+ }
+
+ return (
+ <Menu.Item {...{ key: menu.path }}>
+ <CustomTag {...{ props, attrs }}>
+ {this.renderIcon(menu.meta.icon)}
+ <span>{menu.meta.title}</span>
+ </CustomTag>
+ </Menu.Item>
+ )
+ },
+ renderSubMenu (menu) {
+ const itemArr = []
+ if (!menu.hideChildrenInMenu) {
+ menu.children.forEach(item => itemArr.push(this.renderItem(item)))
+ }
+ return (
+ <Menu.SubMenu {...{ key: menu.path }}>
+ <span slot="title">
+ {this.renderIcon(menu.meta.icon)}
+ <span>{menu.meta.title}</span>
+ </span>
+ {itemArr}
+ </Menu.SubMenu>
+ )
+ },
+ renderIcon (icon) {
+ if (icon === 'none' || icon === undefined) {
+ return null
+ }
+ const props = {}
+ typeof (icon) === 'object' ? props.component = icon : props.type = icon
+ return (
+ <Icon {... { props } }/>
+ )
+ }
+ },
+
+ render () {
+ const dynamicProps = {
+ props: {
+ mode: this.mode,
+ theme: this.theme,
+ openKeys: this.openKeys,
+ selectedKeys: this.selectedKeys
+ },
+ on: {
+ openChange: this.onOpenChange,
+ select: this.onSelect
+ }
+ }
+
+ const menuTree = this.menu.map(item => {
+ if (item.hidden) {
+ return null
+ }
+ return this.renderItem(item)
+ })
+
+ return (<Menu {...dynamicProps}>{menuTree}</Menu>)
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js
new file mode 100644
index 0000000..279e4ad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Menu/menu.render.js
@@ -0,0 +1,155 @@
+import Menu from 'ant-design-vue/es/menu'
+import Icon from 'ant-design-vue/es/icon'
+
+const { Item, SubMenu } = Menu
+
+export default {
+ name: 'SMenu',
+ props: {
+ menu: {
+ type: Array,
+ required: true
+ },
+ theme: {
+ type: String,
+ required: false,
+ default: 'dark'
+ },
+ mode: {
+ type: String,
+ required: false,
+ default: 'inline'
+ },
+ collapsed: {
+ type: Boolean,
+ required: false,
+ default: false
+ }
+ },
+ data () {
+ return {
+ openKeys: [],
+ selectedKeys: [],
+ cachedOpenKeys: []
+ }
+ },
+ computed: {
+ rootSubmenuKeys: vm => {
+ const keys = []
+ vm.menu.forEach(item => keys.push(item.path))
+ return keys
+ }
+ },
+ created () {
+ this.updateMenu()
+ },
+ watch: {
+ collapsed (val) {
+ if (val) {
+ this.cachedOpenKeys = this.openKeys.concat()
+ this.openKeys = []
+ } else {
+ this.openKeys = this.cachedOpenKeys
+ }
+ },
+ $route: function () {
+ this.updateMenu()
+ }
+ },
+ methods: {
+ renderIcon: function (h, icon) {
+ if (icon === 'none' || icon === undefined) {
+ return null
+ }
+ const props = {}
+ typeof (icon) === 'object' ? props.component = icon : props.type = icon
+ return h(Icon, { props: { ...props } })
+ },
+ renderMenuItem: function (h, menu, pIndex, index) {
+ const target = menu.meta.target || null
+ return h(Item, { key: menu.path ? menu.path : 'item_' + pIndex + '_' + index }, [
+ h('router-link', { attrs: { to: { name: menu.name }, target: target } }, [
+ this.renderIcon(h, menu.meta.icon),
+ h('span', [menu.meta.title])
+ ])
+ ])
+ },
+ renderSubMenu: function (h, menu, pIndex, index) {
+ const this2_ = this
+ const subItem = [h('span', { slot: 'title' }, [this.renderIcon(h, menu.meta.icon), h('span', [menu.meta.title])])]
+ const itemArr = []
+ const pIndex_ = pIndex + '_' + index
+ if (!menu.hideChildrenInMenu) {
+ menu.children.forEach(function (item, i) {
+ itemArr.push(this2_.renderItem(h, item, pIndex_, i))
+ })
+ }
+ return h(SubMenu, { key: menu.path ? menu.path : 'submenu_' + pIndex + '_' + index }, subItem.concat(itemArr))
+ },
+ renderItem: function (h, menu, pIndex, index) {
+ if (!menu.hidden) {
+ return menu.children && !menu.hideChildrenInMenu
+ ? this.renderSubMenu(h, menu, pIndex, index)
+ : this.renderMenuItem(h, menu, pIndex, index)
+ }
+ },
+ renderMenu: function (h, menuTree) {
+ const this2_ = this
+ const menuArr = []
+ menuTree.forEach(function (menu, i) {
+ if (!menu.hidden) {
+ menuArr.push(this2_.renderItem(h, menu, '0', i))
+ }
+ })
+ return menuArr
+ },
+ onOpenChange (openKeys) {
+ const latestOpenKey = openKeys.find(key => !this.openKeys.includes(key))
+ if (!this.rootSubmenuKeys.includes(latestOpenKey)) {
+ this.openKeys = openKeys
+ } else {
+ this.openKeys = latestOpenKey ? [latestOpenKey] : []
+ }
+ },
+ updateMenu () {
+ const routes = this.$route.matched.concat()
+
+ if (routes.length >= 4 && this.$route.meta.hidden) {
+ routes.pop()
+ this.selectedKeys = [routes[2].path]
+ } else {
+ this.selectedKeys = [routes.pop().path]
+ }
+
+ const openKeys = []
+ if (this.mode === 'inline') {
+ routes.forEach(item => {
+ openKeys.push(item.path)
+ })
+ }
+
+ this.collapsed ? (this.cachedOpenKeys = openKeys) : (this.openKeys = openKeys)
+ }
+ },
+ render (h) {
+ return h(
+ Menu,
+ {
+ props: {
+ theme: this.$props.theme,
+ mode: this.$props.mode,
+ openKeys: this.openKeys,
+ selectedKeys: this.selectedKeys
+ },
+ on: {
+ openChange: this.onOpenChange,
+ select: obj => {
+ this.selectedKeys = obj.selectedKeys
+ this.$emit('select', obj)
+ }
+ }
+ },
+ this.renderMenu(h, this.menu)
+ )
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue
new file mode 100644
index 0000000..c9dd077
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/MultiTab.vue
@@ -0,0 +1,162 @@
+<script>
+import events from './events'
+
+export default {
+ name: 'MultiTab',
+ data () {
+ return {
+ fullPathList: [],
+ pages: [],
+ activeKey: '',
+ newTabIndex: 0
+ }
+ },
+ created () {
+ // bind event
+ events.$on('open', val => {
+ if (!val) {
+ throw new Error(`multi-tab: open tab ${val} err`)
+ }
+ this.activeKey = val
+ }).$on('close', val => {
+ if (!val) {
+ this.closeThat(this.activeKey)
+ return
+ }
+ this.closeThat(val)
+ }).$on('rename', ({ key, name }) => {
+ try {
+ const item = this.pages.find(item => item.path === key)
+ item.meta.customTitle = name
+ this.$forceUpdate()
+ } catch (e) {
+ }
+ })
+
+ this.pages.push(this.$route)
+ this.fullPathList.push(this.$route.fullPath)
+ this.selectedLastPath()
+ },
+ methods: {
+ onEdit (targetKey, action) {
+ this[action](targetKey)
+ },
+ remove (targetKey) {
+ this.pages = this.pages.filter(page => page.fullPath !== targetKey)
+ this.fullPathList = this.fullPathList.filter(path => path !== targetKey)
+ // 鍒ゆ柇褰撳墠鏍囩鏄惁鍏抽棴锛岃嫢鍏抽棴鍒欒烦杞埌鏈�鍚庝竴涓繕瀛樺湪鐨勬爣绛鹃〉
+ if (!this.fullPathList.includes(this.activeKey)) {
+ this.selectedLastPath()
+ }
+ },
+ selectedLastPath () {
+ this.activeKey = this.fullPathList[this.fullPathList.length - 1]
+ },
+
+ // content menu
+ closeThat (e) {
+ // 鍒ゆ柇鏄惁涓烘渶鍚庝竴涓爣绛鹃〉锛屽鏋滄槸鏈�鍚庝竴涓紝鍒欐棤娉曡鍏抽棴
+ if (this.fullPathList.length > 1) {
+ this.remove(e)
+ } else {
+ this.$message.info('杩欐槸鏈�鍚庝竴涓爣绛句簡, 鏃犳硶琚叧闂�')
+ }
+ },
+ closeLeft (e) {
+ const currentIndex = this.fullPathList.indexOf(e)
+ if (currentIndex > 0) {
+ this.fullPathList.forEach((item, index) => {
+ if (index < currentIndex) {
+ this.remove(item)
+ }
+ })
+ } else {
+ this.$message.info('宸︿晶娌℃湁鏍囩')
+ }
+ },
+ closeRight (e) {
+ const currentIndex = this.fullPathList.indexOf(e)
+ if (currentIndex < (this.fullPathList.length - 1)) {
+ this.fullPathList.forEach((item, index) => {
+ if (index > currentIndex) {
+ this.remove(item)
+ }
+ })
+ } else {
+ this.$message.info('鍙充晶娌℃湁鏍囩')
+ }
+ },
+ closeAll (e) {
+ const currentIndex = this.fullPathList.indexOf(e)
+ this.fullPathList.forEach((item, index) => {
+ if (index !== currentIndex) {
+ this.remove(item)
+ }
+ })
+ },
+ closeMenuClick (key, route) {
+ this[key](route)
+ },
+ renderTabPaneMenu (e) {
+ return (
+ <a-menu {...{ on: { click: ({ key, item, domEvent }) => { this.closeMenuClick(key, e) } } }}>
+ <a-menu-item key="closeThat">鍏抽棴褰撳墠鏍囩</a-menu-item>
+ <a-menu-item key="closeRight">鍏抽棴鍙充晶</a-menu-item>
+ <a-menu-item key="closeLeft">鍏抽棴宸︿晶</a-menu-item>
+ <a-menu-item key="closeAll">鍏抽棴鍏ㄩ儴</a-menu-item>
+ </a-menu>
+ )
+ },
+ // render
+ renderTabPane (title, keyPath) {
+ const menu = this.renderTabPaneMenu(keyPath)
+
+ return (
+ <a-dropdown overlay={menu} trigger={['contextmenu']}>
+ <span style={{ userSelect: 'none' }}>{ title }</span>
+ </a-dropdown>
+ )
+ }
+ },
+ watch: {
+ '$route': function (newVal) {
+ this.activeKey = newVal.fullPath
+ if (this.fullPathList.indexOf(newVal.fullPath) < 0) {
+ this.fullPathList.push(newVal.fullPath)
+ this.pages.push(newVal)
+ }
+ },
+ activeKey: function (newPathKey) {
+ this.$router.push({ path: newPathKey })
+ }
+ },
+ render () {
+ const { onEdit, $data: { pages } } = this
+ const panes = pages.map(page => {
+ return (
+ <a-tab-pane
+ style={{ height: 0, background: '#8999ee', color: '#899ee' }}
+ tab={this.renderTabPane(page.meta.customTitle || page.meta.title, page.fullPath)}
+ key={page.fullPath} closable={pages.length > 1}
+ >
+ </a-tab-pane>)
+ })
+
+ return (
+ <div class="ant-pro-multi-tab" style="margin:0">
+ <div class="ant-pro-multi-tab-wrapper">
+ <a-tabs
+ hideAdd
+ tabBarGutter={-1}
+ type={'editable-card'}
+ v-model={this.activeKey}
+ tabBarStyle={{ background: '#FFF', margin: 0, paddingLeft: '0px', paddingTop: '0px' }}
+ {...{ on: { edit: onEdit } }}>
+ {panes}
+ </a-tabs>
+ </div>
+ </div>
+ )
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js
new file mode 100644
index 0000000..b0230b5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/events.js
@@ -0,0 +1,2 @@
+import Vue from 'vue'
+export default new Vue()
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js
new file mode 100644
index 0000000..02a1c77
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.js
@@ -0,0 +1,40 @@
+import events from './events'
+import MultiTab from './MultiTab'
+import './index.less'
+
+const api = {
+ /**
+ * open new tab on route fullPath
+ * @param config
+ */
+ open: function (config) {
+ events.$emit('open', config)
+ },
+ rename: function (key, name) {
+ events.$emit('rename', { key: key, name: name })
+ },
+ /**
+ * close current page
+ */
+ closeCurrentPage: function () {
+ this.close()
+ },
+ /**
+ * close route fullPath tab
+ * @param config
+ */
+ close: function (config) {
+ events.$emit('close', config)
+ }
+}
+
+MultiTab.install = function (Vue) {
+ if (Vue.prototype.$multiTab) {
+ return
+ }
+ api.instance = events
+ Vue.prototype.$multiTab = api
+ Vue.component('multi-tab', MultiTab)
+}
+
+export default MultiTab
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less
new file mode 100644
index 0000000..773e3af
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/MultiTab/index.less
@@ -0,0 +1,25 @@
+@import '../index';
+
+@multi-tab-prefix-cls: ~"@{ant-pro-prefix}-multi-tab";
+@multi-tab-wrapper-prefix-cls: ~"@{ant-pro-prefix}-multi-tab-wrapper";
+
+/*
+.topmenu .@{multi-tab-prefix-cls} {
+ max-width: 1200px;
+ margin: -23px auto 24px auto;
+}
+*/
+.@{multi-tab-prefix-cls} {
+ margin: -23px -24px 24px -24px;
+ background: #fff;
+}
+
+.topmenu .@{multi-tab-wrapper-prefix-cls} {
+ max-width: 1200px;
+ margin: 0 auto;
+}
+
+.topmenu.content-width-Fluid .@{multi-tab-wrapper-prefix-cls} {
+ max-width: 100%;
+ margin: 0 auto;
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less b/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less
new file mode 100644
index 0000000..7826c0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NProgress/nprogress.less
@@ -0,0 +1,76 @@
+@import url('../index.less');
+
+/* Make clicks pass-through */
+#nprogress {
+ pointer-events: none;
+}
+
+#nprogress .bar {
+ background: @primary-color;
+
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+
+ width: 100%;
+ height: 2px;
+}
+
+/* Fancy blur effect */
+#nprogress .peg {
+ display: block;
+ position: absolute;
+ right: 0px;
+ width: 100px;
+ height: 100%;
+ box-shadow: 0 0 10px @primary-color, 0 0 5px @primary-color;
+ opacity: 1.0;
+
+ -webkit-transform: rotate(3deg) translate(0px, -4px);
+ -ms-transform: rotate(3deg) translate(0px, -4px);
+ transform: rotate(3deg) translate(0px, -4px);
+}
+
+/* Remove these to get rid of the spinner */
+#nprogress .spinner {
+ display: block;
+ position: fixed;
+ z-index: 1031;
+ top: 15px;
+ right: 15px;
+}
+
+#nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ box-sizing: border-box;
+
+ border: solid 2px transparent;
+ border-top-color: @primary-color;
+ border-left-color: @primary-color;
+ border-radius: 50%;
+
+ -webkit-animation: nprogress-spinner 400ms linear infinite;
+ animation: nprogress-spinner 400ms linear infinite;
+}
+
+.nprogress-custom-parent {
+ overflow: hidden;
+ position: relative;
+}
+
+.nprogress-custom-parent #nprogress .spinner,
+.nprogress-custom-parent #nprogress .bar {
+ position: absolute;
+}
+
+@-webkit-keyframes nprogress-spinner {
+ 0% { -webkit-transform: rotate(0deg); }
+ 100% { -webkit-transform: rotate(360deg); }
+}
+@keyframes nprogress-spinner {
+ 0% { transform: rotate(0deg); }
+ 100% { transform: rotate(360deg); }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue
new file mode 100644
index 0000000..191da89
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/NoticeIcon.vue
@@ -0,0 +1,100 @@
+<template>
+ <a-popover
+ v-model="visible"
+ trigger="click"
+ placement="bottomRight"
+ overlayClassName="header-notice-wrapper"
+ :getPopupContainer="() => $refs.noticeRef.parentElement"
+ :autoAdjustOverflow="true"
+ :arrowPointAtCenter="true"
+ :overlayStyle="{ width: '300px', top: '50px' }"
+ >
+ <template slot="content">
+ <a-spin :spinning="loading">
+ <a-tabs>
+ <a-tab-pane :tab="item.key" :key="item.key" v-for="item in userNotices.rows">
+ <a-list
+ ><a-list-item
+ v-for="(notice, index) in item.noticeData.filter(m => {
+ return m.type == item.value
+ })"
+ :key="index"
+ >
+ <a-list-item-meta :title="notice.title" :description="notice.publicTime">
+ <a-avatar style="background-color: white" slot="avatar" :src="noticeImg" />
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item
+ v-if="
+ item.noticeData.filter(m => {
+ return m.type == item.value
+ }).length > 0
+ "
+ style="display: block;text-align: center;"
+ >
+ <a-button type="link" @click="goMore()">鍘诲鐞�</a-button>
+ </a-list-item>
+ </a-list>
+ </a-tab-pane>
+ </a-tabs>
+ </a-spin>
+ </template>
+ <span @click="fetchNotice" class="header-notice" ref="noticeRef" style="padding: 0 18px">
+ <a-badge :count="userNotices.totalRows">
+ <a-icon style="font-size: 16px; padding: 4px" type="bell" />
+ </a-badge>
+ </span>
+ </a-popover>
+</template>
+
+<script>
+import noticeImg from '../../assets/notice.png'
+import { mapGetters } from 'vuex'
+export default {
+ name: 'HeaderNotice',
+ data() {
+ return {
+ loading: false,
+ visible: false,
+ noticeImg: noticeImg
+ }
+ },
+ mounted() {},
+ computed: {
+ ...mapGetters(['userNotices'])
+ },
+ methods: {
+ fetchNotice() {
+ // if (!this.visible) {
+ // this.loading = true
+ // setTimeout(() => {
+ // this.loading = false
+ // }, 100)
+ // } else {
+ // this.loading = false
+ // }
+ this.visible = !this.visible
+ },
+ goMore() {
+ this.visible = !this.visible
+ this.$router.push('/noticeReceived')
+ }
+ }
+}
+</script>
+
+<style lang="css">
+.header-notice-wrapper {
+ top: 50px !important;
+}
+</style>
+<style lang="less" scoped>
+.header-notice {
+ display: inline-block;
+ transition: all 0.3s;
+
+ span {
+ vertical-align: initial;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js
new file mode 100644
index 0000000..659b9ec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NoticeIcon/index.js
@@ -0,0 +1,2 @@
+import NoticeIcon from './NoticeIcon'
+export default NoticeIcon
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue
new file mode 100644
index 0000000..d76a4e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/NumberInfo.vue
@@ -0,0 +1,54 @@
+<template>
+ <div :class="[prefixCls]">
+ <slot name="subtitle">
+ <div :class="[`${prefixCls}-subtitle`]">{{ typeof subTitle === 'string' ? subTitle : subTitle() }}</div>
+ </slot>
+ <div class="number-info-value">
+ <span>{{ total }}</span>
+ <span class="sub-total">
+ {{ subTotal }}
+ <icon :type="`caret-${status}`" />
+ </span>
+ </div>
+ </div>
+</template>
+
+<script>
+import Icon from 'ant-design-vue/es/icon'
+
+export default {
+ name: 'NumberInfo',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-number-info'
+ },
+ total: {
+ type: Number,
+ required: true
+ },
+ subTotal: {
+ type: Number,
+ required: true
+ },
+ subTitle: {
+ type: [String, Function],
+ default: ''
+ },
+ status: {
+ type: String,
+ default: 'up'
+ }
+ },
+ components: {
+ Icon
+ },
+ data () {
+ return {}
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ //@import "index";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js
new file mode 100644
index 0000000..659a2f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.js
@@ -0,0 +1,3 @@
+import NumberInfo from './NumberInfo'
+
+export default NumberInfo
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less
new file mode 100644
index 0000000..719113d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.less
@@ -0,0 +1,55 @@
+@import "../index";
+
+@numberInfo-prefix-cls: ~"@{ant-pro-prefix}-number-info";
+
+.@{numberInfo-prefix-cls} {
+
+ .ant-pro-number-info-subtitle {
+ color: @text-color-secondary;
+ font-size: @font-size-base;
+ height: 22px;
+ line-height: 22px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap;
+ }
+
+ .number-info-value {
+ margin-top: 4px;
+ font-size: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap;
+
+ & > span {
+ color: @heading-color;
+ display: inline-block;
+ line-height: 32px;
+ height: 32px;
+ font-size: 24px;
+ margin-right: 32px;
+ }
+
+ .sub-total {
+ color: @text-color-secondary;
+ font-size: @font-size-lg;
+ vertical-align: top;
+ margin-right: 0;
+ i {
+ font-size: 12px;
+ transform: scale(0.82);
+ margin-left: 4px;
+ }
+ :global {
+ .anticon-caret-up {
+ color: @red-6;
+ }
+ .anticon-caret-down {
+ color: @green-6;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md
new file mode 100644
index 0000000..147adc4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/NumberInfo/index.md
@@ -0,0 +1,43 @@
+# NumberInfo 鏁版嵁鏂囨湰
+
+甯哥敤鍦ㄦ暟鎹崱鐗囦腑锛岀敤浜庣獊鍑哄睍绀烘煇涓笟鍔℃暟鎹��
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import NumberInfo from '@/components/NumberInfo'
+
+export default {
+ components: {
+ NumberInfo
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず [demo](https://pro.loacg.com/test/home)
+
+```html
+<number-info
+ :sub-title="() => { return 'Visits this week' }"
+ :total="12321"
+ status="up"
+ :sub-total="17.1"></number-info>
+```
+
+
+
+## API
+
+鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊�
+----|------|-----|------
+title | 鏍囬 | ReactNode\|string | -
+subTitle | 瀛愭爣棰� | ReactNode\|string | -
+total | 鎬婚噺 | ReactNode\|string | -
+subTotal | 瀛愭�婚噺 | ReactNode\|string | -
+status | 澧炲姞鐘舵�� | 'up \| down' | -
+theme | 鐘舵�佹牱寮� | string | 'light'
+gap | 璁剧疆鏁板瓧鍜屾弿杩颁箣闂寸殑闂磋窛锛堝儚绱狅級| number | 8
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue
new file mode 100644
index 0000000..b182119
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/PageHeader.vue
@@ -0,0 +1,209 @@
+<template>
+ <div class="page-header">
+ <div class="page-header-index-wide">
+ <div class="detail">
+ <div class="main" v-if="!$route.meta.hiddenHeaderContent">
+ <div class="row">
+ <img v-if="logo" :src="logo" class="logo"/>
+ <h1 v-if="title" class="title">{{ title }}</h1>
+ <div class="action">
+ <slot name="action"></slot>
+ </div>
+ </div>
+ <div class="row">
+ <div v-if="avatar" class="avatar">
+ <a-avatar :src="avatar" />
+ </div>
+ <div v-if="this.$slots.content" class="headerContent">
+ <slot name="content"></slot>
+ </div>
+ <div v-if="this.$slots.extra" class="extra">
+ <slot name="extra"></slot>
+ </div>
+ </div>
+ <div>
+ <slot name="pageMenu"></slot>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+
+export default {
+ name: 'PageHeader',
+ props: {
+ title: {
+ type: [String, Boolean],
+ default: true,
+ required: false
+ },
+ logo: {
+ type: String,
+ default: '',
+ required: false
+ },
+ avatar: {
+ type: String,
+ default: '',
+ required: false
+ }
+ },
+ data () {
+ return {
+ crumbsState: this.$store.state.app.crumbsState
+ }
+ },
+ computed: {
+ getCrumbsState() {
+ return this.$store.state.app.crumbsState
+ }
+ },
+ watch: {
+ getCrumbsState (newVal, oldVal) {
+ this.crumbsState = newVal
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.page-header {
+ background: #fff;
+ padding: 10px 32px 0;
+ border-bottom: 0px solid #e8e8e8;
+
+ .breadcrumb {
+ margin-bottom: 10px;
+ }
+
+ .detail {
+ display: flex;
+ /*margin-bottom: 16px;*/
+
+ .avatar {
+ flex: 0 1 72px;
+ margin: 0 24px 8px 0;
+
+ & > span {
+ border-radius: 72px;
+ display: block;
+ width: 72px;
+ height: 72px;
+ }
+ }
+
+ .main {
+ width: 100%;
+ flex: 0 1 auto;
+
+ .row {
+ display: flex;
+ width: 100%;
+
+ .avatar {
+ margin-bottom: 10px;
+ }
+ }
+
+ .title {
+ font-size: 20px;
+ font-weight: 500;
+
+ font-size: 20px;
+ line-height: 28px;
+ font-weight: 500;
+ color: rgba(0, 0, 0, 0.85);
+ margin-bottom: 16px;
+ flex: auto;
+ }
+ .logo {
+ width: 28px;
+ height: 28px;
+ border-radius: 4px;
+ margin-right: 16px;
+ }
+ .content,
+ .headerContent {
+ flex: auto;
+ color: rgba(0, 0, 0, 0.45);
+ line-height: 22px;
+
+ .link {
+ margin-top: 16px;
+ line-height: 24px;
+
+ a {
+ font-size: 14px;
+ margin-right: 32px;
+ }
+ }
+ }
+ .extra {
+ flex: 0 1 auto;
+ margin-left: 88px;
+ min-width: 242px;
+ text-align: right;
+ }
+ .action {
+ margin-left: 56px;
+ min-width: 266px;
+ flex: 0 1 auto;
+ text-align: right;
+ &:empty {
+ display: none;
+ }
+ }
+ }
+ }
+}
+
+.mobile .page-header {
+ .main {
+ .row {
+ flex-wrap: wrap;
+
+ .avatar {
+ flex: 0 1 25%;
+ margin: 0 2% 8px 0;
+ }
+
+ .content,
+ .headerContent {
+ flex: 0 1 70%;
+
+ .link {
+ margin-top: 16px;
+ line-height: 24px;
+
+ a {
+ font-size: 14px;
+ margin-right: 10px;
+ }
+ }
+ }
+
+ .extra {
+ flex: 1 1 auto;
+ margin-left: 0;
+ min-width: 0;
+ text-align: right;
+ }
+
+ .action {
+ margin-left: unset;
+ min-width: 266px;
+ flex: 0 1 auto;
+ text-align: left;
+ margin-bottom: 12px;
+
+ &:empty {
+ display: none;
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js
new file mode 100644
index 0000000..ec1078c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageHeader/index.js
@@ -0,0 +1,2 @@
+import PageHeader from './PageHeader'
+export default PageHeader
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx
new file mode 100644
index 0000000..af6d6d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/PageLoading/index.jsx
@@ -0,0 +1,106 @@
+import { Spin } from 'ant-design-vue'
+
+export const PageLoading = {
+ name: 'PageLoading',
+ props: {
+ tip: {
+ type: String,
+ default: 'Loading..'
+ },
+ size: {
+ type: String,
+ default: 'large'
+ }
+ },
+ render () {
+ const style = {
+ textAlign: 'center',
+ background: 'rgba(0,0,0,0.6)',
+ position: 'fixed',
+ top: 0,
+ bottom: 0,
+ left: 0,
+ right: 0,
+ zIndex: 1100
+ }
+ const spinStyle = {
+ position: 'absolute',
+ left: '50%',
+ top: '40%',
+ transform: 'translate(-50%, -50%)'
+ }
+ return (<div style={style}>
+ <Spin size={this.size} style={spinStyle} tip={this.tip} />
+ </div>)
+ }
+}
+
+const version = '0.0.1'
+const loading = {}
+
+loading.newInstance = (Vue, options) => {
+ let loadingElement = document.querySelector('body>div[type=loading]')
+ if (!loadingElement) {
+ loadingElement = document.createElement('div')
+ loadingElement.setAttribute('type', 'loading')
+ loadingElement.setAttribute('class', 'ant-loading-wrapper')
+ document.body.appendChild(loadingElement)
+ }
+
+ const cdProps = Object.assign({ visible: false, size: 'large', tip: 'Loading...' }, options)
+
+ const instance = new Vue({
+ data () {
+ return {
+ ...cdProps
+ }
+ },
+ render () {
+ const { tip } = this
+ const props = {}
+ this.tip && (props.tip = tip)
+ if (this.visible) {
+ return <PageLoading { ...{ props } } />
+ }
+ return null
+ }
+ }).$mount(loadingElement)
+
+ function update (config) {
+ const { visible, size, tip } = { ...cdProps, ...config }
+ instance.$set(instance, 'visible', visible)
+ if (tip) {
+ instance.$set(instance, 'tip', tip)
+ }
+ if (size) {
+ instance.$set(instance, 'size', size)
+ }
+ }
+
+ return {
+ instance,
+ update
+ }
+}
+
+const api = {
+ show: function (options) {
+ this.instance.update({ ...options, visible: true })
+ },
+ hide: function () {
+ this.instance.update({ visible: false })
+ }
+}
+
+const install = function (Vue, options) {
+ if (Vue.prototype.$loading) {
+ return
+ }
+ api.instance = loading.newInstance(Vue, options)
+ Vue.prototype.$loading = api
+}
+
+export default {
+ version,
+ install
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue b/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue
new file mode 100644
index 0000000..99f7f19
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Result/Result.vue
@@ -0,0 +1,109 @@
+<template>
+ <div class="result">
+ <div>
+ <a-icon :class="{ 'icon': true, [`${type}`]: true }" :type="localIsSuccess ? 'check-circle' : 'close-circle'"/>
+ </div>
+ <div class="title">
+ <slot name="title">
+ {{ title }}
+ </slot>
+ </div>
+ <div class="description">
+ <slot name="description">
+ {{ description }}
+ </slot>
+ </div>
+ <div class="extra" v-if="$slots.default">
+ <slot></slot>
+ </div>
+ <div class="action" v-if="$slots.action">
+ <slot name="action"></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+const resultEnum = ['success', 'error']
+
+export default {
+ name: 'Result',
+ props: {
+ /** @Deprecated */
+ isSuccess: {
+ type: Boolean,
+ default: false
+ },
+ type: {
+ type: String,
+ default: resultEnum[0],
+ validator (val) {
+ return (val) => resultEnum.includes(val)
+ }
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ description: {
+ type: String,
+ default: ''
+ }
+ },
+ computed: {
+ localIsSuccess: function () {
+ return this.type === resultEnum[0]
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .result {
+ text-align: center;
+ width: 72%;
+ margin: 0 auto;
+ padding: 24px 0 8px;
+
+ .icon {
+ font-size: 72px;
+ line-height: 72px;
+ margin-bottom: 24px;
+ }
+ .success {
+ color: #52c41a;
+ }
+ .error {
+ color: red;
+ }
+ .title {
+ font-size: 24px;
+ color: rgba(0, 0, 0, .85);
+ font-weight: 500;
+ line-height: 32px;
+ margin-bottom: 16px;
+ }
+ .description {
+ font-size: 14px;
+ line-height: 22px;
+ color: rgba(0, 0, 0, 0.45);
+ margin-bottom: 24px;
+ }
+ .extra {
+ background: #fafafa;
+ padding: 24px 40px;
+ border-radius: 2px;
+ text-align: left;
+ }
+ .action {
+ margin-top: 32px;
+ }
+ }
+
+ .mobile {
+ .result {
+ width: 100%;
+ margin: 0 auto;
+ padding: unset;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js
new file mode 100644
index 0000000..51cb3b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Result/index.js
@@ -0,0 +1,2 @@
+import Result from './Result.vue'
+export default Result
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx b/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx
new file mode 100644
index 0000000..13bfa56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Search/GlobalSearch.jsx
@@ -0,0 +1,62 @@
+import { Select } from 'ant-design-vue'
+import './index.less'
+
+const GlobalSearch = {
+ name: 'GlobalSearch',
+ data () {
+ return {
+ visible: false
+ }
+ },
+ mounted () {
+ const keyboardHandle = (e) => {
+ e.preventDefault()
+ e.stopPropagation()
+ const { ctrlKey, shiftKey, altKey, keyCode } = e
+ // key is `K` and hold ctrl
+ if (keyCode === 75 && ctrlKey && !shiftKey && !altKey) {
+ this.visible = !this.visible
+ }
+ }
+ document.addEventListener('keydown', keyboardHandle)
+ },
+ render () {
+ const { visible } = this
+ const handleSearch = (e) => {
+ this.$emit('search', e)
+ }
+
+ const handleChange = (e) => {
+ this.$emit('change', e)
+ }
+ if (!visible) {
+ return null
+ }
+ return (
+ <div class={'global-search global-search-wrapper'}>
+ <div class={'global-search-box'}>
+ <Select
+ size={'large'}
+ showSearch
+ placeholder="Input search text.."
+ style={{ width: '100%' }}
+ defaultActiveFirstOption={false}
+ showArrow={false}
+ filterOption={false}
+ onSearch={handleSearch}
+ onChange={handleChange}
+ notFoundContent={null}
+ >
+ </Select>
+ <div class={'global-search-tips'}>Open with Ctrl/鈱� + K</div>
+ </div>
+ </div>
+ )
+ }
+}
+
+GlobalSearch.install = function (Vue) {
+ Vue.component(GlobalSearch.name, GlobalSearch)
+}
+
+export default GlobalSearch
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less
new file mode 100644
index 0000000..d397852
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Search/index.less
@@ -0,0 +1,25 @@
+@import "~ant-design-vue/es/style/themes/default";
+
+.global-search-wrapper {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: @zindex-modal-mask;
+ background: @modal-mask-bg;
+
+ .global-search-box {
+ position: absolute;
+ top: 20%;
+ left: 50%;
+ width: 450px;
+ transform: translate(-50%, -50%);
+
+ .global-search-tips {
+ color: @white;
+ font-size: @font-size-lg;
+ text-align: right;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue
new file mode 100644
index 0000000..9d4178d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingDrawer.vue
@@ -0,0 +1,360 @@
+<template>
+ <div class="setting-drawer">
+ <a-drawer
+ width="300"
+ placement="right"
+ @close="onClose"
+ :closable="false"
+ :visible="visible"
+ :drawer-style="{ position: 'absolute' }"
+ style="z-index: 999"
+ >
+ <div class="setting-drawer-index-content">
+
+ <div :style="{ marginBottom: '24px' }">
+ <h3 class="setting-drawer-index-title">鏁翠綋椋庢牸璁剧疆</h3>
+
+ <div class="setting-drawer-index-blockChecbox">
+ <a-tooltip>
+ <template slot="title">
+ 鏆楄壊鑿滃崟椋庢牸
+ </template>
+ <div class="setting-drawer-index-item" @click="handleMenuTheme('dark')">
+ <img src="https://gw.alipayobjects.com/zos/rmsportal/LCkqqYNmvBEbokSDscrm.svg" alt="dark">
+ <div class="setting-drawer-index-selectIcon" v-if="navTheme === 'dark'">
+ <a-icon type="check"/>
+ </div>
+ </div>
+ </a-tooltip>
+
+ <a-tooltip>
+ <template slot="title">
+ 浜壊鑿滃崟椋庢牸
+ </template>
+ <div class="setting-drawer-index-item" @click="handleMenuTheme('light')">
+ <img src="https://gw.alipayobjects.com/zos/rmsportal/jpRkZQMyYRryryPNtyIC.svg" alt="light">
+ <div class="setting-drawer-index-selectIcon" v-if="navTheme !== 'dark'">
+ <a-icon type="check"/>
+ </div>
+ </div>
+ </a-tooltip>
+ </div>
+ </div>
+
+ <div :style="{ marginBottom: '24px' }">
+ <h3 class="setting-drawer-index-title">涓婚鑹�</h3>
+
+ <div style="height: 20px">
+ <a-tooltip class="setting-drawer-theme-color-colorBlock" v-for="(item, index) in colorList" :key="index">
+ <template slot="title">
+ {{ item.key }}
+ </template>
+ <a-tag :color="item.color" @click="changeColor(item.color)">
+ <a-icon type="check" v-if="item.color === primaryColor"></a-icon>
+ </a-tag>
+ </a-tooltip>
+
+ </div>
+ </div>
+ <a-divider />
+
+ <div :style="{ marginBottom: '24px' }">
+ <h3 class="setting-drawer-index-title">瀵艰埅妯″紡</h3>
+
+ <div class="setting-drawer-index-blockChecbox">
+ <a-tooltip>
+ <template slot="title">
+ 渚ц竟鏍忓鑸�
+ </template>
+ <div class="setting-drawer-index-item" @click="handleLayout('sidemenu')">
+ <img src="https://gw.alipayobjects.com/zos/rmsportal/JopDzEhOqwOjeNTXkoje.svg" alt="sidemenu">
+ <div class="setting-drawer-index-selectIcon" v-if="layoutMode === 'sidemenu'">
+ <a-icon type="check"/>
+ </div>
+ </div>
+ </a-tooltip>
+
+ <a-tooltip>
+ <template slot="title">
+ 椤堕儴鏍忓鑸�
+ </template>
+ <div class="setting-drawer-index-item" @click="handleLayout('topmenu')">
+ <img src="https://gw.alipayobjects.com/zos/rmsportal/KDNDBbriJhLwuqMoxcAr.svg" alt="topmenu">
+ <div class="setting-drawer-index-selectIcon" v-if="layoutMode !== 'sidemenu'">
+ <a-icon type="check"/>
+ </div>
+ </div>
+ </a-tooltip>
+ </div>
+ <div :style="{ marginTop: '24px' }">
+ <a-list :split="false">
+ <a-list-item>
+ <a-tooltip slot="actions">
+ <template slot="title">
+ 璇ヨ瀹氫粎 [椤堕儴鏍忓鑸猐 鏃舵湁鏁�
+ </template>
+ <a-select size="small" style="width: 80px;" :defaultValue="contentWidth" @change="handleContentWidthChange">
+ <a-select-option value="Fixed">鍥哄畾</a-select-option>
+ <a-select-option value="Fluid" v-if="layoutMode !== 'sidemenu'">娴佸紡</a-select-option>
+ </a-select>
+ </a-tooltip>
+ <a-list-item-meta>
+ <div slot="title">鍐呭鍖哄煙瀹藉害</div>
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item>
+ <a-switch slot="actions" size="small" :defaultChecked="fixedHeader" @change="handleFixedHeader" />
+ <a-list-item-meta>
+ <div slot="title">鍥哄畾 Header</div>
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item>
+ <a-switch slot="actions" size="small" :disabled="!fixedHeader" :defaultChecked="autoHideHeader" @change="handleFixedHeaderHidden" />
+ <a-list-item-meta>
+ <a-tooltip slot="title" placement="left">
+ <template slot="title">鍥哄畾 Header 鏃跺彲閰嶇疆</template>
+ <div :style="{ opacity: !fixedHeader ? '0.5' : '1' }">涓嬫粦鏃堕殣钘� Header</div>
+ </a-tooltip>
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item >
+ <a-switch slot="actions" size="small" :disabled="(layoutMode === 'topmenu')" :defaultChecked="fixSiderbar" @change="handleFixSiderbar" />
+ <a-list-item-meta>
+ <div slot="title" :style="{ textDecoration: layoutMode === 'topmenu' ? 'line-through' : 'unset' }">鍥哄畾渚ц竟鑿滃崟</div>
+ </a-list-item-meta>
+ </a-list-item>
+ </a-list>
+ </div>
+ </div>
+ <a-divider />
+
+ <div :style="{ marginBottom: '24px' }">
+ <h3 class="setting-drawer-index-title">鍏朵粬璁剧疆</h3>
+ <div>
+ <a-list :split="false">
+ <a-list-item>
+ <a-switch slot="actions" size="small" :defaultChecked="colorWeak" @change="onColorWeak" />
+ <a-list-item-meta>
+ <div slot="title">鑹插急妯″紡</div>
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item>
+ <a-switch slot="actions" size="small" :defaultChecked="multiTab" @change="onMultiTab" />
+ <a-list-item-meta>
+ <div slot="title">澶氶〉绛炬ā寮�</div>
+ </a-list-item-meta>
+ </a-list-item>
+ <a-list-item>
+ <a-switch slot="actions" size="small" :defaultChecked="crumbsState" @change="onCrumbs" />
+ <a-list-item-meta>
+ <div slot="title">鏄剧ず闈㈠寘灞�</div>
+ </a-list-item-meta>
+ </a-list-item>
+ </a-list>
+ </div>
+ </div>
+ <a-divider />
+ <div :style="{ marginBottom: '24px' }">
+ <a-button
+ @click="doCopy"
+ icon="copy"
+ block
+ >鎷疯礉璁剧疆</a-button>
+ <a-alert type="warning" :style="{ marginTop: '24px' }">
+ <span slot="message">
+ 閰嶇疆鏍忓彧鍦ㄥ紑鍙戠幆澧冪敤浜庨瑙堬紝鐢熶骇鐜涓嶄細灞曠幇锛岃鎵嬪姩淇敼閰嶇疆鏂囦欢銆備慨鏀归厤缃枃浠跺悗锛岄渶瑕佹竻绌烘湰鍦扮紦瀛樺拰LocalStorage
+ <a href="https://github.com/sendya/ant-design-pro-vue/blob/master/src/config/defaultSettings.js" target="_blank">src/config/defaultSettings.js</a>
+ </span>
+ </a-alert>
+ </div>
+ </div>
+ <div class="setting-drawer-index-handle" @click="toggle" slot="handle">
+ <a-icon type="setting" v-if="!visible"/>
+ <a-icon type="close" v-else/>
+ </div>
+ </a-drawer>
+ </div>
+</template>
+
+<script>
+/* import { DetailList } from '@/components'
+import SettingItem from './SettingItem' */
+import config from '@/config/defaultSettings'
+import { updateTheme, updateColorWeak, colorList } from './settingConfig'
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+ components: {
+ // DetailList,
+ // SettingItem
+ },
+ mixins: [mixin, mixinDevice],
+ data () {
+ return {
+ visible: false,
+ colorList
+ }
+ },
+ watch: {
+
+ },
+ mounted () {
+ updateTheme(this.primaryColor)
+ if (this.colorWeak !== config.colorWeak) {
+ updateColorWeak(this.colorWeak)
+ }
+ },
+ methods: {
+ showDrawer () {
+ this.visible = true
+ },
+ onClose () {
+ this.visible = false
+ },
+ toggle () {
+ this.visible = !this.visible
+ },
+ onColorWeak (checked) {
+ this.$store.dispatch('ToggleWeak', checked)
+ updateColorWeak(checked)
+ },
+ onMultiTab (checked) {
+ this.$store.dispatch('ToggleMultiTab', checked)
+ },
+ onCrumbs(checked) {
+ this.$store.dispatch('ToggleCrumbsState', checked)
+ },
+ handleMenuTheme (theme) {
+ this.$store.dispatch('ToggleTheme', theme)
+ },
+ doCopy () {
+ // get current settings from mixin or this.$store.state.app, pay attention to the property name
+ const text = `export default {
+ primaryColor: '${this.primaryColor}', // primary color of ant design
+ navTheme: '${this.navTheme}', // theme for nav menu
+ layout: '${this.layoutMode}', // nav menu position: sidemenu or topmenu
+ contentWidth: '${this.contentWidth}', // layout of content: Fluid or Fixed, only works when layout is topmenu
+ fixedHeader: ${this.fixedHeader}, // sticky header
+ fixSiderbar: ${this.fixSiderbar}, // sticky siderbar
+ autoHideHeader: ${this.autoHideHeader}, // auto hide header
+ colorWeak: ${this.colorWeak},
+ multiTab: ${this.multiTab},
+ crumbsState: ${this.crumbsState},
+ production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true',
+ // vue-ls options
+ storageOptions: {
+ namespace: 'pro__',
+ name: 'ls',
+ storage: 'local',
+ }
+}`
+ this.$copyText(text).then(message => {
+ this.$message.success('澶嶅埗瀹屾瘯')
+ }).catch(err => {
+ this.$message.error('澶嶅埗澶辫触')
+ })
+ },
+ handleLayout (mode) {
+ this.$store.dispatch('ToggleLayoutMode', mode)
+ // 鍥犱负椤堕儴鑿滃崟涓嶈兘鍥哄畾宸︿晶鑿滃崟鏍忥紝鎵�浠ュ己鍒跺叧闂�
+ this.handleFixSiderbar(false)
+ },
+ handleContentWidthChange (type) {
+ this.$store.dispatch('ToggleContentWidth', type)
+ },
+ changeColor (color) {
+ if (this.primaryColor !== color) {
+ this.$store.dispatch('ToggleColor', color)
+ updateTheme(color)
+ }
+ },
+ handleFixedHeader (fixed) {
+ this.$store.dispatch('ToggleFixedHeader', fixed)
+ },
+ handleFixedHeaderHidden (autoHidden) {
+ this.$store.dispatch('ToggleFixedHeaderHidden', autoHidden)
+ },
+ handleFixSiderbar (fixed) {
+ if (this.layoutMode === 'topmenu') {
+ this.$store.dispatch('ToggleFixSiderbar', false)
+ return
+ }
+ this.$store.dispatch('ToggleFixSiderbar', fixed)
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .setting-drawer-index-content {
+
+ .setting-drawer-index-blockChecbox {
+ display: flex;
+
+ .setting-drawer-index-item {
+ margin-right: 16px;
+ position: relative;
+ border-radius: 4px;
+ cursor: pointer;
+
+ img {
+ width: 48px;
+ }
+
+ .setting-drawer-index-selectIcon {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+ padding-top: 15px;
+ padding-left: 24px;
+ height: 100%;
+ color: #1890ff;
+ font-size: 14px;
+ font-weight: 700;
+ }
+ }
+ }
+ .setting-drawer-theme-color-colorBlock {
+ width: 20px;
+ height: 20px;
+ border-radius: 2px;
+ float: left;
+ cursor: pointer;
+ margin-right: 8px;
+ padding-left: 0px;
+ padding-right: 0px;
+ text-align: center;
+ color: #fff;
+ font-weight: 700;
+
+ i {
+ font-size: 14px;
+ }
+ }
+ }
+
+ .setting-drawer-index-handle {
+ position: absolute;
+ top: 240px;
+ background: #1890ff;
+ width: 48px;
+ height: 48px;
+ right: 300px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ pointer-events: auto;
+ z-index: 1001;
+ text-align: center;
+ font-size: 16px;
+ border-radius: 4px 0 0 4px;
+
+ i {
+ color: rgb(255, 255, 255);
+ font-size: 20px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue
new file mode 100644
index 0000000..2b3b553
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/SettingItem.vue
@@ -0,0 +1,38 @@
+<template>
+ <div class="setting-drawer-index-item">
+ <h3 class="setting-drawer-index-title">{{ title }}</h3>
+ <slot></slot>
+ <a-divider v-if="divider"/>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'SettingItem',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ divider: {
+ type: Boolean,
+ default: false
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .setting-drawer-index-item {
+ margin-bottom: 24px;
+
+ .setting-drawer-index-title {
+ font-size: 14px;
+ color: rgba(0, 0, 0, .85);
+ line-height: 22px;
+ margin-bottom: 12px;
+ }
+
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js
new file mode 100644
index 0000000..8260f2d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/index.js
@@ -0,0 +1,2 @@
+import SettingDrawer from './SettingDrawer'
+export default SettingDrawer
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js
new file mode 100644
index 0000000..c45911e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/settingConfig.js
@@ -0,0 +1,46 @@
+import { message } from 'ant-design-vue/es'
+import themeColor from './themeColor.js'
+
+const colorList = [
+ {
+ key: '钖勬毊', color: '#F5222D'
+ },
+ {
+ key: '鐏北', color: '#FA541C'
+ },
+ {
+ key: '鏃ユ毊', color: '#FAAD14'
+ },
+ {
+ key: '鏄庨潚', color: '#13C2C2'
+ },
+ {
+ key: '鏋佸厜缁�', color: '#52C41A'
+ },
+ {
+ key: '鎷傛檽钃濓紙榛樿锛�', color: '#1890FF'
+ },
+ {
+ key: '鏋佸钃�', color: '#2F54EB'
+ },
+ {
+ key: '閰辩传', color: '#722ED1'
+ }
+]
+
+const updateTheme = newPrimaryColor => {
+ const hideMessage = message.loading('姝e湪鍒囨崲涓婚锛�', 0)
+ themeColor.changeColor(newPrimaryColor).finally(t => {
+ setTimeout(() => {
+ hideMessage()
+ }, 10)
+ })
+}
+
+const updateColorWeak = colorWeak => {
+ // document.body.className = colorWeak ? 'colorWeak' : '';
+ const app = document.body.querySelector('#app')
+ colorWeak ? app.classList.add('colorWeak') : app.classList.remove('colorWeak')
+}
+
+export { updateTheme, colorList, updateColorWeak }
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js
new file mode 100644
index 0000000..10dfbd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/SettingDrawer/themeColor.js
@@ -0,0 +1,24 @@
+import client from 'webpack-theme-color-replacer/client'
+import generate from '@ant-design/colors/lib/generate'
+
+export default {
+ getAntdSerials (color) {
+ // 娣″寲锛堝嵆less鐨則int锛�
+ const lightens = new Array(9).fill().map((t, i) => {
+ return client.varyColor.lighten(color, i / 10)
+ })
+ // colorPalette鍙樻崲寰楀埌棰滆壊鍊�
+ const colorPalettes = generate(color)
+ const rgb = client.varyColor.toNum3(color.replace('#', '')).join(',')
+ return lightens.concat(colorPalettes).concat(rgb)
+ },
+ changeColor (newColor) {
+ var options = {
+ newColors: this.getAntdSerials(newColor), // new colors array, one-to-one corresponde with `matchColors`
+ changeUrl (cssUrl) {
+ return `/${cssUrl}` // while router is not `hash` mode, it needs absolute path
+ }
+ }
+ return client.changer.changeColor(options, Promise)
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue
new file mode 100644
index 0000000..a4e261b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/StandardFormRow.vue
@@ -0,0 +1,122 @@
+<template>
+ <div :class="[prefixCls, lastCls, blockCls, gridCls]">
+ <div v-if="title" class="antd-pro-components-standard-form-row-index-label">
+ <span>{{ title }}</span>
+ </div>
+ <div class="antd-pro-components-standard-form-row-index-content">
+ <slot></slot>
+ </div>
+ </div>
+</template>
+
+<script>
+const classes = [
+ 'antd-pro-components-standard-form-row-index-standardFormRowBlock',
+ 'antd-pro-components-standard-form-row-index-standardFormRowGrid',
+ 'antd-pro-components-standard-form-row-index-standardFormRowLast'
+]
+export default {
+ name: 'StandardFormRow',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'antd-pro-components-standard-form-row-index-standardFormRow'
+ },
+ title: {
+ type: String,
+ default: undefined
+ },
+ last: {
+ type: Boolean
+ },
+ block: {
+ type: Boolean
+ },
+ grid: {
+ type: Boolean
+ }
+ },
+ computed: {
+ lastCls () {
+ return this.last ? classes[2] : null
+ },
+ blockCls () {
+ return this.block ? classes[0] : null
+ },
+ gridCls () {
+ return this.grid ? classes[1] : null
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+@import '../index.less';
+
+.antd-pro-components-standard-form-row-index-standardFormRow {
+ display: flex;
+ margin-bottom: 16px;
+ padding-bottom: 16px;
+ border-bottom: 1px dashed @border-color-split;
+
+ /deep/ .ant-form-item {
+ margin-right: 24px;
+ }
+ /deep/ .ant-form-item-label label {
+ margin-right: 0;
+ color: @text-color;
+ }
+ /deep/ .ant-form-item-label,
+ .ant-form-item-control {
+ padding: 0;
+ line-height: 32px;
+ }
+
+ .antd-pro-components-standard-form-row-index-label {
+ flex: 0 0 auto;
+ margin-right: 24px;
+ color: @heading-color;
+ font-size: @font-size-base;
+ text-align: right;
+ & > span {
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ &::after {
+ content: '锛�';
+ }
+ }
+ }
+
+ .antd-pro-components-standard-form-row-index-content {
+ flex: 1 1 0;
+ /deep/ .ant-form-item:last-child {
+ margin-right: 0;
+ }
+ }
+
+ &.antd-pro-components-standard-form-row-index-standardFormRowLast {
+ margin-bottom: 0;
+ padding-bottom: 0;
+ border: none;
+ }
+
+ &.antd-pro-components-standard-form-row-index-standardFormRowBlock {
+ /deep/ .ant-form-item,
+ div.ant-form-item-control-wrapper {
+ display: block;
+ }
+ }
+
+ &.antd-pro-components-standard-form-row-index-standardFormRowGrid {
+ /deep/ .ant-form-item,
+ div.ant-form-item-control-wrapper {
+ display: block;
+ }
+ /deep/ .ant-form-item-label {
+ float: left;
+ }
+ }
+}
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js
new file mode 100644
index 0000000..8155cc7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StandardFormRow/index.js
@@ -0,0 +1,3 @@
+import StandardFormRow from './StandardFormRow'
+
+export default StandardFormRow
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue
new file mode 100644
index 0000000..026b39b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/StationSelect.vue
@@ -0,0 +1,186 @@
+<template>
+ <div class="station-select-component" :style="{with:width}">
+ <div class="select-block">
+ <a-select style="width: 100%" placeholder="浜х嚎" @change="onChangeLine" v-model="value1" :allowClear="allowClear">
+ <a-select-option v-for="(item,index) in list1" :value="item.productionlineId" :key="'lines-sel-'+index">{{item.productionlineName}}</a-select-option>
+ </a-select>
+ </div>
+ <div class="divider"></div>
+ <div class="select-block">
+ <a-select style="width: 100%" placeholder="宸ヤ綅" v-model="value2" :allowClear="allowClear">
+ <a-select-option v-for="(item,index) in list2" :value="item.takeMaterialsSiteId" :key="'stations-sel-'+index">{{item.takeMaterialsSite}}</a-select-option>
+ </a-select>
+ </div>
+ <div class="mask" v-if="loading">
+ <a-icon type="loading" /> Loading...
+ </div>
+ </div>
+</template>
+
+<script>
+import { getUserDefaultLine } from '@/utils/util'
+export default {
+ name:'stationSelectComponent',
+ emits:['input','change'],
+ props:{
+ width:{
+ type:String,
+ default:'100%'
+ },
+ value:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ allowClear:{
+ type:Boolean,
+ default:false
+ },
+ getLines:{
+ default:function(){
+ return function(){
+ return new Promise(function(resolve){
+ resolve(null)
+ })
+ }
+ }
+ },
+ getStations:{
+ default:function(){
+ return function(){
+ return new Promise(function(resolve){
+ resolve(null)
+ })
+ }
+ }
+ }
+ },
+ data(){
+ return {
+ list1:[],
+ list2:[],
+ value1:undefined,
+ value2:undefined,
+ loading:false
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ watch:{
+ value1(newVal,oldVal){
+ if (newVal!==oldVal) {
+ this.backValue()
+ }
+ },
+ value2(newVal,oldVal){
+ if (newVal!==oldVal) {
+ this.backValue()
+ }
+ }
+ },
+ methods:{
+ clear(){
+ this.value1 = undefined
+ this.value2 = undefined
+ this.list2 = []
+ },
+ init(){
+ this.initValue()
+ this.loading = true
+ this.getLines().then((d)=>{
+ this.list1 = d.data || []
+ this.setDefaultInitLine()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ setDefaultInitLine(){
+ let val = getUserDefaultLine(this.$store,this.list1,'productionlineId')
+ if (!val && this.list1.length===1) {
+ val = this.list1[0].productionlineId
+ }
+ this.value1 = val
+ this.changeLine(val)
+ },
+ initValue(){
+ if (this.value[0]) this.value1 = this.value[0]
+ if (this.value[1]) this.value2 = this.value[1]
+ },
+ onChangeLine(val){
+ this.changeLine(val,false)
+ },
+ changeLine(val,init=true){
+ if (val) {
+ this.loading = true;
+ this.getStations(val).then((d)=>{
+ this.list2 = d.data || []
+ if (this.list2.length===1) {
+ let val = this.list2[0].takeMaterialsSiteId
+ this.value2 = val
+ }
+ this.loading = false;
+ }).catch(()=>{
+ this.list2 = []
+ this.value2 = undefined
+ this.loading = false;
+ })
+ } else {
+ if (!init) {
+ this.list2 = []
+ this.value2 = undefined
+ }
+ }
+ },
+ backValue(){
+ this.$emit('input',[this.value1,this.value2])
+ this.$emit('change',[this.value1,this.value2])
+ },
+ getFullValue(){
+ let res = [null,null]
+ for (let i=0;i<this.list1.length;i++) {
+ if (this.list1[i].productionlineId===this.value1) {
+ res[0] = {...this.list1[i]}
+ break;
+ }
+ }
+ for (let i=0;i<this.list2.length;i++) {
+ if (this.list2[i].takeMaterialsSiteId===this.value2) {
+ res[1] = {...this.list2[i]}
+ break;
+ }
+ }
+ return res
+ }
+ }
+}
+</script>
+
+<style scoped lang="less">
+.station-select-component{
+ display: flex;
+ position: relative;
+ .select-block{
+ width: 1px;
+ flex-grow: 1;
+ }
+ .divider{
+ flex-shrink: 0;
+ width: 4px;
+ }
+ .mask{
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #F0F8FF;
+ overflow: hidden;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md b/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md
new file mode 100644
index 0000000..8e32dd0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/README.md
@@ -0,0 +1,338 @@
+Table 閲嶅皝瑁呯粍浠惰鏄�
+====
+
+
+灏佽璇存槑
+----
+
+> 鍩虹鐨勪娇鐢ㄦ柟寮忎笌 API 涓� [瀹樻柟鐗�(Table)](https://vuecomponent.github.io/ant-design-vue/components/table-cn/) 鏈竴鑷达紝鍦ㄥ叾鍩虹涓婏紝灏佽浜嗗姞杞芥暟鎹殑鏂规硶銆�
+>
+> 浣犳棤闇�鍦ㄤ綘鏄敤琛ㄦ牸鐨勯〉闈㈣繘琛屽垎椤甸�昏緫澶勭悊锛屼粎闇�鍚� Table 缁勪欢浼犻�掔粦瀹� `:data="Promise"` 瀵硅薄鍗冲彲
+
+璇� `table` 鐢� [@Saraka](https://github.com/saraka-tsukai) 瀹屾垚灏佽
+
+
+渚嬪瓙1
+----
+锛堝熀纭�浣跨敤锛�
+
+```vue
+
+<template>
+ <s-table
+ ref="table"
+ :rowKey="(record) => record.data.id"
+ :columns="columns"
+ :data="loadData"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ </s-table>
+</template>
+
+<script>
+ import STable from '@/components'
+
+ export default {
+ components: {
+ STable
+ },
+ data() {
+ return {
+ columns: [
+ {
+ title: '瑙勫垯缂栧彿',
+ dataIndex: 'no'
+ },
+ {
+ title: '鎻忚堪',
+ dataIndex: 'description'
+ },
+ {
+ title: '鏈嶅姟璋冪敤娆℃暟',
+ dataIndex: 'callNo',
+ sorter: true,
+ needTotal: true,
+ customRender: (text) => text + ' 娆�'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ needTotal: true
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ dataIndex: 'updatedAt',
+ sorter: true
+ }
+ ],
+ // 鏌ヨ鏉′欢鍙傛暟
+ queryParam: {},
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return this.$http.get('/service', {
+ params: Object.assign(parameter, this.queryParam)
+ }).then(res => {
+ return res.result
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ methods: {
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+
+```
+
+
+
+渚嬪瓙2
+----
+
+锛堢畝鍗曠殑琛ㄦ牸锛屾渶鍚庝竴鍒楁槸鍚勭鎿嶄綔锛�
+
+```vue
+<template>
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ >
+ <span slot="action" slot-scope="text, record">
+ <a>缂栬緫</a>
+ <a-divider type="vertical"/>
+ <a-dropdown>
+ <a class="ant-dropdown-link">
+ 鏇村 <a-icon type="down"/>
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a href="javascript:;">1st menu item</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">2nd menu item</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">3rd menu item</a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+</template>
+
+<script>
+ import STable from '@/components/table/'
+
+ export default {
+ components: {
+ STable
+ },
+ data() {
+ return {
+ columns: [
+ {
+ title: '瑙勫垯缂栧彿',
+ dataIndex: 'no'
+ },
+ {
+ title: '鎻忚堪',
+ dataIndex: 'description'
+ },
+ {
+ title: '鏈嶅姟璋冪敤娆℃暟',
+ dataIndex: 'callNo',
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ dataIndex: 'updatedAt',
+ },
+ {
+ table: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {customRender: 'action'},
+ }
+ ],
+ // 鏌ヨ鏉′欢鍙傛暟
+ queryParam: {},
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return this.$http.get('/service', {
+ params: Object.assign(parameter, this.queryParam)
+ }).then(res => {
+ return res.result
+ })
+ },
+ }
+ },
+ methods: {
+ edit(row) {
+ // axios 鍙戦�佹暟鎹埌鍚庣 淇敼鏁版嵁鎴愬姛鍚�
+ // 璋冪敤 refresh() 閲嶆柊鍔犺浇鍒楄〃鏁版嵁
+ // 杩欓噷 setTimeout 妯℃嫙鍙戣捣璇锋眰鐨勭綉缁滃欢杩�..
+ setTimeout(() => {
+ this.$refs.table.refresh() // refresh() 涓嶄紶鍙傞粯璁ゅ�� false 涓嶅埛鏂板埌鍒嗛〉绗竴椤�
+ }, 1500)
+
+ }
+ }
+ }
+</script>
+```
+
+
+
+鍐呯疆鏂规硶
+----
+
+閫氳繃 `this.$refs.table` 璋冪敤
+
+`this.$refs.table.refresh(true)` 鍒锋柊鍒楄〃 (鐢ㄦ埛鏂板/淇敼鏁版嵁鍚庯紝閲嶈浇鍒楄〃鏁版嵁)
+
+> 娉ㄦ剰锛氳璋冪敤 `refresh(bool)` 闇�瑕佺粰琛ㄦ牸缁勪欢璁惧畾 `ref` 鍊�
+>
+> `refresh()` 鏂规硶鍙互浼犱竴涓� `bool` 鍊硷紝褰撴湁浼犲�� 鎴栧�间负 `true` 鏃讹紝鍒欏埛鏂版椂浼氬己鍒跺埛鏂板埌绗竴椤碉紙甯哥敤鎴烽〉闈� 鎼滅储 鎸夐挳杩涜鎼滅储鏃讹紝缁撴灉浠庣涓�椤靛紑濮嬪垎椤碉級
+
+
+鍐呯疆灞炴��
+----
+> 闄ゅ幓 `a-table` 鑷甫灞炴�у锛岃繕鑰屽鎻愪緵浜嗕竴浜涢澶栧睘鎬у睘鎬�
+
+
+| 灞炴�� | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+| -------------- | ----------------------------------------------- | ----------------- | ------ |
+| alert | 璁剧疆鏄惁鏄剧ず琛ㄦ牸淇℃伅鏍� | [object, boolean] | null |
+| showPagination | 鏄剧ず鍒嗛〉閫夋嫨鍣紝鍙紶 'auto' \| boolean | [string, boolean] | 'auto' |
+| data | 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� `Promise` 瀵硅薄 **蹇呴』缁戝畾** | Promise | - |
+
+
+`alert` 灞炴�у璞★細
+
+```javascript
+alert: {
+ show: Boolean,
+ clear: [Function, Boolean]
+}
+```
+
+娉ㄦ剰浜嬮」
+----
+
+> 浣犲彲鑳介渶瑕佷负浜嗕笌鍚庣鎻愪緵鐨勬帴鍙h繑鍥炵粨鏋滀竴鑷磋�屽幓淇敼浠ヤ笅浠g爜锛�
+> (闇�瑕佹敞鎰忕殑鏄紝杩欓噷鐨勪慨鏀规槸鍏ㄥ眬鎬х殑锛屾剰鍛崇潃鏁翠釜椤圭洰鎵�鏈変娇鐢ㄨ table 缁勪欢閮介渶瑕侀伒瀹堣繖涓繑鍥炵粨鏋滃畾涔夌殑瀛楁銆�)
+>
+> 鏂囨。涓殑缁撴瀯鏈夊彲鑳界敱浜庣粍浠� bug 杩涜淇鑰屾敼鍔ㄣ�傚疄闄呬慨鏀硅浠ュ綋鏃舵渶鏂扮増鏈负鍑�
+
+淇敼 `@/components/table/index.js` 绗� 156 琛岃捣
+
+
+
+```javascript
+result.then(r => {
+ this.localPagination = this.showPagination && Object.assign({}, this.localPagination, {
+ current: r.pageNo, // 杩斿洖缁撴灉涓殑褰撳墠鍒嗛〉鏁�
+ total: r.totalCount, // 杩斿洖缁撴灉涓殑鎬昏褰曟暟
+ showSizeChanger: this.showSizeChanger,
+ pageSize: (pagination && pagination.pageSize) ||
+ this.localPagination.pageSize
+ }) || false
+ // 涓洪槻姝㈠垹闄ゆ暟鎹悗瀵艰嚧椤甸潰褰撳墠椤甸潰鏁版嵁闀垮害涓� 0 ,鑷姩缈婚〉鍒颁笂涓�椤�
+ if (r.data.length === 0 && this.showPagination && this.localPagination.current > 1) {
+ this.localPagination.current--
+ this.loadData()
+ return
+ }
+
+ // 杩欓噷鐢ㄤ簬鍒ゆ柇鎺ュ彛鏄惁鏈夎繑鍥� r.totalCount 涓� this.showPagination = true 涓� pageNo 鍜� pageSize 瀛樺湪 涓� totalCount 灏忎簬绛変簬 pageNo * pageSize 鐨勫ぇ灏�
+ // 褰撴儏鍐垫弧瓒虫椂锛岃〃绀烘暟鎹笉婊¤冻鍒嗛〉澶у皬锛屽叧闂� table 鍒嗛〉鍔熻兘
+ try {
+ if ((['auto', true].includes(this.showPagination) && r.totalCount <= (r.pageNo * this.localPagination.pageSize))) {
+ this.localPagination.hideOnSinglePage = true
+ }
+ } catch (e) {
+ this.localPagination = false
+ }
+ this.localDataSource = r.data // 杩斿洖缁撴灉涓殑鏁扮粍鏁版嵁
+ this.localLoading = false
+ })
+```
+杩斿洖 JSON 渚嬪瓙锛�
+```json
+{
+ "message": "",
+ "result": {
+ "data": [{
+ id: 1,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+ title: 'Alipay',
+ description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 2,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+ title: 'Angular',
+ description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 3,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+ title: 'Ant Design',
+ description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 4,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+ title: 'Admin.NET',
+ description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 5,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+ title: 'Bootstrap',
+ description: '鍑涘啲灏嗚嚦',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 6,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+ title: 'Vue',
+ description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ }
+ ],
+ "pageSize": 10,
+ "pageNo": 0,
+ "totalPage": 6,
+ "totalCount": 57
+ },
+ "status": 200,
+ "timestamp": 1534955098193
+}
+```
+
+
+
+鏇存柊鏃堕棿
+----
+
+璇ユ枃妗f渶鍚庢洿鏂颁簬锛� 2019-06-23 PM 17:19
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue b/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue
new file mode 100644
index 0000000..7b68f9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/columnSetting.vue
@@ -0,0 +1,104 @@
+<!--
+ * @Author: 闄堢鏂� 15821704398@163.com
+ * @Date: 2024-02-19 15:02:50
+ * @LastEditors: 闄堢鏂� 15821704398@163.com
+ * @LastEditTime: 2024-02-20 10:50:22
+ * @FilePath: \zhaoshang-Les-web\src\components\Table\columnSetting.vue
+ * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+ <div slot="overlay" class="ant-dropdown-menu s-tool-column ant-dropdown-content">
+ <div class="s-tool-column-header s-tool-column-item">
+ <a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onCheckAllChange">
+ 鍒楀睍绀�
+ </a-checkbox>
+ <a @click="reset">閲嶇疆</a>
+ </div>
+ <a-divider />
+ <div class="ant-checkbox-group">
+ <div>
+ <draggable v-model="columnsSetting" animation="300" @end="emitColumnChange">
+ <div class="s-tool-column-item" v-for="item in columnsSetting" :key="item.title">
+ <div class="s-tool-column-handle" >
+ <a-icon type="more"/>
+ <a-icon type="more"/>
+ </div>
+ <a-checkbox v-model="item.checked" @change="onChange">{{ item.title }}</a-checkbox>
+ </div>
+ </draggable>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+ import draggable from 'vuedraggable'
+
+ export default {
+ props: {
+ columns: {
+ type: Array,
+ default: () => ([])
+ }
+ },
+ components: {
+ draggable
+ },
+ data() {
+ return {
+ indeterminate: false,
+ checkAll: true,
+ columnsSetting: [],
+ originColumns: []
+ }
+ },
+ methods: {
+ reset() {
+ const path = this.$route.path
+ this.columnsSetting = JSON.parse(JSON.stringify(this.originColumns))
+ window.localStorage.removeItem(path)
+ this.indeterminate = false
+ this.checkAll = true
+ this.emitColumnChange()
+ },
+ onChange() {
+ const path = this.$route.path
+ window.localStorage.setItem(path,JSON.stringify(this.columnsSetting))
+ const checkedList = this.columnsSetting.filter(value => value.checked)
+ this.indeterminate = !!checkedList.length && checkedList.length < this.columnsSetting.length
+ this.checkAll = checkedList.length === this.columnsSetting.length
+ this.emitColumnChange()
+ },
+ onCheckAllChange(e) {
+ const val = e.target.checked
+ Object.assign(this, {
+ indeterminate: false,
+ checkAll: val,
+ columnsSetting: this.columns.map(value => ({ ...value, checked: val }))
+ })
+ this.emitColumnChange()
+ },
+ emitColumnChange() {
+ this.$emit('columnChange', this.columnsSetting)
+ }
+ },
+ mounted() {
+ const path = this.$route.path
+ let str = window.localStorage.getItem(path)
+ console.log(str,'str')
+ if(str) {
+ this.columnsSetting = JSON.parse(str)
+ this.originColumns = JSON.parse(JSON.stringify(this.columnsSetting))
+ }else {
+ this.columnsSetting = this.columns.map(value => ({ ...value, checked: true }))
+ this.originColumns = JSON.parse(JSON.stringify(this.columnsSetting))
+ window.localStorage.setItem(path,JSON.stringify(columnsSetting))
+ }
+
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js
new file mode 100644
index 0000000..1d7bd25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.js
@@ -0,0 +1,487 @@
+import T from 'ant-design-vue/es/table/Table'
+import get from 'lodash.get'
+import draggable from 'vuedraggable'
+import columnSetting from './columnSetting'
+import './index.less'
+
+export default {
+ components: {
+ draggable,
+ columnSetting
+ },
+ data() {
+ return {
+ needTotalList: [],
+
+ selectedRows: [],
+ selectedRowKeys: [],
+
+ localLoading: false,
+ localDataSource: [],
+ localPagination: Object.assign({}, this.pagination),
+ isFullscreen: false,
+ customSize: this.size,
+ columnsSetting: []
+ }
+ },
+ props: Object.assign({}, T.props, {
+ rowKey: {
+ type: [String, Function],
+ default: 'key'
+ },
+ data: {
+ type: Function,
+ required: true
+ },
+ pageNum: {
+ type: Number,
+ default: 1
+ },
+ pageSize: {
+ type: Number,
+ default: 10
+ },
+ pageSizeOptions: {
+ type: Array,
+ default: function() {
+ return ['10', '20', '30', '40']
+ }
+ },
+ showSizeChanger: {
+ type: Boolean,
+ default: true
+ },
+ size: {
+ type: String,
+ default: 'middle'
+ },
+ /**
+ * alert: {
+ * show: true,
+ * clear: Function
+ * }
+ */
+ alert: {
+ type: [Object, Boolean],
+ default: null
+ },
+ rowSelection: {
+ type: Object,
+ default: null
+ },
+ /** @Deprecated */
+ showAlertInfo: {
+ type: Boolean,
+ default: false
+ },
+ showPagination: {
+ type: String | Boolean,
+ default: 'auto'
+ },
+ /**
+ * enable page URI mode
+ *
+ * e.g:
+ * /users/1
+ * /users/2
+ * /users/3?queryParam=test
+ * ...
+ */
+ pageURI: {
+ type: Boolean,
+ default: false
+ },
+ extraTool: {
+ type: Array,
+ default: () => []
+ }
+ }),
+ watch: {
+ 'localPagination.current'(val) {
+ this.$emit('changeTablePage', {
+ current: val,
+ pageSize: this.localPagination.pageSize
+ })
+ this.pageURI &&
+ this.$router.push({
+ ...this.$route,
+ name: this.$route.name,
+ params: Object.assign({}, this.$route.params, {
+ pageNo: val
+ })
+ })
+ },
+ pageNum(val) {
+ Object.assign(this.localPagination, {
+ current: val
+ })
+ },
+ pageSize(val) {
+ Object.assign(this.localPagination, {
+ pageSize: val
+ })
+ },
+ showSizeChanger(val) {
+ Object.assign(this.localPagination, {
+ showSizeChanger: val
+ })
+ }
+ },
+ created() {
+ const { pageNo } = this.$route.params
+ const localPageNum = (this.pageURI && pageNo && parseInt(pageNo)) || this.pageNum
+ this.localPagination =
+ (['auto', true].includes(this.showPagination) &&
+ Object.assign({}, this.localPagination, {
+ current: localPageNum,
+ pageSize: this.pageSize,
+ pageSizeOptions: this.pageSizeOptions,
+ showSizeChanger: this.showSizeChanger,
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ }
+ })) ||
+ false
+ this.needTotalList = this.initTotalList(this.columns)
+ this.loadData()
+ this.columnsSetting = this.columns
+ },
+ methods: {
+ /**
+ * 琛ㄦ牸閲嶆柊鍔犺浇鏂规硶
+ * 濡傛灉鍙傛暟涓� true, 鍒欏己鍒跺埛鏂板埌绗竴椤�
+ * @param Boolean bool
+ */
+ refresh(bool = false) {
+ bool &&
+ (this.localPagination = Object.assign(
+ {},
+ {
+ current: 1,
+ pageSize: this.pageSize
+ }
+ ))
+ this.loadData()
+ },
+ /**
+ * 鍔犺浇鏁版嵁鏂规硶
+ * @param {Object} pagination 鍒嗛〉閫夐」鍣�
+ * @param {Object} filters 杩囨护鏉′欢
+ * @param {Object} sorter 鎺掑簭鏉′欢
+ */
+ loadData(pagination, filters, sorter) {
+ this.localLoading = true
+ const parameter = Object.assign(
+ {
+ pageNo:
+ (pagination && pagination.current) || (this.showPagination && this.localPagination.current) || this.pageNum,
+ pageSize:
+ (pagination && pagination.pageSize) ||
+ (this.showPagination && this.localPagination.pageSize) ||
+ this.pageSize
+ },
+ (sorter &&
+ sorter.field && {
+ sortField: sorter.field
+ }) ||
+ {},
+ (sorter &&
+ sorter.order && {
+ sortOrder: sorter.order
+ }) ||
+ {},
+ {
+ ...filters
+ }
+ )
+ const result = this.data(parameter)
+ // 瀵规帴鑷繁鐨勯�氱敤鏁版嵁鎺ュ彛闇�瑕佷慨鏀逛笅鏂逛唬鐮佷腑鐨� r.pageNo, r.totalCount, r.data
+ // eslint-disable-next-line
+ if ((typeof result === 'object' || typeof result === 'function') && typeof result.then === 'function') {
+ result.then(r => {
+ if (r == null) {
+ this.localLoading = false
+ return
+ }
+ this.localPagination =
+ (this.showPagination &&
+ Object.assign({}, this.localPagination, {
+ current: r.pageNo, // pageNo, // 杩斿洖缁撴灉涓殑褰撳墠鍒嗛〉鏁�
+ total: r.totalRows, // totalCount, // 杩斿洖缁撴灉涓殑鎬昏褰曟暟
+ showSizeChanger: this.showSizeChanger,
+ pageSize: (pagination && pagination.pageSize) || this.localPagination.pageSize
+ })) ||
+ false
+ // 鍚庣鏁版嵁rows涓簄ull淇濆瓨淇
+ if (r.rows == null) {
+ r.rows = []
+ }
+ // 涓洪槻姝㈠垹闄ゆ暟鎹悗瀵艰嚧椤甸潰褰撳墠椤甸潰鏁版嵁闀垮害涓� 0 ,鑷姩缈婚〉鍒颁笂涓�椤�
+ if (r.rows.length === 0 && this.showPagination && this.localPagination.current > 1) {
+ this.localPagination.current--
+ this.loadData()
+ return
+ }
+
+ // 杩欓噷鐢ㄤ簬鍒ゆ柇鎺ュ彛鏄惁鏈夎繑鍥� r.totalCount 涓� this.showPagination = true 涓� pageNo 鍜� pageSize 瀛樺湪 涓� totalCount 灏忎簬绛変簬 pageNo * pageSize 鐨勫ぇ灏�
+ // 褰撴儏鍐垫弧瓒虫椂锛岃〃绀烘暟鎹笉婊¤冻鍒嗛〉澶у皬锛屽叧闂� table 鍒嗛〉鍔熻兘
+ try {
+ if (
+ ['auto', true].includes(this.showPagination) &&
+ r.totalCount <= r.totalPage * this.localPagination.pageSize
+ ) {
+ this.localPagination.hideOnSinglePage = true
+ }
+ } catch (e) {
+ this.localPagination = false
+ }
+ this.localDataSource = r.rows // 杩斿洖缁撴灉涓殑鏁扮粍鏁版嵁
+ this.localLoading = false
+ })
+ }
+ },
+ initTotalList(columns) {
+ const totalList = []
+ columns &&
+ columns instanceof Array &&
+ columns.forEach(column => {
+ if (column.needTotal) {
+ totalList.push({
+ ...column,
+ total: 0
+ })
+ }
+ })
+ return totalList
+ },
+ /**
+ * 鐢ㄤ簬鏇存柊宸查�変腑鐨勫垪琛ㄦ暟鎹� total 缁熻
+ * @param selectedRowKeys
+ * @param selectedRows
+ */
+ updateSelect(selectedRowKeys, selectedRows) {
+ this.selectedRows = selectedRows
+ this.selectedRowKeys = selectedRowKeys
+ const list = this.needTotalList
+ this.needTotalList = list.map(item => {
+ return {
+ ...item,
+ total: selectedRows.reduce((sum, val) => {
+ const total = sum + parseInt(get(val, item.dataIndex))
+ return isNaN(total) ? 0 : total
+ }, 0)
+ }
+ })
+ },
+ /**
+ * 娓呯┖ table 宸查�変腑椤�
+ */
+ clearSelected() {
+ if (this.rowSelection) {
+ this.rowSelection.onChange([], [])
+ this.updateSelect([], [])
+ }
+ },
+ /**
+ * 澶勭悊浜ょ粰 table 浣跨敤鑰呭幓澶勭悊 clear 浜嬩欢鏃讹紝鍐呴儴閫変腑缁熻鍚屾椂璋冪敤
+ * @param callback
+ * @returns {*}
+ */
+ renderClear(callback) {
+ if (this.selectedRowKeys.length <= 0) return null
+ return (
+ <a
+ style="margin-left: 24px"
+ onClick={() => {
+ callback()
+ this.clearSelected()
+ }}
+ >
+ 娓呯┖
+ </a>
+ )
+ },
+ renderAlert() {
+ // 缁樺埗缁熻鍒楁暟鎹�
+ // eslint-disable-next-line no-unused-vars
+ const needTotalItems = this.needTotalList.map(item => {
+ return (
+ <span style="margin-right: 12px">
+ {item.title}鎬昏{' '}
+ <a style="font-weight: 600">{!item.customRender ? item.total : item.customRender(item.total)}</a>
+ </span>
+ )
+ })
+
+ // 缁樺埗 娓呯┖ 鎸夐挳
+ // eslint-disable-next-line no-unused-vars
+ const clearItem =
+ typeof this.alert.clear === 'boolean' && this.alert.clear
+ ? this.renderClear(this.clearSelected)
+ : this.alert !== null && typeof this.alert.clear === 'function'
+ ? this.renderClear(this.alert.clear)
+ : null
+
+ // 缁樺埗 alert 缁勪欢
+ // 缁熶竴鍏堝幓闄lert缁勪欢
+ return ''
+ /* return (
+ <a-alert showIcon={true} style="margin-bottom: 16px">
+ <template slot="message">
+ <span style="margin-right: 12px">宸查�夋嫨: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
+ {needTotalItems}
+ {clearItem}
+ </template>
+ </a-alert>
+ ) */
+ },
+ columnChange(val) {
+ this.columnsSetting = val
+ },
+ renderHeader() {
+ let tools = [
+ {
+ icon: 'reload',
+ title: '鍒锋柊',
+ onClick: () => {
+ this.refresh()
+ }
+ },
+ {
+ icon: 'column-height',
+ title: '瀵嗗害',
+ isDropdown: true,
+ menu: () => {
+ const onClick = ({ key }) => {
+ this.customSize = key
+ }
+ return (
+ <a-menu slot="overlay" onClick={onClick} selectable defaultSelectedKeys={[this.customSize]}>
+ <a-menu-item key="default">榛樿</a-menu-item>
+ <a-menu-item key="middle">涓瓑</a-menu-item>
+ <a-menu-item key="small">绱у噾</a-menu-item>
+ </a-menu>
+ )
+ },
+ onClick: () => {}
+ },
+ {
+ icon: 'setting',
+ title: '鍒楄缃�',
+ isDropdown: true,
+ menu: () => {
+ return <columnSetting slot="overlay" columns={this.columns} onColumnChange={this.columnChange} />
+ },
+ onClick: () => {}
+ }
+ ]
+ if (this.extraTool.length) {
+ tools = tools.concat(this.extraTool)
+ }
+
+ return (
+ <div class="s-table-tool">
+ <div class="s-table-tool-left">{this.$scopedSlots.operator && this.$scopedSlots.operator()}</div>
+ <div class="s-table-tool-right">
+ {tools.map(tool => {
+ if (tool.isDropdown) {
+ return (
+ <a-dropdown trigger={['click']}>
+ <a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
+ <a-icon type={tool.icon} />
+ </a-tooltip>
+ {tool.menu()}
+ </a-dropdown>
+ )
+ }
+ return (
+ <a-tooltip title={tool.title} class="s-tool-item" onClick={tool.onClick}>
+ <a-icon type={tool.icon} />
+ </a-tooltip>
+ )
+ })}
+ </div>
+ </div>
+ )
+ /* return (
+ <a-alert showIcon={true} style="margin-bottom: 16px">
+ <template slot="message">
+ <span style="margin-right: 12px">宸查�夋嫨: <a style="font-weight: 600">{this.selectedRows.length}</a></span>
+ {needTotalItems}
+ {clearItem}
+ </template>
+ </a-alert>
+ ) */
+ }
+ },
+
+ render() {
+ let props = {}
+ const localKeys = Object.keys(this.$data)
+ const showAlert =
+ (typeof this.alert === 'object' &&
+ this.alert !== null &&
+ this.alert.show &&
+ typeof this.rowSelection.selectedRowKeys !== 'undefined') ||
+ this.alert
+
+ Object.keys(T.props).forEach(k => {
+ const localKey = `local${k.substring(0, 1).toUpperCase()}${k.substring(1)}`
+ if (localKeys.includes(localKey)) {
+ props[k] = this[localKey]
+ return props[k]
+ }
+ if (k === 'rowSelection') {
+ if (showAlert && this.rowSelection) {
+ // 濡傛灉闇�瑕佷娇鐢╝lert锛屽垯閲嶆柊缁戝畾 rowSelection 浜嬩欢
+ props[k] = {
+ ...this.rowSelection,
+ selectedRows: this.selectedRows,
+ selectedRowKeys: this.selectedRowKeys,
+ onChange: (selectedRowKeys, selectedRows) => {
+ this.updateSelect(selectedRowKeys, selectedRows)
+ typeof this[k].onChange !== 'undefined' && this[k].onChange(selectedRowKeys, selectedRows)
+ }
+ }
+ return props[k]
+ } else if (!this.rowSelection) {
+ // 濡傛灉娌℃墦绠楀紑鍚� rowSelection 鍒欐竻绌洪粯璁ょ殑閫夋嫨椤�
+ props[k] = null
+ return props[k]
+ }
+ }
+ this[k] && (props[k] = this[k])
+ // 姝ゅ閰嶇疆琛ㄦ牸澶у皬涓庤鏄剧ず鐨勫垪
+ props = {
+ ...props,
+ size: this.customSize,
+ columns: this.columnsSetting.filter(value => value.checked === undefined || value.checked)
+ }
+ return props[k]
+ })
+ /* if (props.pagination){
+ props.pagination.pageSizeOptions = [...this.pageSizeOptions]
+ } */
+ const table = (
+ <a-table
+ {...{ props, scopedSlots: { ...this.$scopedSlots } }}
+ onChange={this.loadData}
+ onExpand={(expanded, record) => {
+ this.$emit('expand', expanded, record)
+ }}
+ >
+ {Object.keys(this.$slots).map(name => (
+ <template slot={name}>{this.$slots[name]}</template>
+ ))}
+ </a-table>
+ )
+
+ return (
+ <div class="table-wrapper">
+ {this.renderHeader()}
+ {showAlert ? this.renderAlert() : null}
+ {table}
+ </div>
+ )
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less
new file mode 100644
index 0000000..3ef6793
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Table/index.less
@@ -0,0 +1,54 @@
+.table-wrapper{
+ background: #fff;
+}
+.s-table-tool{
+ display: flex;
+ margin-bottom: 16px;
+ .s-table-tool-left{
+ flex: 1;
+ }
+ .s-table-tool-right{
+ display: inline-flex;
+ align-items: center;
+ .s-tool-item{
+ font-size: 16px;
+ margin-left: 16px;
+ cursor: pointer;
+
+ }
+ }
+}
+
+.s-tool-column-item{
+ display: flex;
+ align-items: center;
+ padding: 4px 16px 4px 4px;
+ .ant-checkbox-wrapper{
+ flex: 1;
+ }
+ .s-tool-column-handle{
+ opacity: .8;
+ cursor: move;
+ .anticon-more{
+ font-size: 12px;
+ margin-top: 2px;
+ & + .anticon-more{
+ margin: 2px 4px 0 -8px;
+ }
+ }
+ }
+}
+.s-tool-column-header{
+ padding: 5px 16px 10px 24px;
+ min-width: 180px;
+}
+.s-tool-column{
+ .ant-divider{
+ margin: 0;
+ }
+ .ant-checkbox-group{
+ padding: 4px 0;
+ display: block;
+ }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx
new file mode 100644
index 0000000..b5ae799
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/TagSelectOption.jsx
@@ -0,0 +1,45 @@
+import { Tag } from 'ant-design-vue'
+const { CheckableTag } = Tag
+
+export default {
+ name: 'TagSelectOption',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-tag-select-option'
+ },
+ value: {
+ type: [String, Number, Object],
+ default: ''
+ },
+ checked: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data () {
+ return {
+ localChecked: this.checked || false
+ }
+ },
+ watch: {
+ 'checked' (val) {
+ this.localChecked = val
+ },
+ '$parent.items': {
+ handler: function (val) {
+ this.value && val.hasOwnProperty(this.value) && (this.localChecked = val[this.value])
+ },
+ deep: true
+ }
+ },
+ render () {
+ const { $slots, value } = this
+ const onChange = (checked) => {
+ this.$emit('change', { value, checked })
+ }
+ return (<CheckableTag key={value} vModel={this.localChecked} onChange={onChange}>
+ {$slots.default}
+ </CheckableTag>)
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx
new file mode 100644
index 0000000..af98ad7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TagSelect/index.jsx
@@ -0,0 +1,113 @@
+import PropTypes from 'ant-design-vue/es/_util/vue-types'
+import Option from './TagSelectOption.jsx'
+import { filterEmpty } from '@/components/_util/util'
+
+export default {
+ Option,
+ name: 'TagSelect',
+ model: {
+ prop: 'checked',
+ event: 'change'
+ },
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-tag-select'
+ },
+ defaultValue: {
+ type: PropTypes.array,
+ default: null
+ },
+ value: {
+ type: PropTypes.array,
+ default: null
+ },
+ expandable: {
+ type: Boolean,
+ default: false
+ },
+ hideCheckAll: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data () {
+ return {
+ expand: false,
+ localCheckAll: false,
+ items: this.getItemsKey(filterEmpty(this.$slots.default)),
+ val: this.value || this.defaultValue || []
+ }
+ },
+ methods: {
+ onChange (checked) {
+ const key = Object.keys(this.items).filter(key => key === checked.value)
+ this.items[key] = checked.checked
+ const bool = Object.values(this.items).lastIndexOf(false)
+ if (bool === -1) {
+ this.localCheckAll = true
+ } else {
+ this.localCheckAll = false
+ }
+ },
+ onCheckAll (checked) {
+ Object.keys(this.items).forEach(v => {
+ this.items[v] = checked.checked
+ })
+ this.localCheckAll = checked.checked
+ },
+ getItemsKey (items) {
+ const totalItem = {}
+ items.forEach(item => {
+ totalItem[item.componentOptions.propsData && item.componentOptions.propsData.value] = false
+ })
+ return totalItem
+ },
+ // CheckAll Button
+ renderCheckAll () {
+ const props = {
+ on: {
+ change: (checked) => {
+ this.onCheckAll(checked)
+ checked.value = 'total'
+ this.$emit('change', checked)
+ }
+ }
+ }
+ const checkAllElement = <Option key={'total'} checked={this.localCheckAll} {...props}>All</Option>
+ return !this.hideCheckAll && checkAllElement || null
+ },
+ // expandable
+ renderExpandable () {
+
+ },
+ // render option
+ renderTags (items) {
+ const listeners = {
+ change: (checked) => {
+ this.onChange(checked)
+ this.$emit('change', checked)
+ }
+ }
+
+ return items.map(vnode => {
+ const options = vnode.componentOptions
+ options.listeners = listeners
+ return vnode
+ })
+ }
+ },
+ render () {
+ const { $props: { prefixCls } } = this
+ const classString = {
+ [`${prefixCls}`]: true
+ }
+ const tagItems = filterEmpty(this.$slots.default)
+ return (
+ <div class={classString}>
+ {this.renderCheckAll()}
+ {this.renderTags(tagItems)}
+ </div>
+ )
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx
new file mode 100644
index 0000000..00aeb2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/index.jsx
@@ -0,0 +1,69 @@
+import './style.less'
+import { getStrFullLength, cutStrByFullLength } from '../_util/util'
+import Input from 'ant-design-vue/es/input'
+const TextArea = Input.TextArea
+
+export default {
+ name: 'LimitTextArea',
+ model: {
+ prop: 'value',
+ event: 'change'
+ },
+ props: Object.assign({}, TextArea.props, {
+ prefixCls: {
+ type: String,
+ default: 'ant-textarea-limit'
+ },
+ // eslint-disable-next-line
+ value: {
+ type: String
+ },
+ limit: {
+ type: Number,
+ default: 200
+ }
+ }),
+ data () {
+ return {
+ currentLimit: 0
+ }
+ },
+ watch: {
+ value (val) {
+ this.calcLimitNum(val)
+ }
+ },
+ created () {
+ this.calcLimitNum(this.value)
+ },
+ methods: {
+ handleChange (e) {
+ const value = e.target.value
+ const len = getStrFullLength(value)
+ if (len <= this.limit) {
+ this.currentLimit = len
+ this.$emit('change', value)
+ return
+ } else {
+ const str = cutStrByFullLength(value, this.limit)
+ this.currentLimit = getStrFullLength(str)
+ this.$emit('change', str)
+ }
+ console.error('limit out! currentLimit:', this.currentLimit)
+ },
+ calcLimitNum (val) {
+ const len = getStrFullLength(val)
+ this.currentLimit = len
+ }
+ },
+ render () {
+ const { prefixCls, ...props } = this.$props
+ return (
+ <div class={this.prefixCls}>
+ <TextArea {...{ props }} value={this.value} onChange={this.handleChange}>
+ </TextArea>
+ <span class="limit">{this.currentLimit}/{this.limit}</span>
+ </div>
+ )
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less
new file mode 100644
index 0000000..6dee494
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/TextArea/style.less
@@ -0,0 +1,12 @@
+.ant-textarea-limit {
+ position: relative;
+
+ .limit {
+ position: absolute;
+ color: #909399;
+ background: #fff;
+ font-size: 12px;
+ bottom: 5px;
+ right: 10px;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx b/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx
new file mode 100644
index 0000000..e5a2a11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Tree/Tree.jsx
@@ -0,0 +1,124 @@
+import { Menu, Icon, Input } from 'ant-design-vue'
+
+const { Item, ItemGroup, SubMenu } = Menu
+const { Search } = Input
+
+export default {
+ name: 'Tree',
+ props: {
+ dataSource: {
+ type: Array,
+ required: true
+ },
+ openKeys: {
+ type: Array,
+ default: () => []
+ },
+ search: {
+ type: Boolean,
+ default: false
+ }
+ },
+ created () {
+ this.localOpenKeys = this.openKeys.slice(0)
+ },
+ data () {
+ return {
+ localOpenKeys: []
+ }
+ },
+ methods: {
+ handlePlus (item) {
+ this.$emit('add', item)
+ },
+ handleTitleClick (...args) {
+ this.$emit('titleClick', { args })
+ },
+
+ renderSearch () {
+ return (
+ <Search
+ placeholder="input search text"
+ style="width: 100%; margin-bottom: 1rem"
+ />
+ )
+ },
+ renderIcon (icon) {
+ return icon && (<Icon type={icon} />) || null
+ },
+ renderMenuItem (item) {
+ return (
+ <Item key={item.key}>
+ { this.renderIcon(item.icon) }
+ { item.title }
+ <a class="btn" style="width: 20px;z-index:1300" {...{ on: { click: () => this.handlePlus(item) } }}><a-icon type="plus"/></a>
+ </Item>
+ )
+ },
+ renderItem (item) {
+ return item.children ? this.renderSubItem(item, item.key) : this.renderMenuItem(item, item.key)
+ },
+ renderItemGroup (item) {
+ const childrenItems = item.children.map(o => {
+ return this.renderItem(o, o.key)
+ })
+
+ return (
+ <ItemGroup key={item.key}>
+ <template slot="title">
+ <span>{ item.title }</span>
+ <a-dropdown>
+ <a class="btn"><a-icon type="ellipsis" /></a>
+ <a-menu slot="overlay">
+ <a-menu-item key="1">鏂板</a-menu-item>
+ <a-menu-item key="2">鍚堝苟</a-menu-item>
+ <a-menu-item key="3">绉婚櫎</a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </template>
+ { childrenItems }
+ </ItemGroup>
+ )
+ },
+ renderSubItem (item, key) {
+ const childrenItems = item.children && item.children.map(o => {
+ return this.renderItem(o, o.key)
+ })
+
+ const title = (
+ <span slot="title">
+ { this.renderIcon(item.icon) }
+ <span>{ item.title }</span>
+ </span>
+ )
+
+ if (item.group) {
+ return this.renderItemGroup(item)
+ }
+ // titleClick={this.handleTitleClick(item)}
+ return (
+ <SubMenu key={key}>
+ { title }
+ { childrenItems }
+ </SubMenu>
+ )
+ }
+ },
+ render () {
+ const { dataSource, search } = this.$props
+
+ // this.localOpenKeys = openKeys.slice(0)
+ const list = dataSource.map(item => {
+ return this.renderItem(item)
+ })
+
+ return (
+ <div class="tree-wrapper">
+ { search ? this.renderSearch() : null }
+ <Menu mode="inline" class="custom-tree" {...{ on: { click: item => this.$emit('click', item), 'update:openKeys': val => { this.localOpenKeys = val } } }} openKeys={this.localOpenKeys}>
+ { list }
+ </Menu>
+ </div>
+ )
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue b/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue
new file mode 100644
index 0000000..526e1cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/Trend.vue
@@ -0,0 +1,41 @@
+<template>
+ <div :class="[prefixCls, reverseColor && 'reverse-color' ]">
+ <span>
+ <slot name="term"></slot>
+ <span class="item-text">
+ <slot></slot>
+ </span>
+ </span>
+ <span :class="[flag]"><a-icon :type="`caret-${flag}`"/></span>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Trend',
+ props: {
+ prefixCls: {
+ type: String,
+ default: 'ant-pro-trend'
+ },
+ /**
+ * 涓婂崌涓嬮檷鏍囪瘑锛歶p|down
+ */
+ flag: {
+ type: String,
+ required: true
+ },
+ /**
+ * 棰滆壊鍙嶈浆
+ */
+ reverseColor: {
+ type: Boolean,
+ default: false
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ @import "index";
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js
new file mode 100644
index 0000000..9f14228
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.js
@@ -0,0 +1,3 @@
+import Trend from './Trend.vue'
+
+export default Trend
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less
new file mode 100644
index 0000000..8a3d24c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.less
@@ -0,0 +1,42 @@
+@import "../index";
+
+@trend-prefix-cls: ~"@{ant-pro-prefix}-trend";
+
+.@{trend-prefix-cls} {
+ display: inline-block;
+ font-size: @font-size-base;
+ line-height: 22px;
+
+ .up,
+ .down {
+ margin-left: 4px;
+ position: relative;
+ top: 1px;
+
+ i {
+ font-size: 12px;
+ transform: scale(0.83);
+ }
+ }
+
+ .item-text {
+ display: inline-block;
+ margin-left: 8px;
+ color: rgba(0,0,0,.85);
+ }
+
+ .up {
+ color: @red-6;
+ }
+ .down {
+ color: @green-6;
+ top: -1px;
+ }
+
+ &.reverse-color .up {
+ color: @green-6;
+ }
+ &.reverse-color .down {
+ color: @red-6;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md
new file mode 100644
index 0000000..8881f0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/Trend/index.md
@@ -0,0 +1,45 @@
+# Trend 瓒嬪娍鏍囪
+
+瓒嬪娍绗﹀彿锛屾爣璁颁笂鍗囧拰涓嬮檷瓒嬪娍銆傞�氬父鐢ㄧ豢鑹蹭唬琛ㄢ�滃ソ鈥濓紝绾㈣壊浠h〃鈥滀笉濂解�濓紝鑲$エ娑ㄨ穼鍦烘櫙闄ゅ銆�
+
+
+
+寮曠敤鏂瑰紡锛�
+
+```javascript
+import Trend from '@/components/Trend'
+
+export default {
+ components: {
+ Trend
+ }
+}
+```
+
+
+
+## 浠g爜婕旂ず [demo](https://pro.loacg.com/test/home)
+
+```html
+<trend flag="up">5%</trend>
+```
+鎴�
+```html
+<trend flag="up">
+ <span slot="term">宸ヨ祫</span>
+ 5%
+</trend>
+```
+鎴�
+```html
+<trend flag="up" term="宸ヨ祫">5%</trend>
+```
+
+
+## API
+
+| 鍙傛暟 | 璇存槑 | 绫诲瀷 | 榛樿鍊� |
+|----------|------------------------------------------|-------------|-------|
+| flag | 涓婂崌涓嬮檷鏍囪瘑锛歚up|down` | string | - |
+| reverseColor | 棰滆壊鍙嶈浆 | Boolean | false |
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue b/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue
new file mode 100644
index 0000000..88622ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UpDownSort.vue
@@ -0,0 +1,58 @@
+<template>
+ <div class="up-down-sort-component">
+ <div class="wrapper">
+ <div class="up-triangle" :style="{
+ borderBottom:`${size} solid ${sort===0?activeColor:defaultColor}`,
+ borderRight:`${size} solid transparent`,
+ borderLeft:`${size} solid transparent`
+ }"></div>
+ <div class="triangle-divider"></div>
+ <div class="down-triangle" :style="{
+ borderTop:`${size} solid ${sort===1?activeColor:defaultColor}`,
+ borderRight:`${size} solid transparent`,
+ borderLeft:`${size} solid transparent`
+ }"></div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'upDownSortComponent',
+ props:{
+ sort:{
+ type:Number,
+ default:2
+ },
+ size:{
+ type:String,
+ default:'4px'
+ }
+ },
+ data(){
+ return {
+ defaultColor:'#a9a9a9',
+ activeColor:'#333333'
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.up-down-sort-component{
+ display: inline;
+ &>.wrapper{
+ display: flex;
+ flex-direction: column;
+ .up-triangle,.down-triangle{
+ width: 0;
+ height: 0;
+ flex-shrink: 0;
+ }
+ .triangle-divider{
+ height: 2px;
+ flex-shrink: 0;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue
new file mode 100644
index 0000000..a561939
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserMenu.vue
@@ -0,0 +1,239 @@
+<template>
+ <div class="user-wrapper">
+ <div class="content-box">
+ <span class="action" @click="toggleFullscreen">
+ <a-icon type="fullscreen-exit" v-if="isFullscreen" />
+ <a-icon type="fullscreen" v-else />
+ </span>
+ <notice-icon class="action" v-if="hasPerm('sysNotice:received')" />
+ <a-dropdown>
+ <span class="action ant-dropdown-link user-dropdown-menu">
+ <a-avatar class="avatar" size="small" :src="avatar" />
+ <span>{{ nickname }}</span>
+ </span>
+ <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
+ <a-menu-item key="4" v-if="mode === 'sidemenu'">
+ <a @click="appToggled()">
+ <a-icon type="swap" />
+ <span>鍒囨崲搴旂敤</span>
+ </a>
+ </a-menu-item>
+ <a-menu-item key="1">
+ <router-link :to="{ name: 'settings' }">
+ <a-icon type="setting" />
+ <span>璐︽埛璁剧疆</span>
+ </router-link>
+ </a-menu-item>
+<!-- <a-menu-item key="2">-->
+<!-- <a @click="sendMessage()">-->
+<!-- <a-icon type="message" />-->
+<!-- <span>娑堟伅鍙戦�佹祴璇�</span>-->
+<!-- </a>-->
+<!-- </a-menu-item>-->
+ <a-menu-divider />
+ <a-menu-item key="3">
+ <a href="javascript:" @click="handleLogout">
+ <a-icon type="logout" />
+ <span>閫�鍑虹櫥褰�</span>
+ </a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </div>
+ <a-modal title="鍒囨崲搴旂敤" :visible="visible" :footer="null" :confirm-loading="confirmLoading" @cancel="handleCancel">
+ <a-form :form="form1">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫夋嫨搴旂敤">
+ <a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0;lineHeight:55px;">
+ <a-menu-item v-for="item in userInfo.apps" :key="item.code" style="top:0;" @click="switchApp(item.code)">
+ {{ item.name }}
+ </a-menu-item>
+ </a-menu>
+ </a-form-item>
+ </a-form>
+ </a-modal>
+ </div>
+</template>
+
+<script>
+
+ import screenfull from 'screenfull'
+ import NoticeIcon from '@/components/NoticeIcon'
+ import {
+ mapActions,
+ mapGetters
+ } from 'vuex'
+ import {
+ ALL_APPS_MENU
+ } from '@/store/mutation-types'
+ import Vue from 'vue'
+ import {
+ message
+ } from 'ant-design-vue/es'
+ import { messagesendtoAll } from '@/utils/messagesend'
+
+ export default {
+ name: 'UserMenu',
+ components: {
+ NoticeIcon,
+ screenfull
+ },
+ props: {
+ mode: {
+ type: String,
+ default: 'sidemenu'
+ }
+ },
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ form1: this.$form.createForm(this),
+ defApp: [],
+ isFullscreen: false
+ }
+ },
+
+ computed: {
+ ...mapGetters(['token', 'nickname', 'avatar', 'userInfo'])
+ },
+
+
+ // 璁剧疆signalr浠ょ墝
+ async mounted() {
+ //await this.$socket.authenticate(this.token)
+ },
+
+
+
+ methods: {
+ ...mapActions(['Logout', 'MenuChange']),
+
+ handleLogout() {
+ this.$confirm({
+ title: '鎻愮ず',
+ content: '鐪熺殑瑕佹敞閿�鐧诲綍鍚� ?',
+ okText: '纭畾',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ return this.Logout({})
+ .then(() => {
+ location.href = window.__CONFIG.backurl
+ })
+ .catch(err => {
+ this.$message.error({
+ title: '閿欒',
+ description: err.message
+ })
+ })
+ },
+ onCancel() {}
+ })
+ },
+
+ /**
+ * 鎵撳紑鍒囨崲搴旂敤妗�
+ */
+ appToggled() {
+ this.visible = true
+ this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+ },
+
+ switchApp(appCode) {
+ this.visible = false
+ this.defApp = []
+ const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+ const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+ this.MenuChange(applicationData[0])
+ .then(res => {
+ hideMessage()
+ })
+ .catch(err => {
+ message.error('搴旂敤鍒囨崲寮傚父' + err)
+ })
+ },
+ handleCancel() {
+ this.form1.resetFields()
+ this.visible = false
+ },
+ /* 鍏ㄥ睆鍒囨崲 */
+ toggleFullscreen() {
+ if (!screenfull.isEnabled) {
+ message.error('鎮ㄧ殑娴忚鍣ㄤ笉鏀寔鍏ㄥ睆妯″紡')
+ return
+ }
+ screenfull.toggle()
+ this.isFullscreen = !screenfull.isFullscreen;
+ }
+ // 鍙戦�佹秷鎭祴璇�
+ // sendMessage() {
+ // messagesendtoAll(Object.assign({ title: '娴嬭瘯鏍囬', message: '杩欐槸娑堟伅鍐呭', messagetype: 1 }))
+ // },
+ },
+ // signalr鎺ユ敹鐨勪俊鎭�
+ // sockets: {
+ // ReceiveMessage(data) {
+ // switch (data.messagetype) {
+ // case 0:
+ // this.$notification.info({
+ // message: data.title,
+ // description: data.message,
+ // placement: 'bottomRight',
+ // duration: null
+ // })
+ // break
+ // case 1:
+ // this.$notification.success({
+ // message: data.title,
+ // description: data.message,
+ // placement: 'bottomRight',
+ // duration: null
+ // })
+ // break
+ // case 2:
+ // this.$notification.warning({
+ // message: data.title,
+ // description: data.message,
+ // placement: 'bottomRight',
+ // duration: null
+ // })
+ // break
+ // case 3:
+ // this.$notification.error({
+ // message: data.title,
+ // description: data.message,
+ // placement: 'bottomRight',
+ // duration: null
+ // })
+ // break
+ // }
+ // }
+ // }
+ }
+</script>
+
+<style lang="less" scoped>
+ .appRedio {
+ border: 1px solid #91d5ff;
+ padding: 10px 20px;
+ background: #e6f7ff;
+ border-radius: 2px;
+ margin-bottom: 10px;
+ color: #91d5ff;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue
new file mode 100644
index 0000000..5606c60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/UserSelect.vue
@@ -0,0 +1,76 @@
+<template>
+ <a-select
+ :mode="model"
+ showSearch
+ :value="selectValue"
+ :filter-option="false"
+ :placeholder="placeholder"
+ :not-found-content="fetching ? undefined : null"
+ @search="fetchUser"
+ @change="handleChange"
+ >
+ <a-spin v-if="fetching" slot="notFoundContent" size="small" />
+ <a-select-option v-for="d in data" :key="d.value">
+ {{ d.text }}
+ </a-select-option>
+ </a-select>
+</template>
+<script>
+import debounce from 'lodash/debounce'
+import { getUserPage } from '@/api/modular/system/userManage'
+
+export default {
+ name: 'UserSelect',
+ props: {
+ placeholder: {
+ type: String
+ },
+ value: {
+ type: String
+ },
+ multiple: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ const multiple = this.multiple
+ this.fetchUser = debounce(this.fetchUser, 800)
+ return {
+ data: [],
+ fetching: false,
+ selectValue: multiple ? [] : undefined,
+ model: multiple ? 'multiple' : 'default'
+ }
+ },
+ methods: {
+ fetchUser(key) {
+ this.data = []
+ this.fetching = true
+
+ const params = {
+ pageNo: 1,
+ pageSize: 10,
+ searchValue: key
+ }
+ this.userFetching = true
+
+ getUserPage(params).then((res) => {
+ this.data = res.data.rows.map(user => ({
+ text: `${user.name} ${user.account}`,
+ value: user.id
+ }))
+ }).finally(() => {
+ this.fetching = false
+ })
+ },
+ handleChange(value) {
+ Object.assign(this, {
+ selectValue: value,
+ fetching: false
+ })
+ this.$emit('change', value)
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js
new file mode 100644
index 0000000..813c055
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/UserSelect/index.js
@@ -0,0 +1,3 @@
+import UserSelect from './UserSelect'
+
+export default UserSelect
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js b/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js
new file mode 100644
index 0000000..dd33231
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/_util/util.js
@@ -0,0 +1,46 @@
+/**
+ * components util
+ */
+
+/**
+ * 娓呯悊绌哄�硷紝瀵硅薄
+ * @param children
+ * @returns {*[]}
+ */
+export function filterEmpty (children = []) {
+ return children.filter(c => c.tag || (c.text && c.text.trim() !== ''))
+}
+
+/**
+ * 鑾峰彇瀛楃涓查暱搴︼紝鑻辨枃瀛楃 闀垮害1锛屼腑鏂囧瓧绗﹂暱搴�2
+ * @param {*} str
+ */
+export const getStrFullLength = (str = '') =>
+ str.split('').reduce((pre, cur) => {
+ const charCode = cur.charCodeAt(0)
+ if (charCode >= 0 && charCode <= 128) {
+ return pre + 1
+ }
+ return pre + 2
+ }, 0)
+
+/**
+ * 鎴彇瀛楃涓诧紝鏍规嵁 maxLength 鎴彇鍚庤繑鍥�
+ * @param {*} str
+ * @param {*} maxLength
+ */
+export const cutStrByFullLength = (str = '', maxLength) => {
+ let showLength = 0
+ return str.split('').reduce((pre, cur) => {
+ const charCode = cur.charCodeAt(0)
+ if (charCode >= 0 && charCode <= 128) {
+ showLength += 1
+ } else {
+ showLength += 2
+ }
+ if (showLength <= maxLength) {
+ return pre + cur
+ }
+ return pre
+ }, '')
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/global.less b/iWare_RawMaterialWarehouse_Web/src/components/global.less
new file mode 100644
index 0000000..a20929e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/global.less
@@ -0,0 +1,541 @@
+@import './index.less';
+
+body {
+
+
+}
+
+
+/*璋峰摜婊氬姩鏉℃牱寮�*/
+::-webkit-scrollbar {
+ width: 15px;
+ height: 15px;
+ position: absolute
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: #d7d7d7
+}
+
+::-webkit-scrollbar-track {
+ background-color: white
+}
+
+#app {
+ height: 100%;
+
+ &.colorWeak {
+ filter: invert(80%);
+ }
+ &.userLayout {
+ overflow: auto;
+ }
+}
+
+.layout.ant-layout {
+ height: auto;
+ overflow-x: hidden;
+
+ &.mobile,
+ &.tablet {
+ .ant-layout-content {
+ .content {
+ margin: 24px 0 0;
+ }
+ }
+
+ /**
+ * ant-table-wrapper
+ * 瑕嗙洊鐨勮〃鏍兼墜鏈烘ā寮忔牱寮忥紝濡傛灉鎯充慨鏀瑰湪鎵嬫満涓婅〃鏍兼渶浣庡搴︼紝鍙互鍦ㄨ繖閲屾敼鍔�
+ */
+ .ant-table-wrapper {
+ .ant-table-content {
+ overflow-y: auto;
+ }
+ .ant-table-body {
+ min-width: 800px;
+ }
+ }
+ .topmenu {
+ /* 蹇呴』涓� topmenu 鎵嶈兘鍚敤娴佸紡甯冨眬 */
+ &.content-width-Fluid {
+ .header-index-wide {
+ margin-left: 0;
+ }
+ }
+ }
+ }
+
+ &.mobile {
+ .sidemenu {
+ .ant-header-fixedHeader {
+ &.ant-header-side-opened,
+ &.ant-header-side-closed {
+ width: 100%;
+ }
+ }
+ }
+ }
+
+ &.ant-layout-has-sider {
+ flex-direction: row;
+ }
+
+ .trigger {
+ font-size: 20px;
+ line-height: 55px;
+ padding: 0 24px;
+ cursor: pointer;
+ transition: color 0.3s;
+ &:hover {
+ background: rgba(0, 0, 0, 0.025);
+ }
+ }
+
+ .topmenu {
+ .ant-header-fixedHeader {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 9;
+ width: 100%;
+ transition: width 0.2s;
+
+ &.ant-header-side-opened {
+ width: 100%;
+ }
+
+ &.ant-header-side-closed {
+ width: 100%;
+ }
+ }
+ /* 蹇呴』涓� topmenu 鎵嶈兘鍚敤娴佸紡甯冨眬 */
+ &.content-width-Fluid {
+ .header-index-wide {
+ max-width: unset;
+ .header-index-left {
+ flex: 1 1 1000px;
+ .logo{
+ margin-left: 25px;
+ }
+ .ant-menu.ant-menu-horizontal{
+ max-width: calc(100vw - 190px - 238px - 25px);
+ flex: 1 1 calc(100vw - 190px - 238px - 25px);
+ }
+ }
+ .header-index-right{
+ margin-right:25px;
+ }
+ }
+
+ .page-header-index-wide {
+ max-width: unset;
+ }
+ }
+ }
+
+ .sidemenu {
+ .ant-header-fixedHeader {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 9;
+ width: 100%;
+ transition: width 0.2s;
+
+ &.ant-header-side-opened {
+ width: calc(100% - 230px);
+ }
+
+ &.ant-header-side-closed {
+ width: calc(100% - 80px);
+ }
+ }
+ }
+
+ .header {
+ height: 55px;
+ // padding: 0 12px 0 0;
+ background: #fff;
+ box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+ position: relative;
+ }
+
+ .header,
+ .top-nav-header-index {
+ .user-wrapper {
+ float: right;
+ height: 100%;
+
+ .action {
+ line-height: 55px;
+ cursor: pointer;
+ padding: 0 12px;
+ display: inline-block;
+ transition: all 0.3s;
+ height: 100%;
+ color: rgba(0, 0, 0, 0.65);
+
+ &:hover {
+ background: rgba(0, 0, 0, 0.025);
+ }
+
+ .avatar {
+ margin: 15px 8px 15px 0;
+ color: #1890ff;
+ background: hsla(0, 0%, 100%, 0.85);
+ vertical-align: middle;
+ }
+
+ .icon {
+ font-size: 16px;
+ padding: 4px;
+ }
+ }
+ }
+
+ &.dark {
+ .user-wrapper {
+ .action {
+ color: rgba(255, 255, 255, 0.85);
+ a {
+ color: rgba(255, 255, 255, 0.85);
+ }
+
+ &:hover {
+ background: rgba(255, 255, 255, 0.16);
+ }
+ }
+ }
+ }
+ }
+
+ &.mobile,
+ &.tablet {
+ .top-nav-header-index {
+ .header-index-wide {
+ .header-index-left {
+ .trigger {
+ color: rgba(255, 255, 255, 0.85);
+ padding: 0 12px;
+ }
+
+ .logo.top-nav-header {
+ flex: 0 0 56px;
+ text-align: center;
+ line-height: 58px;
+ h1 {
+ display: none;
+ }
+ }
+ }
+ }
+
+ &.light {
+ .header-index-wide {
+ .header-index-left {
+ .trigger {
+ color: rgba(0, 0, 0, 0.65);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ &.tablet {
+ // overflow: hidden; text-overflow:ellipsis; white-space: nowrap;
+ .top-nav-header-index {
+ .header-index-wide {
+ .header-index-left {
+ .logo > a {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+ .ant-menu.ant-menu-horizontal {
+ flex: 1 1 auto;
+ white-space: normal;
+ }
+ }
+ }
+ }
+
+ .top-nav-header-index {
+ box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
+ position: relative;
+ transition: background 0.3s, width 0.2s;
+
+ .header-index-wide {
+ max-width: 1200px;
+ margin: auto;
+ padding-left: 0;
+ display: flex;
+ height: 55px;
+
+ .ant-menu.ant-menu-horizontal {
+ max-width: 835px;
+ flex: 0 1 835px;
+ border: none;
+ height: 55px;
+ line-height: 55px;
+ }
+
+ .header-index-left {
+ flex: 0 1 1000px;
+ display: flex;
+
+ .logo.top-nav-header {
+ flex: 0 0 165px;
+ width: 165px;
+ height: 55px;
+ position: relative;
+ line-height: 55px;
+ transition: all 0.3s;
+ overflow: hidden;
+
+ img,
+ svg {
+ display: inline-block;
+ vertical-align: middle;
+ height: 32px;
+ width: 32px;
+ }
+
+ h1 {
+ color: #fff;
+ display: inline-block;
+ vertical-align: top;
+ font-size: 16px;
+ margin: 0 0 0 12px;
+ font-weight: 400;
+ }
+ }
+ }
+
+ .header-index-right {
+ flex: 0 0 238px;
+ align-self: flex-end;
+ height: 55px;
+ overflow: hidden;
+
+ .content-box {
+ float: right;
+ .action {
+ max-width: 140px;
+ overflow: hidden;
+ text-overflow:ellipsis;
+ white-space:nowrap;
+ }
+ }
+ }
+ }
+
+ &.light {
+ background-color: #fff;
+
+ .header-index-wide {
+ .header-index-left {
+ .logo {
+ h1 {
+ color: #002140;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // 鍐呭鍖�
+ .layout-content {
+ margin: 24px 24px 0px;
+ //height: 100%;
+ //height: 64px;
+ padding: 0 12px 0 0;
+ }
+
+ // footer
+ .ant-layout-footer {
+ padding: 0;
+ }
+}
+
+.topmenu {
+ .page-header-index-wide {
+ max-width: 1200px;
+ margin: 0 auto;
+ }
+}
+
+// drawer-sider 鑷畾涔�
+.ant-drawer.drawer-sider {
+ .sider {
+ box-shadow: none;
+ }
+
+ &.dark {
+ .ant-drawer-content {
+ background-color: rgb(0, 21, 41);
+ }
+ }
+ &.light {
+ box-shadow: none;
+ .ant-drawer-content {
+ background-color: #fff;
+ }
+ }
+
+ .ant-drawer-body {
+ padding: 0;
+ }
+}
+
+// 鑿滃崟鏍峰紡
+.sider {
+ box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);
+ position: relative;
+ z-index: @ant-global-sider-zindex;
+ min-height: 100vh;
+
+ .ant-layout-sider-children {
+ overflow-y: hidden;
+
+ &:hover {
+ overflow-y: auto;
+ }
+ }
+
+ &.ant-fixed-sidemenu {
+ position: fixed;
+ height: 100%;
+ }
+
+ // logo鍖哄煙鏍峰紡
+ .logo {
+ position: relative;
+ height: 55px;
+ padding-left: 24px;
+ overflow: hidden;
+ line-height: 55px;
+ background: #002140;
+ transition: all .3s;
+
+ img,
+ svg,
+ h1 {
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ img,
+ svg {
+ height: 32px;
+ width: 32px;
+ }
+
+ h1 {
+ color: #fff;
+ font-size: 20px;
+ margin: 0 0 0 12px;
+ font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+ font-weight: 600;
+ vertical-align: middle;
+ }
+ }
+
+ &.light {
+ background-color: #fff;
+ box-shadow: 2px 0px 8px 0px rgba(29, 35, 41, 0.05);
+
+ .logo {
+ background: #fff;
+ box-shadow: 1px 1px 0px 0px #e8e8e8;
+
+ h1 {
+ color: unset;
+ }
+ }
+
+ .ant-menu-light {
+ border-right-color: transparent;
+ }
+ }
+}
+
+// 澶栫疆鐨勬牱寮忔帶鍒�
+.user-dropdown-menu {
+ span {
+ user-select: none;
+ }
+}
+.user-dropdown-menu-wrapper.ant-dropdown-menu {
+ padding: 4px 0;
+
+ .ant-dropdown-menu-item {
+ width: 160px;
+ }
+
+ .ant-dropdown-menu-item > .anticon:first-child,
+ .ant-dropdown-menu-item > a > .anticon:first-child,
+ .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child {
+ min-width: 12px;
+ margin-right: 8px;
+ }
+}
+
+// 鏁版嵁鍒楄〃 鏍峰紡
+.table-alert {
+ margin-bottom: 16px;
+}
+
+.table-page-search-wrapper {
+ .ant-form-inline {
+ .ant-form-item {
+ display: flex;
+ margin-bottom: 24px;
+ margin-right: 0;
+
+ .ant-form-item-control-wrapper {
+ flex: 1 1;
+ display: inline-block;
+ vertical-align: middle;
+ }
+
+ > .ant-form-item-label {
+ line-height: 32px;
+ padding-right: 8px;
+ width: auto;
+ }
+ .ant-form-item-control {
+ height: 32px;
+ line-height: 32px;
+ }
+ }
+ }
+
+ .table-page-search-submitButtons {
+ display: block;
+ margin-bottom: 24px;
+ white-space: nowrap;
+ }
+}
+
+.content {
+ .table-operator {
+ margin-bottom: 18px;
+
+ button {
+ margin-right: 8px;
+ }
+ }
+}
+
+.boxOutWrap{
+ height: calc(100vh - 120px);
+ overflow: hidden;
+}
+.boxForm{
+ max-height: 350px;
+ overflow-y: auto;
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/index.js b/iWare_RawMaterialWarehouse_Web/src/components/index.js
new file mode 100644
index 0000000..afa75ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/index.js
@@ -0,0 +1,70 @@
+// chart
+import Bar from '@/components/Charts/Bar'
+import ChartCard from '@/components/Charts/ChartCard'
+import Liquid from '@/components/Charts/Liquid'
+import MiniArea from '@/components/Charts/MiniArea'
+import MiniSmoothArea from '@/components/Charts/MiniSmoothArea'
+import MiniBar from '@/components/Charts/MiniBar'
+import MiniProgress from '@/components/Charts/MiniProgress'
+import Radar from '@/components/Charts/Radar'
+import RankList from '@/components/Charts/RankList'
+import TransferBar from '@/components/Charts/TransferBar'
+import TagCloud from '@/components/Charts/TagCloud'
+
+// pro components
+import AvatarList from '@/components/AvatarList'
+import CountDown from '@/components/CountDown'
+import Ellipsis from '@/components/Ellipsis'
+import FooterToolbar from '@/components/FooterToolbar'
+import NumberInfo from '@/components/NumberInfo'
+import DescriptionList from '@/components/DescriptionList'
+import Tree from '@/components/Tree/Tree'
+import Trend from '@/components/Trend'
+import STable from '@/components/Table'
+import MultiTab from '@/components/MultiTab'
+import Result from '@/components/Result'
+import IconSelector from '@/components/IconSelector'
+import TagSelect from '@/components/TagSelect'
+import ExceptionPage from '@/components/Exception'
+import StandardFormRow from '@/components/StandardFormRow'
+import ArticleListContent from '@/components/ArticleListContent'
+import AntdEditor from '@/components/Editor/WangEditor'
+import Dialog from '@/components/Dialog'
+
+// xn components
+import XCard from '@/components/xnComponents/XCard'
+
+export {
+ AvatarList,
+ Bar,
+ ChartCard,
+ Liquid,
+ MiniArea,
+ MiniSmoothArea,
+ MiniBar,
+ MiniProgress,
+ Radar,
+ TagCloud,
+ RankList,
+ TransferBar,
+ Trend,
+ CountDown,
+ Ellipsis,
+ FooterToolbar,
+ NumberInfo,
+ DescriptionList,
+ // 鍏煎鍐欐硶锛岃鍕跨户缁娇鐢�
+ DescriptionList as DetailList,
+ Tree,
+ STable,
+ MultiTab,
+ Result,
+ ExceptionPage,
+ IconSelector,
+ TagSelect,
+ StandardFormRow,
+ ArticleListContent,
+ AntdEditor,
+ Dialog,
+ XCard
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/index.less b/iWare_RawMaterialWarehouse_Web/src/components/index.less
new file mode 100644
index 0000000..e831c41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/index.less
@@ -0,0 +1,6 @@
+@import "~ant-design-vue/lib/style/index";
+
+// The prefix to use on all css classes from ant-pro.
+@ant-pro-prefix : ant-pro;
+@ant-global-sider-zindex : 106;
+@ant-global-header-zindex : 105;
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue
new file mode 100644
index 0000000..e817861
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/Breadcrumb.vue
@@ -0,0 +1,51 @@
+<template>
+ <a-breadcrumb class="breadcrumb">
+ <a-breadcrumb-item v-for="(item, index) in breadList" :key="item.name">
+ <router-link
+ v-if="item.name != name && index != 1"
+ :to="{ path: item.path === '' ? '/' : item.path }"
+ >{{ item.meta.title }}</router-link>
+ <span v-else>{{ item.meta.title }}</span>
+ </a-breadcrumb-item>
+ </a-breadcrumb>
+</template>
+
+<script>
+export default {
+ data () {
+ return {
+ name: '',
+ breadList: []
+ }
+ },
+ created () {
+ this.getBreadcrumb()
+ },
+ methods: {
+ getBreadcrumb () {
+ let arr = []
+ // this.breadList.push({name: 'index', path: '/dashboard/', meta: {title: '棣栭〉'}})
+
+ this.name = this.$route.name
+ this.$route.matched.forEach(item => {
+ // item.name !== 'index' && this.breadList.push(item)
+ arr.push(item)
+ //this.breadList.push(item)
+ })
+ /* if (arr.length>=2) {
+ arr.splice(0,1)
+ } */
+ this.breadList = arr
+ console.log(this.breadList)
+ }
+ },
+ watch: {
+ $route () {
+ this.getBreadcrumb()
+ }
+ }
+}
+</script>
+
+<style scoped>
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue
new file mode 100644
index 0000000..6745a08
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/DetailList.vue
@@ -0,0 +1,5 @@
+<script>
+/* WARNING: 鍏煎鑰佸紩鍏ワ紝璇峰嬁缁х画浣跨敤 */
+import DescriptionList from '@/components/DescriptionList'
+export default DescriptionList
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue
new file mode 100644
index 0000000..7fbc692
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/HeadInfo.vue
@@ -0,0 +1,67 @@
+<template>
+ <div class="head-info" :class="center && 'center'">
+ <span>{{ title }}</span>
+ <p>{{ content }}</p>
+ <em v-if="bordered"/>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'HeadInfo',
+ props: {
+ title: {
+ type: String,
+ default: ''
+ },
+ content: {
+ type: String,
+ default: ''
+ },
+ bordered: {
+ type: Boolean,
+ default: false
+ },
+ center: {
+ type: Boolean,
+ default: true
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .head-info {
+ position: relative;
+ text-align: left;
+ padding: 0 32px 0 0;
+ min-width: 125px;
+
+ &.center {
+ text-align: center;
+ padding: 0 32px;
+ }
+
+ span {
+ color: rgba(0, 0, 0, .45);
+ display: inline-block;
+ font-size: 14px;
+ line-height: 22px;
+ margin-bottom: 4px;
+ }
+ p {
+ color: rgba(0, 0, 0, .85);
+ font-size: 24px;
+ line-height: 32px;
+ margin: 0;
+ }
+ em {
+ background-color: #e8e8e8;
+ position: absolute;
+ height: 56px;
+ width: 1px;
+ top: 0;
+ right: 0;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue
new file mode 100644
index 0000000..283f356
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/LangSelect.vue
@@ -0,0 +1,46 @@
+<template>
+ <a-dropdown>
+ <span class="action global-lang">
+ <a-icon type="global" style="font-size: 16px"/>
+ </span>
+ <a-menu slot="overlay" style="width: 150px;" @click="SwitchLang">
+ <a-menu-item key="zh-CN">
+ <a rel="noopener noreferrer">
+ <span role="img" aria-label="绠�浣撲腑鏂�">馃嚚馃嚦</span> 绠�浣撲腑鏂�
+ </a>
+ </a-menu-item>
+ <a-menu-item key="zh-TW">
+ <a rel="noopener noreferrer">
+ <span role="img" aria-label="绻佷綋涓枃">馃嚟馃嚢</span> 绻佷綋涓枃
+ </a>
+ </a-menu-item>
+ <a-menu-item key="en-US">
+ <a rel="noopener noreferrer">
+ <span role="img" aria-label="English">馃嚞馃嚙</span> English
+ </a>
+ </a-menu-item>
+ <a-menu-item key="pt-BR">
+ <a rel="noopener noreferrer">
+ <span role="img" aria-label="Portugu锚s">馃嚙馃嚪</span> Portugu锚s
+ </a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+</template>
+
+<script>
+// import { mixin as langMixin } from '@/store/i18n-mixin'
+
+export default {
+ name: 'LangSelect',
+ // mixins: [langMixin],
+ data () {
+ return {}
+ },
+ methods: {
+ // SwitchLang (row) {
+ // this.setLang(row.key)
+ // }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue
new file mode 100644
index 0000000..65b54e4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/Logo.vue
@@ -0,0 +1,51 @@
+<template>
+ <div class="logo" style="display:flex;align-items: center;">
+ <router-link :to="{name:'Console'}">
+ <div style="display:flex;align-items:center;">
+ <img src="@/assets/logo.jpg" style="height:20px;width:auto;" />
+ <h1 v-if="showTitle">{{ this.titles }}</h1>
+ </div>
+ </router-link>
+ </div>
+</template>
+
+<script>
+import { mixin, mixinDevice } from '@/utils/mixin'
+
+export default {
+ name: 'Logo',
+ mixins: [mixin, mixinDevice],
+ data () {
+ return {
+ titles: ''
+ }
+ },
+ props: {
+ title: {
+ type: String,
+ default: '鎴戠殑寮�鍙戞ā鏉�',
+ required: false
+ },
+ showTitle: {
+ type: Boolean,
+ default: true,
+ required: false
+ }
+ },
+ created () {
+ if (this.layoutMode === 'topmenu') {
+ if (this.title.length > 8) {
+ this.titles = this.title.substring(0, 8) + '...'
+ } else {
+ this.titles = this.title
+ }
+ } else {
+ if (this.title.length > 10) {
+ this.titles = this.title.substring(0, 8) + '...'
+ } else {
+ this.titles = this.title
+ }
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue
new file mode 100644
index 0000000..4367ffe
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/TwoStepCaptcha.vue
@@ -0,0 +1,88 @@
+<template>
+ <!-- 涓ゆ楠岃瘉 -->
+ <a-modal
+ centered
+ v-model="visible"
+ @cancel="handleCancel"
+ :maskClosable="false"
+ >
+ <div slot="title" :style="{ textAlign: 'center' }">涓ゆ楠岃瘉</div>
+ <template slot="footer">
+ <div :style="{ textAlign: 'center' }">
+ <a-button key="back" @click="handleCancel">杩斿洖</a-button>
+ <a-button key="submit" type="primary" :loading="stepLoading" @click="handleStepOk">
+ 缁х画
+ </a-button>
+ </div>
+ </template>
+
+ <a-spin :spinning="stepLoading">
+ <a-form layout="vertical" :auto-form-create="(form)=>{this.form = form}">
+ <div class="step-form-wrapper">
+ <p style="text-align: center" v-if="!stepLoading">璇峰湪鎵嬫満涓墦寮� Google Authenticator 鎴栦袱姝ラ獙璇� APP<br />杈撳叆 6 浣嶅姩鎬佺爜</p>
+ <p style="text-align: center" v-else>姝e湪楠岃瘉..<br/>璇风◢鍚�</p>
+ <a-form-item
+ :style="{ textAlign: 'center' }"
+ hasFeedback
+ fieldDecoratorId="stepCode"
+ :fieldDecoratorOptions="{rules: [{ required: true, message: '璇疯緭鍏� 6 浣嶅姩鎬佺爜!', pattern: /^\d{6}$/, len: 6 }]}"
+ >
+ <a-input :style="{ textAlign: 'center' }" @keyup.enter.native="handleStepOk" placeholder="000000" />
+ </a-form-item>
+ <p style="text-align: center">
+ <a @click="onForgeStepCode">閬楀け鎵嬫満?</a>
+ </p>
+ </div>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+export default {
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data () {
+ return {
+ stepLoading: false,
+
+ form: null
+ }
+ },
+ methods: {
+ handleStepOk () {
+ const vm = this
+ this.stepLoading = true
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ setTimeout(() => {
+ vm.stepLoading = false
+ vm.$emit('success', { values })
+ }, 2000)
+ return
+ }
+ this.stepLoading = false
+ this.$emit('error', { err })
+ })
+ },
+ handleCancel () {
+ this.visible = false
+ this.$emit('cancel')
+ },
+ onForgeStepCode () {
+
+ }
+ }
+}
+</script>
+<style lang="less" scoped>
+ .step-form-wrapper {
+ margin: 0 auto;
+ width: 80%;
+ max-width: 400px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue b/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue
new file mode 100644
index 0000000..579aada
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/UserMenu.vue
@@ -0,0 +1,255 @@
+<template>
+ <div class="user-wrapper">
+ <div class="content-box">
+ <!--<a href="" target="_blank">
+ <span class="action">
+ <a-icon type="question-circle-o"></a-icon>
+ </span>
+ </a>-->
+
+ <span class="action" @click="toggleFullscreen">
+ <a-icon type="fullscreen-exit" v-if="isFullscreen" />
+ <a-icon type="fullscreen" v-else />
+ </span>
+ <notice-icon class="action" v-if="hasPerm('sysNotice:received')" />
+
+ <a-dropdown>
+ <span class="action ant-dropdown-link user-dropdown-menu">
+ <a-avatar class="avatar" size="small" :src="avatar" />
+ <span>{{ nickname }}</span>
+ </span>
+ <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
+ <a-menu-item key="4" v-if="mode === 'sidemenu'">
+ <a @click="appToggled()">
+ <a-icon type="swap" />
+ <span>鍒囨崲搴旂敤</span>
+ </a>
+ </a-menu-item>
+ <!--<a-menu-item key="0">
+ <router-link :to="{ name: 'center' }">
+ <a-icon type="user"/>
+ <span>涓汉涓績</span>
+ </router-link>
+ </a-menu-item> -->
+ <a-menu-item key="1">
+ <router-link :to="{ name: 'settings' }">
+ <a-icon type="setting" />
+ <span>璐︽埛璁剧疆</span>
+ </router-link>
+ </a-menu-item>
+ <a-menu-item key="2">
+ <a @click="sendMessage()">
+ <a-icon type="message" />
+ <span>娑堟伅鍙戦�佹祴璇�</span>
+ </a>
+ </a-menu-item>
+ <a-menu-divider />
+ <a-menu-item key="3">
+ <a href="javascript:;" @click="handleLogout">
+ <a-icon type="logout" />
+ <span>閫�鍑虹櫥褰�</span>
+ </a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </div>
+ <a-modal title="鍒囨崲搴旂敤" :visible="visible" :footer="null" :confirm-loading="confirmLoading" @cancel="handleCancel">
+ <a-form :form="form1">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫夋嫨搴旂敤">
+ <a-menu mode="inline" :default-selected-keys="this.defApp" style="border-bottom:0px;lineHeight:55px;">
+ <a-menu-item v-for="item in userInfo.apps" :key="item.code" style="top:0px;" @click="switchApp(item.code)">
+ {{ item.name }}
+ </a-menu-item>
+ </a-menu>
+ </a-form-item>
+ </a-form>
+ </a-modal>
+ </div>
+</template>
+
+<script>
+ import screenfull from 'screenfull'
+ import NoticeIcon from '@/components/NoticeIcon'
+ import {
+ mapActions,
+ mapGetters
+ } from 'vuex'
+ import {
+ ALL_APPS_MENU
+ } from '@/store/mutation-types'
+ import Vue from 'vue'
+ import {
+ message
+ } from 'ant-design-vue/es'
+ import { messagesendtoAll } from '@/utils/messagesend'
+ export default {
+ name: 'UserMenu',
+ components: {
+ NoticeIcon,
+ screenfull
+ },
+ props: {
+ mode: {
+ type: String,
+ // sidemenu, topmenu
+ default: 'sidemenu'
+ }
+ },
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ form1: this.$form.createForm(this),
+ defApp: [],
+ isFullscreen: false
+ }
+ },
+
+ computed: {
+ ...mapGetters(['token', 'nickname', 'avatar', 'userInfo'])
+ },
+ // 璁剧疆signalr浠ょ墝
+ async mounted() {
+ //await this.$socket.authenticate(this.token)
+ },
+ methods: {
+ ...mapActions(['Logout', 'MenuChange']),
+
+ handleLogout() {
+ this.$confirm({
+ title: '鎻愮ず',
+ content: '鐪熺殑瑕佹敞閿�鐧诲綍鍚� ?',
+ okText: '纭畾',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ return this.Logout({})
+ .then(() => {
+ setTimeout(() => {
+ window.location.reload()
+ }, 16)
+ })
+ .catch(err => {
+ this.$message.error({
+ title: '閿欒',
+ description: err.message
+ })
+ })
+ },
+ onCancel() {}
+ })
+ },
+
+ /**
+ * 鎵撳紑鍒囨崲搴旂敤妗�
+ */
+ appToggled() {
+ this.visible = true
+ this.defApp.push(Vue.ls.get(ALL_APPS_MENU)[0].code)
+ },
+
+ switchApp(appCode) {
+ this.visible = false
+ this.defApp = []
+ const applicationData = this.userInfo.apps.filter(item => item.code === appCode)
+ const hideMessage = message.loading('姝e湪鍒囨崲搴旂敤锛�', 0)
+ this.MenuChange(applicationData[0])
+ .then(res => {
+ hideMessage()
+ // eslint-disable-next-line handle-callback-err
+ })
+ .catch(err => {
+ message.error('搴旂敤鍒囨崲寮傚父' + err)
+ })
+ },
+ handleCancel() {
+ this.form1.resetFields()
+ this.visible = false
+ },
+ /* 鍏ㄥ睆鍒囨崲 */
+ toggleFullscreen() {
+ if (!screenfull.isEnabled) {
+ message.error('鎮ㄧ殑娴忚鍣ㄤ笉鏀寔鍏ㄥ睆妯″紡')
+ return
+ }
+ screenfull.toggle()
+ if (screenfull.isFullscreen) {
+ this.isFullscreen = false
+ } else {
+ this.isFullscreen = true
+ }
+ },
+ // 鍙戦�佹秷鎭祴璇�
+ sendMessage() {
+ messagesendtoAll(Object.assign({ title: '娴嬭瘯鏍囬', message: '杩欐槸娑堟伅鍐呭', messagetype: 1 }))
+ },
+ },
+ // signalr鎺ユ敹鐨勪俊鎭�
+ sockets: {
+ ReceiveMessage(data) {
+ switch (data.messagetype) {
+ case 0:
+ this.$notification.info({
+ message: data.title,
+ description: data.message,
+ placement: 'bottomRight',
+ duration: null
+ })
+ break
+ case 1:
+ this.$notification.success({
+ message: data.title,
+ description: data.message,
+ placement: 'bottomRight',
+ duration: null
+ })
+ break
+ case 2:
+ this.$notification.warning({
+ message: data.title,
+ description: data.message,
+ placement: 'bottomRight',
+ duration: null
+ })
+ break
+ case 3:
+ this.$notification.error({
+ message: data.title,
+ description: data.message,
+ placement: 'bottomRight',
+ duration: null
+ })
+ break
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+ .appRedio {
+ border: 1px solid #91d5ff;
+ padding: 10px 20px;
+ background: #e6f7ff;
+ border-radius: 2px;
+ margin-bottom: 10px;
+ color: #91d5ff;
+ /*display: inline;
+ margin-bottom:10px;*/
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js b/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/tools/index.js
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue
new file mode 100644
index 0000000..e7b6d1a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify.vue
@@ -0,0 +1,473 @@
+<template>
+ <div :class="mode=='pop'?'mask':''" v-show="showBox">
+ <div :class="mode=='pop'?'verifybox':''" :style="{'max-width':parseInt(imgSize.width)+30+'px'}">
+ <div class="verifybox-top" v-if="mode=='pop'">
+ 璇峰畬鎴愬畨鍏ㄩ獙璇�
+ <span @click="closeBox" class="verifybox-close">
+ <i class="iconfont icon-close"></i>
+ </span>
+ </div>
+ <div :style="{padding:mode=='pop'?'15px':'0'}" class="verifybox-bottom">
+ <!-- 楠岃瘉鐮佸鍣� -->
+ <components
+ :arith="arith"
+ :barSize="barSize"
+ :blockSize="blockSize"
+ :captchaType="captchaType"
+ :explain="explain"
+ :figure="figure"
+ :imgSize="imgSize"
+ :is="componentType"
+ :mode="mode"
+ :type="verifyType"
+ :vSpace="vSpace"
+ ref="instance"
+ v-if="componentType"></components>
+ </div>
+ </div>
+ </div>
+</template>
+<script type="text/babel">
+ /**
+ * Verify 楠岃瘉鐮佺粍浠�
+ * @description 鍒嗗彂楠岃瘉鐮佷娇鐢�
+ * */
+ import VerifySlide from './Verify/VerifySlide'
+ import VerifyPoints from './Verify/VerifyPoints'
+
+ export default {
+ name: 'Vue2Verify',
+ props: {
+ // 鍙岃鍖�
+ locale: {
+ require: false,
+ type: String,
+ default() {
+ // 榛樿璇█涓嶈緭鍏ヤ负娴忚鍣ㄨ瑷�
+ if (navigator.language) {
+ var language = navigator.language
+ } else {
+ // eslint-disable-next-line no-redeclare
+ var language = navigator.browserLanguage
+ }
+ return language
+ }
+ },
+ captchaType: {
+ type: String,
+ required: true
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ figure: {
+ type: Number
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ arith: {
+ type: Number
+ },
+ mode: {
+ type: String,
+ default: 'pop'
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ vSpace: {
+ type: Number
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ explain: {
+ type: String
+ },
+ imgSize: {
+ type: Object,
+ default() {
+ return {
+ width: '310px',
+ height: '155px'
+ }
+ }
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ blockSize: {
+ type: Object
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ barSize: {
+ type: Object
+ }
+ },
+ data() {
+ return {
+ // showBox:true,
+ clickShow: false,
+ // 鍐呴儴绫诲瀷
+ verifyType: undefined,
+ // 鎵�鐢ㄧ粍浠剁被鍨�
+ componentType: undefined
+ }
+ },
+ methods: {
+ /**
+ * i18n
+ * @description 鍏煎vue-i18n 璋冪敤$t鏉ヨ浆鎹k
+ * @param {String} text-琚浆鎹㈢殑鐩爣
+ * @return {String} i18n鐨勭粨鏋�
+ * */
+ i18n(text) {
+ if (this.$t) {
+ return this.$t(text)
+ } else {
+ // 鍏煎涓嶅瓨鍦ㄧ殑璇█
+ const i18n = this.$options.i18n.messages[this.locale] || this.$options.i18n.messages['en-US']
+ return i18n[text]
+ }
+ },
+ /**
+ * refresh
+ * @description 鍒锋柊
+ * */
+ refresh() {
+ if (this.instance.refresh) {
+ this.instance.refresh()
+ }
+ },
+ closeBox() {
+ this.clickShow = false
+ this.refresh()
+ },
+ show() {
+ // eslint-disable-next-line eqeqeq
+ if (this.mode == 'pop') {
+ this.clickShow = true
+ }
+ }
+ },
+ computed: {
+ instance() {
+ return this.$refs.instance || {}
+ },
+ showBox() {
+ // eslint-disable-next-line eqeqeq
+ if (this.mode == 'pop') {
+ return this.clickShow
+ } else {
+ return true
+ }
+ }
+ },
+ watch: {
+ captchaType: {
+ immediate: true,
+ handler(captchaType) {
+ switch (captchaType.toString()) {
+ case 'blockPuzzle':
+ this.verifyType = '2'
+ this.componentType = 'VerifySlide'
+ break
+ case 'clickWord':
+ this.verifyType = ''
+ this.componentType = 'VerifyPoints'
+ break
+ }
+ }
+ }
+ },
+ components: {
+ VerifySlide,
+ VerifyPoints
+ }
+ }
+</script>
+<style>
+ .verifybox{
+ position: relative;
+ box-sizing: border-box;
+ border-radius: 2px;
+ border: 1px solid #e4e7eb;
+ background-color: #fff;
+ box-shadow: 0 0 10px rgba(0,0,0,.3);
+ left: 50%;
+ top:50%;
+ transform: translate(-50%,-50%);
+ }
+ .verifybox-top{
+ padding: 0 15px;
+ height: 50px;
+ line-height: 50px;
+ text-align: left;
+ font-size: 16px;
+ color: #45494c;
+ border-bottom: 1px solid #e4e7eb;
+ box-sizing: border-box;
+ }
+ .verifybox-bottom{
+ padding: 15px;
+ box-sizing: border-box;
+ }
+ .verifybox-close{
+ position: absolute;
+ top: 13px;
+ right: 9px;
+ width: 24px;
+ height: 24px;
+ text-align: center;
+ cursor: pointer;
+ }
+ .mask{
+ position: fixed;
+ top: 0;
+ left:0;
+ z-index: 1001;
+ width: 100%;
+ height: 100vh;
+ background: rgba(0,0,0,.3);
+ /* display: none; */
+ transition: all .5s;
+ }
+ .verify-tips{
+ position: absolute;
+ left: 0px;
+ bottom:0px;
+ width: 100%;
+ height: 30px;
+ line-height:30px;
+ color: #fff;
+ }
+ .suc-bg{
+ background-color:rgba(92, 184, 92,.5);
+ filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7f5CB85C, endcolorstr=#7f5CB85C);
+ }
+ .err-bg{
+ background-color:rgba(217, 83, 79,.5);
+ filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#7fD9534F, endcolorstr=#7fD9534F);
+ }
+ .tips-enter,.tips-leave-to{
+ bottom: -30px;
+ }
+ .tips-enter-active,.tips-leave-active{
+ transition: bottom .5s;
+ }
+ /* ---------------------------- */
+ /*甯歌楠岃瘉鐮�*/
+ .verify-code {
+ font-size: 20px;
+ text-align: center;
+ cursor: pointer;
+ margin-bottom: 5px;
+ border: 1px solid #ddd;
+ }
+
+ .cerify-code-panel {
+ height: 100%;
+ overflow: hidden;
+ }
+
+ .verify-code-area {
+ float: left;
+ }
+
+ .verify-input-area {
+ float: left;
+ width: 60%;
+ padding-right: 10px;
+
+ }
+
+ .verify-change-area {
+ line-height: 30px;
+ float: left;
+ }
+
+ .varify-input-code {
+ display: inline-block;
+ width: 100%;
+ height: 25px;
+ }
+
+ .verify-change-code {
+ color: #337AB7;
+ cursor: pointer;
+ }
+
+ .verify-btn {
+ width: 200px;
+ height: 30px;
+ background-color: #337AB7;
+ color: #FFFFFF;
+ border: none;
+ margin-top: 10px;
+ }
+
+ /*婊戝姩楠岃瘉鐮�*/
+ .verify-bar-area {
+ position: relative;
+ background: #FFFFFF;
+ text-align: center;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ }
+
+ .verify-bar-area .verify-move-block {
+ position: absolute;
+ top: 0px;
+ left: 0;
+ background: #fff;
+ cursor: pointer;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ box-shadow: 0 0 2px #888888;
+ -webkit-border-radius: 1px;
+ }
+
+ .verify-bar-area .verify-move-block:hover {
+ background-color: #337ab7;
+ color: #FFFFFF;
+ }
+
+ .verify-bar-area .verify-left-bar {
+ position: absolute;
+ top: -1px;
+ left: -1px;
+ background: #f0fff0;
+ cursor: pointer;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border: 1px solid #ddd;
+ }
+
+ .verify-img-panel {
+ margin: 0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ border-radius: 3px;
+ position: relative;
+ }
+
+ .verify-img-panel .verify-refresh {
+ width: 25px;
+ height: 25px;
+ text-align: center;
+ padding: 5px;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ }
+
+ .verify-img-panel .icon-refresh {
+ font-size: 20px;
+ color: #fff;
+ }
+
+ .verify-img-panel .verify-gap {
+ background-color: #fff;
+ position: relative;
+ z-index: 2;
+ border: 1px solid #fff;
+ }
+
+ .verify-bar-area .verify-move-block .verify-sub-block {
+ position: absolute;
+ text-align: center;
+ z-index: 3;
+ /* border: 1px solid #fff; */
+ }
+
+ .verify-bar-area .verify-move-block .verify-icon {
+ font-size: 18px;
+ }
+
+ .verify-bar-area .verify-msg {
+ z-index: 3;
+ }
+
+ /*瀛椾綋鍥炬爣鐨刢ss*/
+ /*@font-face {font-family: "iconfont";*/
+ /*src: url('../fonts/iconfont.eot?t=1508229193188'); !* IE9*!*/
+ /*src: url('../fonts/iconfont.eot?t=1508229193188#iefix') format('embedded-opentype'), !* IE6-IE8 *!*/
+ /*url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAaAAAsAAAAACUwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFZW7kiSY21hcAAAAYAAAAB3AAABuM+qBlRnbHlmAAAB+AAAAnQAAALYnrUwT2hlYWQAAARsAAAALwAAADYPNwajaGhlYQAABJwAAAAcAAAAJAfeA4dobXR4AAAEuAAAABMAAAAYF+kAAGxvY2EAAATMAAAADgAAAA4CvAGsbWF4cAAABNwAAAAfAAAAIAEVAF1uYW1lAAAE/AAAAUUAAAJtPlT+fXBvc3QAAAZEAAAAPAAAAE3oPPXPeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2Bk/sM4gYGVgYOpk+kMAwNDP4RmfM1gxMjBwMDEwMrMgBUEpLmmMDgwVDxbwtzwv4EhhrmBoQEozAiSAwAw1A0UeJzFkcENgCAMRX8RjCGO4gTe9eQcnhzAfXC2rqG/hYsT8MmD9gdS0gJIAAaykAjIBYHppCvuD8juR6zMJ67A89Zdn/f1aNPikUn8RvYo8G20CjKim6Rf6b9m34+WWd/vBr+oW8V6q3vF5qKlYrPRp4L0Ad5nGL8AeJxFUc9rE0EYnTezu8lMsrvtbrqb3TRt0rS7bdOmdI0JbWmCtiItIv5oi14qevCk9SQVLFiQgqAF8Q9QLKIHLx48FkHo3ZNnFUXwD5C2B6dO6sFhmI83w7z3fe8RnZCjb2yX5YlLhskkmScXCIFRxYBFiyjH9Rqtoqes9/g5i8WVuJyqDNTYLPwBI+cljXrkGynDhoU+nCgnjbhGY5yst+gMEq8IBIXwsjPU67CnEPm4b0su0h309Fd67da4XBhr55KSm17POk7gOE/Shq6nKdVsC7d9j+tcGPKVboc9u/0jtB/ZIA7PXTVLBef6o/paccjnwOYm3ELJetPuDrvV3gg91wlSXWY6H5qVwRzWf2TybrYYfSdqoXOwh/Qa8RWIjBTiSI3h614/vKSNRhONOrsnQi6Xf4nQFQDTmJE1NKbhI6crHEJO/+S5QPxhYJRRyvBFBP+5T9EPpEAIVzzRQIrjmJ6jY1WTo+NXTMchuBsKuS8PRZATSMl9oTA4uNLkeIA0V1UeqOoGQh7IAxGo+7T83fn3T+voqCNPPAUazUYUI7LgKSV1Jk2oUeghYGhZ+cKOe2FjVu5ZKEY2VkE13AK1+jI4r1KLbPlZfrKiPhOXKPRj7q9sj9XJ7LFHNmrKJS3VCdhXGSdKrtmoQaWeMjQVt0KD6sGPOx0oH2fgtzoNROxtNq8F3tzYM/n+TjKSX5qf2jx941276TIr9FjXxKr8eX/6bK4yuopwo9py1sw8F9kdw4AmurRpLUM3tYx5ZnKpfHPi8dzz19vJ6MjyxYUrpqeb1uLs3eGV6vr21pSqpeWkqonAN9oUyIiXpv8XvlN5e3icY2BkYGAA4n0vN4fG89t8ZeBmYQCBa9wPPRH0/wcsDMwmQC4HAxNIFABAfAqaAHicY2BkYGBu+N/AEMPCAAJAkpEBFbABAEcMAm94nGNhYGBgfsnAwMKAigESnwEBAAAAAAAAdgCkANoBCAFsAAB4nGNgZGBgYGMIZGBlAAEmIOYCQgaG/2A+AwARSAFzAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nGNgYoAALgbsgI2RiZGZkYWRlZGNkZ2BsYI1OSM1OZs1OSe/OJW1KDM9o4S9KDWtKLU4g4EBAJ79CeQ=') format('woff'),*/
+ /*url('../fonts/iconfont.ttf?t=1508229193188') format('truetype'), !* chrome, firefox, opera, Safari, Android, iOS 4.2+*!*/
+ /*url('../fonts/iconfont.svg?t=1508229193188#iconfont') format('svg'); !* iOS 4.1- *!*/
+ /*}*/
+
+ .iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+
+ .icon-check:before {
+ content: " ";
+ display: block;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ margin: auto;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 9999;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAIlFJREFUeNrt3X1cVNW6B/BnbcS3xJd7fLmSeo+op/Qmyp4BFcQEwpd8Nyc9iZppgUfE49u1tCwlNcMySCM1S81jCoaioiJvKoYgswfUo5wSJ69SZFKCKSAws+4f2/GetFFRYG3g9/2Hz2xj+O2J4Zm19trrIQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgjmOgAAADwOBhz83TzdPNs397qanW1ujJ2s8fNHjd7FBTkhuSG5IbculVdP1kSfeoAAPBwdFzHdXzgQN0S3RLdkpgY2SJbZMvNm9It6ZZ064cfGmQ2yGyQmZfX3KO5R3OPwkJdsi5Zl5yYKIfL4XL4mDHqs7AqGzhgBAIAoFFdI7pGdI1o1KjFlhZbWmxZv149OmXK4z3r4cPEiROfOFExKSbFVFDwqM+EEQgAgMY8y5/lz/LGjZu3bt66eev9+9Wjj1s4bAYNIkaMWHKyx3mP8x7nmzd/1GdyEP1CAQCASifrZJ3s6FjmWuZa5rprF3uLvcXeGjq0en5au3a8nJfz8k6d8lPyU/JTYmIq+wwYgQAAaIIk0WgaTaO/+IJm0SyaNWJEtf/IPMqjvJde0g/QD9APcHOrdGIhrxMAANzGmJwr58q569ZRLMVS7MSJNfajFVJIYYy/wF/gL7z0UmW/vUGNvk4AAHCHTqfT6XQrVtB4Gk/jg4KEBfmBfqAf+vSp7LdhBAIAUMPUwvH66+oj21eBSqmUStu3r+y3oYAAANQQtXDMmKE+WrlSdB4bvpwv58t/+62y34cCAgBQzeSt8lZ568SJFEiBFLh2reg8d2MD2UA28PTpyn4fCggAQDXRh+pD9aEjR1IABVDA5s20ntbTeklzf3eZF/NiXvv2Vfb7NHciAAC1nRwsB8vBvr5Wf6u/1X/nTubO3Jl7A+0tWvImb/LOyemc3zm/c/6ePZX9dmxlAgBQRfTd9N303Tw8rFusW6xbEhPZLDaLzXJyEp3rHjNoBs24dYt/wj/hn3h5mUwmk8mkKJV9GoxAAAAekz5AH6APeOYZ6znrOeu5Awc0WzgCKZACrVZ2hB1hR15++VELhw1GIAAAj0hdVdWli/ooNVX9WvnlsNUflHSk45wbuZEbg4LUwrFhw+M+LUYgAACV1CuoV1CvoCef5Kv4Kr4qIUE9qsHCcRsv4AW8YOHCqiocNtq7qAMAoFHqZoetW9MgGkSDDh+mhbSQFnbuLDrX/YWGmmJMMaaYsLCqfmZMYQEAPIBt23PLp5ZPLZ8mJ9MROkJHdDrRueyKpViKXbdO6aB0UDoEB1fXj8EUFgCAHX0v973c93KTJpbvLd9bvt+3T+uFg0/mk/nkL79UC0dISHX/PIxAAADuYuvLwQ/xQ/zQnj1sKBvKhj7/vOhc9vA4HsfjYmOd2jm1c2o3btxRdpQdZRUV1f1zMQIBALjNYDAYDAYHB9pEm2jTl19qvXBQGIVRWFKSWjgmTKipwmGDi+gAAERExJhZZ9aZdZGRNJ2m0/Tx40UnssuHfMgnPb2koKSgpGD0aIUpTGGlpTUdAwUEAOo9XbguXBf+/vu0lbbS1ldfFZ3HrgE0gAacPu0423G24+xhw5SOSkel440bouKggABAvaXjOq7j77xDetKTfv580Xns8iIv8srNlfKkPClv8OD0jukd0zv++qvoWLiIDgD1jrpnVXAwb86b8+Yffyw6jz18NV/NV+flWQZaBloGenufYqfYKXbxouhcNriIDgD1hi5Zl6xLnjyZL+AL+ILwcNF57OpLfanv1atsPpvP5vv7a61w2GAEAgB1nrpn1ejRPJNn8szoaM1ur05EREVF6ldfX0VRFEUxmUQnskejLyAAwOPT79fv1+9/7jn+E/+J/7Rjh7YLR3ExceLEhw9XTIpJMWm3cNho9IUEAHh08hB5iDykb1/+M/+Z/7x7N0VSJEU2aiQ61z30pCd9WZl1inWKdcoLL2R5ZnlmeR4/LjrWw8I1EACoM+S2clu5rasr+yv7K/vrgQO0jtbRumbNROe6G4/kkTzSYqFMyqTMgAC1cBw6JDpXZaGAAECt1zukd0jvkG7daBftol2HD1MERVBEq1aic93jdl8O9gv7hf0SGKhOVUVHi471qFBAAKDW0hfri/XFHTs6cAfuwBMS2Bw2h81p1050LruepWfp2fnzlaHKUGXopk2i4zwuFBAAqHVcw1zDXMPatrWSlayUkEBplEZp//VfonPZw86ys+zsm28qE5WJysQPPxSdp6qggABAraHuktuiRYOgBkENgg4dYt7Mm3k/9ZToXHZNpIk0MTzcWGosNZYuXy46TlXDfSAAoHnqfRxNm6qP4uPVr/37i85l11gaS2M3b1YWK4uVxa+8oh7kXHSsqoYRCABoVo+oHlE9oho2pME0mAbHxKhHNVw4IimSImNiXLJdsl2yp09XD9a9wmGDAgIAmmPry9G4f+P+jfv/4x8UT/EUP3iw6Fz3d/hwUXpRelH6Sy9FR0dHR0dbLKITVTfcSAgAGsPYhT4X+lzos2EDG8FGsBHjxolOZA9fxBfxRWlpFeYKc4V57NjckNyQ3JBbt0Tnqim4BgIAmiEvkhfJiz78kMWzeBY/Z47oPPbwpXwpX5qdbRlmGWYZ5uOjbnZYWCg6V03DFBYACKdbq1urW7tiheYLRypP5anffluRU5FTkTN4cH0tHDYYgQCAMOqeVX//O7vKrrKra9aIzmMPP86P8+NmM/fjftzP2zsrLSstK+3HH0XnEg0jEACocXJXuavcdepU1ol1Yp00fGNdP+pH/X78UUqSkqQkf38Ujt9DAQGAGqMP0YfoQ154gbbTdtq+cSMppJDCtDcTwokTLyiwvGh50fKiv79xuHG4cbjZLDqW1mjvfxwA1DluZjezm3nECMkgGSTD11+rRx0dRee6G8/gGTzj+nU+gA/gA/z81BGH0Sg6l1ZhBAIA1Ua9g9zHh/3MfmY/R0WpRzVYOE7yk/xkSYmUI+VIOSNHonA8HIxAAKDK6bvpu+m7eXhYt1i3WLckJrJZbBab5eQkOtcfKy9Xv44Zo7aQjYsTnai2cBAdAADqDn2APkAf8Mwz1gRrgjUhIYG9wF5gL7RsKTrXPQIpkAKtVlbMilnxpElKvBKvxO/eLTpWbYMRCAA8NnWqqksXddXSsWN0gk7QCWdn0bnuDao2dOJGbuTGoCCTyWQymTZsEB2rtsI1EAB4ZL2CegX1CnrySb6Kr+KrEhI0Wzhu4wW8gBcsXIjCUTWwFxYAVJral6N1axpEg2jQ4cO0kBbSws6dRee6v9BQU4wpxhQTFiY6SV2BKSwAeGge5z3Oe5xv3tzyreVby7dJSfQ2vU1v6/Wic9kVS7EUu26d0kHpoHQIDhYdp67BFBYAPFDfy30v973cpElFVkVWRdbevZovHJtpM23etk0tHCEhouPUVRiBAIBd6lSVoyMxYsRsq5SGDROdyx4ex+N4XGysUzundk7txo07yo6yo6yiQnSuugojEACwQ5L4dD6dT9+6VX2s3cJBYRRGYUlJauGYMAGFo2bUWAHps73P9j7b27Xr2bNnz549W7USfeIAYA9jslk2y+YNG9gmtoltmjBBdCJ7bA2dypVypVwZNUotHKWlonPVF1U+hfX7PW8CA9UtAnx9mQfzYB5Nmtz5Dz3IgzwKC+k1eo1ei4+naTSNpq1Zo5gUk2LKyBD9wgDUR/I5+Zx87oMP2CQ2iU2aO1d0HnvQ0EkbHruA9OK9eC/esmWD1AapDVK/+orm0ByaM2TIIz9hNEVT9IYNRfuL9hftDwmpby0iAUSQT8on5ZNLlrAZbAabsXSp6Dz28JV8JV/53XcVpypOVZzy9j694PSC0wt+/ll0rvrqkQuI15+8/uT1Jyen0smlk0snHz9Ox+gYHXN1rdp4KSnlE8onlE8YMUL9Rbl5U/QLBlCXqBfJQ0LUi+Th4aLz3N+lS+o2697e6kzFpUuiE9V3j3wNpHR26ezS2ZGR1VM4bHx8HHs59nLsdeBAj6geUT2imjUT9UIB1CVylBwlR738MulJT/qPPhKdxx6+hq/ha65ckWKlWCnW3x+FQ1sqPQJxN7gb3A29e1tbWVtZW5lMNdUQhifxJJ70zTdNujTp0qTL0KHf/PLNL9/88ttvYl42gNrJ7Te339x+GzuW5bAclhMVpU5ZOWhvU9UQCqGQa9es063TrdN9fLLKs8qzyk+dEh0Lfq/SIxBrf2t/a/+JE2u6kxjzY37Mz8ur9OXSl0tfTklRb2z6j/+o2ZcLoHZyi3aLdov285N2Sjulndu3a7ZwEBFRcTFP4Ak8YdQoFA5tq/wU1l/oL/QXLy9hiY/QETqi05U1L2te1vzgQdtFfGF5ADRMX6wv1hd7eqo9vWNjKZIiKbJRI9G57jGDZtCMW7fYUraULR01yrTNtM20LTVVdCy4v0qPINSLbrm56kW3Ll1EnwAtpaW01Ggse6PsjbI3Bg06c+bMmTNnrl0THQtApDtTza2tra2tU1LoJJ2kk9r7oMUzeSbPrKhg7syduRsMakOnPXtE54KHU+kRCF/Gl/FlGrr2cHtPHseVjisdVyYn39klFKAe6h3SO6R3SLduln9Y/mH5x8GDWi0ctr4cLJ7Fs/igIBSO2qnyU1i9qTf1zskRHfxu7G32Nnu7d2+1oCQmopBAfaL+vnfqJIVJYVJYUhLrx/qxfv/5n6Jz2cNSWApLCQlRhipDlaGbNonOA4+m8gWkM3WmzrGxooPbtYyW0bJevdQptuRk1zDXMNewtm1FxwKoDrYtgugNeoPeSExknsyTeXbsKDqXPewsO8vOvvmm8bzxvPH82rWi88DjqXQB6TK6y+guo3ftosW0mBafOyf6BO6vZ0/Hrxy/cvzq6FE3TzdPN0/tdkoDqAx1xNGiRfmI8hHlIw4epPfoPXqvWzfRueyaSBNpYni4sdRYaixdvlx0HKgaj7wMV5ZlWZZ1OsYYY+zYMfVo06aiT8genspTeeq331rmWuZa5vr5nfr01KenPv3hB9G5ACpD7T1ue5/Fx6tf+/cXncuusTSWxm7erCxWFiuLX3lFPci56FhQNR75TnS1p7Ci8Ml8Mp8cEKAeLS8XfUL2MG/mzbyfesphrMNYh7HJybZezqJzATyMrhFdI7pGNGrE5/F5fJ5tClm7hYNP49P4tB071MIxbdrtoygcdUyV3Qioy9Pl6fKef57n8Tye9/XXbCabyWY2biz6BO1aQAtowcWLFeMrxleMt+3mefGi6FgA/85gMBgMBgcH8wXzBfOFr75Sr+0ZDKJz3d/hw0VTiqYUTRk5Epuh1m1Vfie5foN+g37D0KFWV6ur1TUmRvOFxJM8yfN//9fhosNFh4s+Pif3ndx3ct/334uOBfD/fTk2bmQGZmAG2yd57bH15agwV5grzIMGYfPT+qHatiKRF8mL5EWDB1MohVLo7t339APRJNsmbb6+6rr0CxdEJ4L6SX3/fPihep/EnDmi89iDvhz1W7V1JDStMK0wrYiPV+8wHT1abSxVUiL6hO+vUyeextN4WkqKW5pbmlta166iE0H9oivVlepKly/XfOG4vSilIqcipyJn8GAUjvqp2lvaqtsvHz6sbss8ZAjNpJk088YN0Sduj20dPbvFbrFbKSm2O3tF54K6TU6UE+XE2bPJi7zIa9Ei0Xns4cf5cX7cbObP8ef4c76+aOhUv9XYbro2coAcIAd4e9Pf6G/0t7g4NovNYrOcnES/EPbwE/wEP/HTT9Z0a7o13c8ve0D2gOwBWr//BWoLW18OlsgSWeLnn9f0LtcPrR/1o34//siGsCFsiLe3cbhxuHG42Sw6FohV7SOQu9l22WTBLJgFP/88/5h/zD/W0N5ad7FtCSGRRBIlJ7uvdV/rvva//1t0LqjdbH056M/0Z/rzZ59ptnBw4sQLCqSnpaelpwcNQuGAf1fjBcRGndo6flzqLfWWeg8ZwjN4Bs+4fl30C2IPm8PmsDnt2llbWFtYW9g2bezZU3QuqF3U35tBg7Tel8P2frQ2tja2Nh46NDM4Mzgz+OxZ0blAW4QVEBtjU2NTY9O0NPIgD/Lw9eXhPJyH//qr6Fx2fUQf0Udt26pD+qQkua3cVm5bXS19oa6w9eVQf89jYrTal8O22IU5MAfmMGpUVlpWWlaa0Sg6F2iT5obM6lYNsqwWkoQENpvNZrM13HnQ1npzvXW9df2gQXjDwb+rLX05VLadJMaMUZexx8WJTgTaJnwEcjf1F9dkkhZJi6RFzz3H03k6T//lF9G57IqgCIpo1UrqJfWSeiUkuHd27+ze2d1ddCwQSx+qD9WHPvWUdaR1pHVkfLxmC0cgBVKg1cq6s+6s++TJKBxQGZobgdztzie4C9YL1gsJCepWDhru8+FBHuRRWEgZlEEZQ4ao13oyMkTHgpqh36/fr9/v4sIP8UP8UGoqnaATdEKDu0DfbujEjdzIjUFB6t52GzaIjgW1i+YLiI26aqV7d9aINWKNkpO13jBHVVTE2/A2vM2QIaZDpkOmQ+npohNB9bC1C2BJLIklpaay/qw/6+/iIjqXPczMzMy8cKHxmvGa8dr774vOA7WT5qaw7MlyynLKcsrJUQuHj496ND9fdK77a9GCXWVX2dVDh9wC3QLdAvv1E50Iqpat86U0X5ovzU9I0HrhUIWGonBAVag1BcRGnaP917/UR76+thucROe6vxYtJCYxiSUk6LiO6/jAgaITwePxOO9x3uN88+ZqB8yDB2k5LaflPXqIzmVXLMVS7Lp16vtnyRLRcaBuqDVTWPbYLlZyF+7CXZKS6EP6kD7UcJ8Pd3In95s3eQPegDcYOdK01rTWtDY5WXQseDh9L/e93PdykyZlT5Q9UfbEgQPMn/kzfw1/INhMm2nztm1KT6Wn0nPKFPWg1So6FtQNtb6A2Nj2rJLGSGOkMcnJbD6bz+Z36CA61/0VF1tft75ufX3kyCxDliHLkJQkOhH8MXWqytFRXcSxe7d6dNgw0bns4XE8jsfFxjq1c2rn1G7cuKPsKDvKKipE54K6pdZNYdmTHZEdkR1x/rxloGWgZaC3N1/FV/FVWu/r0bSp9J70nvTe3r26Ql2hrtDfX3Qi+COSxKfz6Xz61q3qY+0WDgqjMApLSlILx4QJKBxQnepMAbGxdRbk2TybZ/v42HYPFZ3r/po2pV20i3bt2yevkFfIK4YPF50IiIgY05l1Zp05MpJtYpvYpgkTRCeyy4d8yCc9vaSgpKCkYPRotXCUloqOBXVbnZnCskedeujUSX2UnKxOQXTpIjqXXXrSk76sjHVgHVgHg8H4lvEt41t794qOVd/I8+R58rxVq9gRdoQd+Z//EZ3n/s6ccdzjuMdxz8CB6R3TO6Z31PBWQFCn1LkRyN3UG/kuXWLH2XF23MdH7beQmys6l11GMpKxYUO1t3x0tO5fun/p/jVqlOhY9YW6lc5bb2m+cNz+PZZcJBfJZdAgFA4Qoc4XEBt108bLl6V8KV/K9/amxbSYFmu4r8ftQkJraA2tiYqSw+VwOXzMGNGx6ir5oHxQPvi3v6mPli0Tnccevpqv5qvz8irCK8Irwv39M6MzozOjf/pJdC6on+pNAbGxveEalDYobVDq68vf5e/ydzW8TfXtQsK2sq1s686dd/pIQJVQd1MOCGCX2WV2+eOPReexqy/1pb5Xr6qrC/39bdf6RMeC+q3eFRCbjJcyXsp46coVx2uO1xyv+fnxo/woP/rPf4rOdX+OjiyH5bCcqCh5q7xV3jpxouhEtdWdqcGf6Cf66YsvaD2tp/WSRt8PRUWUTumUPmTI72+kBRBLo2+YmmMrJBWRFZEVkX5+6tEzZ0TnsudOA6Kn6Wl6essW2ydo0blqC7dot2i3aD8/XsgLeeGOHcyduTP3Bg1E5/pjxcW8O+/Ou48YYdulWnQigH9X51dhVVbvY72P9T7Wpo3DbofdDrsTE+kYHaNj2m0YxSN5JI+0WNgNdoPdeOUVxVfxVXxt9yuAjboar08fCqZgCk5MpHW0jtY1ayY61z1ur8KzTrFOsU4ZNSrLM8szy/PQIdGxAP5IvR+B3C17QPaA7AFXr5YlliWWJQ4cSEtpKS3VboMo24iEN+PNeLPPP5ej5Cg56uWXRefSClvrYR7BI3jEgQNaLRy2DwKUSZmUGRCAwgG1AUYgD9CL9+K9eMuWDtcdrjtcj49nvsyX+Xp4iM5l1+0+D6SQQsrMmerUR2Sk6Fg1zS3NLc0trWtXpmd6pk9N1ez2/7b/X2NoDI159VVlqDJUGbppk+hYAA8DI5AHUFe7FBZamluaW5oPHkycOHENN4hSSCGFMfUP07p18gB5gDxg5kzRsWqKuktuhw7SJemSdCkhQbOFw+ZZepaenT8fhQNqI4xAKkmdEmnRgnzJl3wPHaIUSqGUvn1F57If+PYnXH/yJ//ZsxWDYlAMGl6u+ojuXLuKcYhxiDl6lFIplVK7dxedyx52lp1lZ99801hqLDWWLl8uOg/Ao3AQHaC2yc/Pz8/Pv3WrzZg2Y9qM2bFDWiOtkdZ4erIv2Zfsyz//WXS+ewNTPuUzRiVUQiVDhjhzZ+7Mr11Tz0PDI6mHZCvoUrwUL8UnJNAlukSXtLvoQRURoVxWLiuXFy0SnQTgcaCAPKIrCVcSriSUl7dp3aZ1m9a7djn80+GfDv+0dRzs3Fl0vnvYCome9KQfMqR9m/Zt2rcpKsrPzc/Nz619rXbVLUeaNqXn6Dl67sAB+p6+p+81PBIcS2Np7ObNyjZlm7JtxgzRcQCqAq6BPKbTC04vOL3g5k310fDh6lSRhhtE3b5GorbaXbNGDpAD5IDa80m4R1SPqB5RDRvy2Xw2n71rFyVREiV5e4vOZVckRVJkTIxLtku2S/b06epBzkXHAqgKGIFUEXVKqLzcucS5xLlk1y4+j8/j8/r0YSfYCXZCuz2yWQErYAV+fs6hzqHOoRZL/t78vfl7jx0TnetuBoPBYDA4ONzYd2PfjX3bt7MMlsEytL7J5OHDRa2LWhe1Hjfu+AfHPzj+QXm56EQAVQkX0avJndanTcqalDWJjWWD2WA2WPsNo9T7Ed5+2+Rh8jB5aGVTQcZks2yWzRs3MgMzMMO0aaIT2cMX8UV8UVpahbnCXGEeNOj3I1SAugUFpJp1jega0TWiUaMW+hb6FvroaJpFs2jWiBGicz0I/4J/wb9YtcrkanI1ub7+uqgc8jn5nHzugw/YJDaJTZo7V/TrYg9fypfypdnZlmGWYZZhPj625d+icwFUJ1wDqWa5IbkhuSG3bpXkleSV5I0bx2fymXym9htEsalsKpu6cKF8Wj4tn37vvZr++bJJNsmm0FDNF46VfCVf+d13FTkVORU5gwejcEB9ghFIDbNdBG6yqsmqJqt27lSPjh4tOtcDJVESJYWFKS2VlkrL6mu0pC7LDQlRO0eGh4s+7fu7dEm9sdTb29a4THQigJqEEUgNO/fiuRfPvVhWpv7hefFF2yod0bkeyI/8yG/BAvUP/OrVVf306rLcKVPUZcYffST6dO3qR/2o348/sqVsKVvq44PCAfUZVmEJoq7aslr7F/Yv7F/49dfXrl27du1a167qv/bsKTqfXYwYMU/P9lPbT20/tUWL/NT81PzUw4cf9enuNMjqQ32oz7ZtbCPbyDZqsC8HJ068oEDyl/wlfz8/Y4AxwBjw3XeiYwGIpL03aj0THR0dHR1tsbi4uLi4uEyeTJtpM23etk10rgdh8Syexc+ZI+fKuXLuJ5/cPvrQU6K6Ql2hrtDfX9op7ZR2bt9+p8+JxvAMnsEzrl+3NrY2tjYeOjQzODM4M1jDHSwBahCugWiM7X6HC/0v9L/Q/4sv1Fa2kyaJzvVA0RRN0Rs2KC6Ki+Jiu9Paar37P9MX64v1xZ6efC6fy+cePqxuX/7EE6Lj342f5Cf5yZISJjGJSc8/rzCFKezIEdG5ALQEBUSjbIXEbDabzWbbLq1TpojO9UCcOPHPPlOvDQQGqgetVneDu8Hd0Lu3tbW1tbV1SgqdpJN0smVL0XH/mO2GvzFj1O3w4+JEJwLQIs1NGYDq3Llz586d41y9VrJ3r3OKc4pzSqdOFEMxFOPmJjqfXYwYMVluP6/9vPbzOnZ0/sX5F+dfvvvOusS6xLokMZF9zj5nn7duLTrmPQIpkAKtVlbMilnxpElKvBKvxO/eLToWgJZhBFKrSJK6Cmr9evUPtW1vJQ273aKVjGQkY8OGouPc4/Z293wYH8aHBQaaRplGmUZt3Cg6FkBtgAJSKzEmvyO/I78TEcH2sX1sX3Cw6ES1FTMzMzMvXGi8ZrxmvPb++6LzANQmmMKqpfKP5B/JP3LokLOzs7Ozc6tW6tE+fUTnql1CQxWzYlbM774rOglAbYRlvLUa5+pF3r//nQ7SQTqo4RvwtGI8jafxn3yivm5LloiOA1CbYQqrjtGV6kp1pcuXkxd5kVft6fNR7W7fX6P0VHoqPW2r2e5dZgwADw8jkDpGaaw0VhovXsw38o18I6ZmeByP43Gxsc2eafZMs2emTlWPonAAVAUUkDrKJJtkk/zWW/QqvUqvaqWvRw0KozAKS0pyaufUzqndhAlH2VF2lFVUiI4FUJeggNRxSpASpAS9/ba6jHbpUtF5qh0nTjwjo6SgpKCkYPRotXCUloqOBVAXoYDUE+pWHO+8QyEUQiHiGkRVrzNnHGMdYx1jn39e3fX4xg3RiQDqMizjrWfy9+Tvyd/zzTdPlj5Z+mRpSQm1olbUSvutdu3yIi/yys2VHCVHydHX9+T0k9NPTr96VXQsgPoAq7DqOfmYfEw+Nn8+m8PmsDlhYaLzPCy+mq/mq/PyLAMtAy0Dvb3VToAXL4rOBVCfYAqrnjMNMA0wDVi9mubSXJo7b57oPA/Ul/pS36tX2Xw2n83390fhABAHIxD4HV2sLlYXGxREcRRHcZ98QgoppDx8n4/qVVSkfvX1VW8ENJlEJwKoz3ANBH4nf0f+jvwdRmN73p635/n5LIgFsaBhw8QWkuJi3p13592HDTPFm+JN8RkZol8nAMAIBB5AjpVj5dhXX2VX2BV25dNPaT2tp/U10HL29i6+TMd0TDd6tPE142vG1w4eFP16AMD/QwGBh6I7qDuoOzhtGl2my3R5w4bqKiQ8kkfySItFHfn89a9qY6roaNHnDwD3QgGBSpG7yl3lrlOn0nbaTts3bqyqXua2wiEtk5ZJy6ZONe437jfu//JL0ecLAPbhGghUSv6v+b/m/5qd3b5N+zbt22RksLFsLBvbvz+lURqlVb5FLU/lqTz122+l36TfpN8MBuMc4xzjnL17RZ8nADwYlvHCIzGtMK0wrYiPbza+2fhm47t3V48uWcJX8pV85Xff2fu+3//7kiXXP7v+2fXPevUy9jT2NPY8elT0eQHAw8MUFlQL1zDXMNewJ55o2L1h94bd27UryynLKcu5cuX0gtMLTi+4eVN0PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAO/4PSBxbMqgmA24AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMTItMTVUMTU6NTc6MjcrMDg6MDCiEb4vAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTEyLTE1VDE1OjU3OjI3KzA4OjAw00wGkwAAAE10RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fY2sxYnphMHpqOWpqZGN4ci9jaGVjay5zdmfbTpDYAAAAAElFTkSuQmCC");
+ background-size: contain;
+ }
+
+ .icon-close:before {
+ content: " ";
+ display: block;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ margin: auto;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 9999;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAADwRJREFUeNrt3V1sU+cZwPHndTAjwZ0mbZPKR/hKm0GqtiJJGZ9CIvMCawJoUksvOpC2XjSi4kMECaa2SO0qFEEhgFCQSqWOVWqJEGJJuyYYWCG9QCIOhQvYlgGCIFmatrVSUhzixO8ujNM1gSZOfPye857/7wYlfPg5xj5/n/fExyIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABATizsWti1sCs/v6y0rLSsdMaMZ/Y8s+eZPZMnm54LQO6kn/fp/UB6v2B6LrdRpgcwZf7e+Xvn7505MxAIBAKBrVt1ja7RNdXVaqlaqpbOmTP0z+u9eq/ee/euFEqhFH7ySeCjwEeBj+rr299of6P9jb//3fT2AMhcWVlZWVnZ3Ln6uD6uj2/eLF3SJV1VVapW1ara6dOH/nn9hf5Cf3HzpupW3aq7qSl5LHkseay+/nLt5drLtbdvm96eXPNZQJQqn1Q+qXzS73+vN+gNesObb0q7tEv7xImZ/kv6kr6kL/X3q0PqkDpUXx/aFNoU2rRz53l1Xp1X/f2mtxTAcMv1cr1cT5jQfb37evf1ujrpkR7p2bxZ1agaVZOXl/E/WCM1UnP/vv5cf64/f+utjg87Puz4cPfu1G9qbXp7neaTgChVeqD0QOmBP/5RHVPH1LHf/CbrN1EplVLZ2iqt0iqtv/51NBqNRqP37pnecgDpI42CgtTz9OTJ1PO0sjLbt6PX6/V6/Z/+1LG5Y3PH5g0bHnzX2pBkXlyPKTtadrTs6Ouvq/fV++r9LVscu6EbckNuPPGEhCUs4UWLpsanxqfGT5yIxWKxWCyRMH0/AH40GI6whCXc3Cyn5bScDoeduj11RV1RV559dkrFlIopFX19sauxq7GrbW2m7wenBEwP4JT0OY7UV6+/nrMbjkhEIitWSIVUSEVLS0ljSWNJYyhk+v4A/GQwHHtkj+xpahp8XuaImqwmq8m7di2oXlC9oHr2bNP3h1OsDUhgfWB9YP2WLdIgDdLwgx/kfICzclbOLluW35Hfkd/x5z8PPqABOGbYEcd22S7bKypyPsiDc6v9df11/XWvvWb6fnGKtQHRj+nH9GOrV5ueY/CVz4MHNCEBsm9YOHJ8xPEo6og6oo64YD/k1PaZHiDbvruD/uYb0/MMUyEVUtHWFi+Pl8fLf/Wray9ee/Haiz09pscCvGjYUpWpI44RBE8FTwVPFRRcLLxYeLEwHjc9T7ZYdwSi2lSbavvxj03P8UgsbQHj5pqlqlFK9iZ7k70u3i+NkXUB6Tvcd7jv8H//a3qOEXGyHciY6ZPjYzXw0sBLAy95YL+UIeuWsNJK75feL71/545arBarxYWFpucZUVjCEj53LvWEqK7mfSTAt9x6jmNEi2WxLL59O3ooeih6aNYs0+Nkm3VHIIO6pEu6Pv3U9Bijxsl2YBjPhiOtUAql0EP7oQxZG5C8SXmT8ibt35++5IjpeUaNpS3As0tVabpBN+iGgQE5Lsfl+KFDpudxirUBuTT90vRL0//xj/S1qkzPkzFOtsOHvHZy/FFUsSpWxfv2pZai//Y30/M4xfpLmRR/VvxZ8Wd//Wvf7b7bfbd//vPBS454xU25KTdnz+YSKbCZ55eq0h5cE2/OB3M+mPPBb3977dq1a9eu2XstLGtPog+Vvp5/X1tfW19bU5N6V72r3v3FL0zPlTHeRwKLeOV9HCPaLbtl94UL8a/jX8e/fv55vzwvfROQNEICmEc47OC7gKQREiD3CIddfBuQNEICOI9w2Mn3AUkjJED2EQ67EZAhCAkwfoTDHwjIIxASIHOEw18IyAgICTAywuFPBGSUCAkwHOHwNwKSIUICEA6kEJAxIiTwI8KB/0dAxomQwA8IBx6GgGQJIYGNCAe+DwHJMkICGxAOjAYBcQghgRcRDmSCgDiMkMALCAfGgoDkCCGBGxEOjAcByTFCAjcgHMgGAmIIIYEJhAPZREAMIyTIBcIBJxAQlyAkcALhgJMIiMsQEmQD4UAuEBCXIiQYC8KBXCIgLkdIMBqEAyYQEI8gJHgYwgGTCIjHEBKIEA64AwHxKELiT4QDbkJAPI6Q+APhgBsREEsQEjsRDrgZAbEMIbED4YAXEBBLERJvIhzwEgJiOULiDYQDXkRAfIKQuBPhgJcREJ8hJO5AOGADAuJThMQMwgGbEBCfIyS5QThgIwICESEkTiEcsBkBwXcQkuwgHPADAoKHIiRjQzjgJwQE34uQjA7hgB8REIwKIXk4wgE/IyDICCFJIRwAAcEY+TUkhAP4FgHBuPglJIQDGI6AICtsDUl+XX5dfl0ySTiA4QgIsmrwlXpYwhJubpaIRCSyYoXpuTIWlrCEz50b/Nrr2xGRiESqq6PRaDQavXfP9FiwAwGBI6w5IvEqjjiQAwQEjiIkOUY4kEMEBDlBSBxGOGAAAUFOEZIsIxwwiIDACEIyToQDLkBAYBQhyRDhgIsQELgCIRkB4YALERC4CiEZgnDAxQgIXMn3ISEc8AACAlfzXUgIBzyEgMATrA8J4YAHERB4inUhIRzwsIDpAYBMJNYm1ibWKqUeV4+rx5X3XwCdkTNyxoLtgC/xwIUnWPN5HI/i8Ge2A04gIHA168MxFCGBhxAQuJLvwjEUIYEHEBC4iu/DMRQhgYsRELgC4RgBIYELERAYRTgyREjgIgQERhCOcSIkcAECgpwiHFlGSGAQAUFOEA6HERIYQEDgKMKRY4QEOURA4AjCYRghQQ7kmR4AdhkMR1jCEm5uliNyRI54MBxhCUv43DkpkiIpunVLbspNuTl7tumxRu2W3JJbM2cGC4IFwYKFC6fGp8anxk+ciMVisVgskTA9HuzAxRSRFcOOOCISkciKFabnylj66ril8dJ46Zo1wY3BjcGNVVV6m96mt505Y3q8jKX/HyqkQipaWkoaSxpLGkMh02PBDixhYVysWaoa4bLq1lxGnqUtZBEBwZj4JRxDERLgWwQEGfFrOIYiJAABwSgRjocjJPAzAoLvRThGh5DAjwgIHopwjA0hgZ8QEHwH4cgOQgI/ICAQEcLhFEICmxEQnyMcuUFIYCMC4lOEwwxCApsQEJ8hHO5ASGADAuIThMOdCAm8jIBYjnB4AyGBFxEQSxEObyIk8BICYhnCYQdCAi8gIJYgHHYiJHAzAuJxhMMfCAnciIB4FOHwJ0ICNyEgHkM4IEJI4A4ExCMIBx6GkMAkAuJyhAOjQUhgAgFxKcKBsSAkyCUC4jKEA9lASJALBMQlCAecQEjgJAJiGOFALhASOIGAGEI4YAIhQTYRkBwjHHADQoJsICA5QjjgRoQE4xEwPYDtbAtH4kriSuIKT1BbXCy8WHixMB6fuGzisonLVq/W2/Q2ve3MGdNzZeysnJWzy5blt+e357f/5S8ljSWNJY2hkOmxbMcRiENsDcfV7Ve3X93+zTemx4IzOCJBJghIlhEO2ICQYDQISJYQDtiIkOD7EJBxIhzwA0KChyEgY0Q44EeEBP+PgGSIcACEBCkEZJQIBzAcIfE3AjICwgGMjJD4EwF5BMIBZI6Q+AsBGYJwAONHSPyBgDxAOIDsIyR2831ACAfgPEJiJ98GhHAAuUdI7OK7gBAOwDxCYgffBIRwAO5DSLzN+oAs18v1cj1hQk95T3lP+aefpr77y1+anitje2SP7Dl7NhW+1auj0Wg0Gr13z/RYQDYMvsALS1jCzc0SkYhEVqwwPVfGKqVSKltbQ++E3gm9U1V1Xp1X51V/v+mxnGL9B0p1X+++3n29ri71FeEA3GjwcR2RiESqq1MhOXfO9FwZa5VWaa2s7DnYc7Dn4O7dpsdxmrUBKX+7/O3yt3/2M5krc2Xupk2m58lYeqkqmogmomvWEA74QfpxHtwY3BjcWFXl1U9I1Iv0Ir1o69b53fO753fPm2d6HqdYG5BkXjIvmbd1q3pOPaeemzDB9Dyjlj7i2Ck7ZeeqVZzjgB+lP2o3dU5kzRqvHZGoGlWjavLyAg2BhkDDa6+Znscp1gZEzVQz1cyqKtNzjBpLVcAwnl/aOi7H5biH9kMZsi4gCzoXdC7o/OEPZZ/sk33TppmeZ0QsVQEj8vbS1owZJY0ljSWNoZDpSbLNuoAMrBtYN7DuRz8yPceIWKoCMubVpa3Q/ND80HwP7JcyZF1ARIkS9e9/mx7jkTjiAMbNa0ckgUmBSYFJ//mP6Tmyzdr3gZTGS+Ol8Rs31FK1VC2dM8f0POkjjuCTwSeDT1ZXp19JmR4LsIFr30eyQ3bIjs7O6AvRF6IvFBebHifb7DsCeUA1qAbV0Nxseg7CATjPrSfb9VP6Kf2UC/ZDDrE2IMlkMplM7t8vNVIjNffv53yAIUtVhANwnluWtvRhfVgf7u1VL6uX1csHDpi+X5xibUAu116uvVx7+3bqqz/8IWc3nD7imBecF5y3ciUnx4HcM36yPSlJSb71VrQj2hHtuHPH9P3hlDzTAzgt1hRrijW1tU3ZMWXHlB1z5qgr6oq68uyzWb+h/bJf9re0BIuCRcGitWs54gDMi8VisVgskZganxqfGj9xInWtqvJyuSE35MYTT2T79vRJfVKfPHas4+mOpzuerq01vf1Osz4gabGWWEus5dSpaV9N+2raV4mE7JJdsmvJEmmXdmnP/J3q+pK+pC/190undErn3r1FkaJIUeR3vzv9yulXTr/S12d6ewF8Kx2S4gvFF4ovfPxxX29fb19vQYE+qo/qowsWqPfUe+q9QMYrMumlKlklq2TVm29+Nxxam95up1n7U1gjKSstKy0rnTFDr9Qr9cotW1SLalEtq1enfgy4qOjhf+vOHVkn62TdJ58M3B24O3C3vv7Lg18e/PJgZ6fp7QGQufQ18/QpfUqf2rw59d3nn0/9OmPGsL+wRJbIkn/+U7+qX9WvNjUFZgVmBWbV17cXtBe0F3R1md6eXPNtQB4l/fkEiTWJNYk1P/1p+n0lvF8D8I/BHwvWokX/5CehaCgaiv7rX6nLs/f2mp4PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtvsf2vlfs7i0WI4AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTctMTItMTVUMTU6NTc6MjcrMDg6MDCiEb4vAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE3LTEyLTE1VDE1OjU3OjI3KzA4OjAw00wGkwAAAE10RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fY2sxYnphMHpqOWpqZGN4ci9jbG9zZS5zdmdHkn2WAAAAAElFTkSuQmCC");
+ background-size: contain;
+ }
+
+ .icon-right:before {
+ content: " ";
+ display: block;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ margin: auto;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background-size: cover;
+ z-index: 9999;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAJ4pJREFUeNrt3XtcVXW6P/Dn2VwCBxUzNbnkkXRSGzXW2huQRLyMIqKRJF7Q1CkrDS+VGp3Gy9g5YzI6qVsNfTmlqGmipQiIiJqAcnOvhaKRHidshoatpKaBogL7OX+s6Mz8flO5CfzutXne/+zXWhR8QOXZ3+93Pd8vAHuAEKW10lpp7dix0mXpsnR5/34pX8qX8r/7TpZlWZaJGl//9f6+fY3/X+PnEf2dMMYY/yJqYcbbxtvG2/7+lEM5lLN7NyyCRbBowICmfj56m96mt/PzDZGGSEPkxImWNpY2ljYVFaK/T8ZY6+MiOoCzMn1t+tr09a9/TQfpIB0sLITlsByW9+r1Sz8v5mEe5vn7Q3toD+0nT/Y77Xfa73ROTuWNyhuVNyorRX/fjLHWg0cgzUybcmrThvIoj/JUFcMwDMOeeKLFvmA8xEN8TQ2sh/Ww/rnnFFVRFfXwYdE/B8aY8zOIDuBsqDf1pt6vvdbihaPRBtgAG7y8wAQmMKWlyflyvpw/aZLonwNjzPlxAWlWiOiN3ugdH//Av7QFLGBxd4dzcA7O7dgh75H3yHvmzBH9E2GMOS+ewmomplhTrCn2qads5bZyW3lJieg8jWgADaABf/yjul5dr65fvPj7uyQ6F2NM/3gE0kxsb9vetr3do4foHP8vLMACLPj977W1mS1bwimcwsnVVXQuxpj+cQFpLt/Ct/BtmzaiY/y0adNqltYsrVmakqIVEg8P0YkYY/rFj/E2E5+zPmd9znbpAggI+PzzovP8qItwES727n23w90OdzuEhfl86fOlz5f79lmtVqvVeveu6HiMMf3gEUgzqVfqlXqluFi7qqsTnefnYCImYmJ4OOVSLuWeONF/Zv+Z/Wf6+orOxRjTD15Eb2ZSlVQlVWVkYCRGYuSoUaLz3C86QSfoRHk5lVAJlURElISWhJaE/vWvonMxxhwXj0CaGT1Lz9KzS5eCDDLI+nnaCQfiQBwYEID1WI/1J05oi+6SJDoXY8xx8RpIM7tccbnickVlZdekrkldk4gwAzMwY8gQ0bnuF2ZhFmZ5eWkd7pMn+1T4VPhUKIq2RvLll6LzMcYcB09htShE6YJ0Qbqwdi3GYRzG6bCxbxbMgll372ojqilTlEAlUAncu1d0LMaYeDyF1aKI1CfUJ9Qn5s6FuTAX5r71lt6mtiAJkiDpoYeojuqo7uOP5VQ5VU6dOVN0LMaYeDwCecCkFClFSpk+HcbBOBi3eTOa0IQm/TX20RbaQlsSE9V+aj+131tvic7DGHvwuIAIIp+Xz8vno6OpJ/Wknrt2YRAGYZCnp+hcdpsAE2DC++8rbypvKm82TtHZbKJjMcZaHhcQwYxnjWeNZ8PDaTpNp+mpqdrd9u1F52qa/fu9LF4WL8ukSTmYgzl4547oRIyxlsNrIIJZ+lr6Wvrm5GBv7I29Bw6EN+ANeOMf/xCdq2mefbbGWGOsMR48GHQx6GLQxXbtRCdijLUcfozXQVSWVpZWllZV+df51/nX7dtH8RRP8aNGwQk4ASc6dhSdzz7du9NVukpXR4zoFNMpplPM/v1Xsq9kX8m+dUt0MsZY8+ERiIMpTitOK067dMm1zrXOtS4sTLurqqJz2e04HIfjsuw623W26+yCgsD8wPzAfMfbrZgx1nRcQBxUUVxRXFHclSu1CbUJtQnh4dpd/R1V+0OHuxGNaMzLazw3RXQuxtgvx4voOtEnpU9KnxR3d88yzzLPsu3bIQ3SIG38eNG57BYEQRB04wZVUzVVP/OMukPdoe7IyxMdizFmPx6B6ETZ+LLxZePv3Qv4PODzgM/j4mg37abdGzeKzmW3YiiGYm9vHIyDcXB2tlwil8gl48aJjsUYsx+PQHROTpaT5eSEBDCDGcwrVojOYy9KoiRKamgAK1jBOmuWGq1Gq9GbN4vOxRj7eVxAnISUKWVKma++ihVYgRXr1sEm2ASbDPoZYTZu8bIJNsGmd95RUEEF//AH0bEYYz9OP79g2E9SI9VINfL996mWaql23DjaQBtog44a+RRQQEEEIxjBuHSptgml2ax9UEeFkLFWhEcgTko7z2PIECqiIiravx+DMRiD9drYt3MnEBDQ9OmKqqiK6vgnPjLWGvA7OyelKIqiKJ99pj31NHQovAavwWtVVaJzNU1cHKyCVbAqM/Ppjk93fLpj27aiEzHGeATSahjTjenG9IAAOkyH6XBWFpyEk3BSf419tISW0JJTp2wdbB1sHaKiTg86Pej0oG++EZ2LsdaIC0grozXyPfpow7SGaQ3TMjNxKS7FpTps7CMgoPPntYuICG1q6+9/Fx2LsdaEC0gr1Z/6U3/y9nZNcE1wTThwAI7CUTjauHWK3litVEEVVDFypFqlVqlVpaWiEzHWGvAaSCt1Bs/gGbxx46bfTb+bfsOHUxqlUZpej6rt2hVX4kpcefy4sYOxg7HD00+LTsRYa8AjEAYAALGxsbGxsS4u5XK5XC4nJcEe2AN7XnpJdK6muX1bex0/XnuYICNDdCLGnBEXEPZvIMokk0xLlzb2ZYhOZK/GDne8htfw2iuvKJFKpBL5wQeiczHmTPg8EPZvWZdZl1mXHT/uY/Yx+5ivX4cn4Ul4MiLih4Y/B4cZmIEZBgPchJtwc8wY33Lfct/y2trKO5V3Ku+cPCk6H2POwOF/ETDHoDUmxsVpV1u3aq9ubqJzNY3ZrE1tvf66ds1nuDPWFFxAmF0C9wTuCdwzbBj6oi/67tuHc3AOztFfYx9Npak0dft2TMZkTH7xRe5wZ8x+XEBYk5i6m7qbuptMtlG2UbZRGRlQCIVQ2KmT6Fx2i4RIiExPh0zIhMwJE7SRSeMiPGPsp3ABYb+INrXVq5d2lZWlvT72mOhcdiMgoKIi7WL0aG1EcvWq6FiMOTLuA2G/iPaOvbEjPCQEBsEgGKTDRj4EBAwOhkWwCBbl5BhvG28bb/v7i47FmCPjEQhrVn379u3bt2+HDm55bnlueWlpOAyH4TAdNvaFQiiE/u1v2Bk7Y+eICMtiy2LL4gsXRMdizJHwY7ysWVVVVVVVVd2545Ptk+2T/fHH2t3GvbZ+/WvR+e5bBVRAhbc3zaJZNCsu7lG3R90edcvLu6xcVi4rX38tOh5jjoCnsFiLaFyMDggICAgIiI6mPbSH9uivkQ/n4Tyc9/DDBjSgAbOzA/MD8wPzR44UnYsxR8BTWOwBQpTmS/Ol+StW4HE8jsfffFN0IrsZwQjGe/dgGkyDadOnK6FKqBK6a5foWIyJwFNY7IGyFlgLrAVHjnTd3nV71+03buDj+Dg+PmKEXjrcoRIqodLFBaqgCqpiYnzAB3ygpsZqtVqt1oIC0fEYe5C4gDAhrNus26zbiop8yZd86dIlqIEaqBk9Wvuoi+P/vbSCFayNBW/EiK5ZXbO6Znl6WpOsSdako0dFx2PsQXD8d3ysVZCWS8ul5aNH4yf4CX6ye7d2t00b0bmaJjnZy+Jl8bLMmJGDOZiD9fWiEzHWEriAMIciS7IkS8HB2lV6utaf8cgjonPZi+IpnuIPHHAf7j7cffjEiYX+hf6F/rW1onMx1pz4KSzmULQO8KKihjUNaxrWhIdTPuVTfkWF6Fz2wg24ATc888y9gnsF9woyM7XC2L696FyMNScuIMwhnR50etDpQWVltI7W0bqwMMqjPMrTXyMfJmIiJoaHUy7lUu6JE/1n9p/Zf6avr+hcjDUHnsJiuhBSEVIRUvHww3Xn6s7VnUtP17YcGTBAdC57USIlUuKlS7YDtgO2AxERp82nzafNFy+KzsVYU/AIhOmCtoZw/bpWQIYPh9WwGlYfOiQ6l70wARMwoXt3wzjDOMO4vDxtM0pJEp2LsabgAsJ0pXRh6cLShbdu1V6uvVx7OTqaUimVUvXXyIev4+v4epcuEA/xEJ+To62RjBghOhdj9uApLOYEELVfwCtXak9tzZ8vOpHdvu9wJ5lkkp9/Xn1ZfVl9OSVFdCzGforjN2wxdh+0TvDDh31W+KzwWXHnDtRDPdQPG/avDX8OrLHDfQbMgBkxMT6jfUb7jK6qsn5s/dj6scUiOh5j/47j/8NirAm0tYVp0+gUnaJTf/kLmtCEJldX0bnsRVtoC21JTFT7qf3Ufm+9JToPY/+MCwhzavJ5+bx8PjqaelJP6rlrFwZhEAZ5eorOZbcJMAEmvP++8qbypvLmnDnaTZtNdCzWunEBYa2C8azxrPFseDhNp+k0PTVVu6vDxr4oiIKoffu8lnkt81oWF6dtlXLnjuhYrHXip7BYq2Dpa+lr6ZuTg72xN/YeOBDegDfgjX/8Q3Quu2VABmSMHVtjrDHWGA8eDLoYdDHoYrt2omOx1okX0VmrUllaWVpZWlXlX+df51+3b5+2Z9WoUXACTsCJjh1F57NP9+50la7S1REjOsV0iukUs3//lewr2Veyb90SnYy1DjwCYa1ScVpxWnHapUuuda51rnVhYdpdVRWdy27H4Tgcl2XX2a6zXWcXFGgnJvboIToWax24gLBWrSiuKK4o7sqV2oTahNqE8HDt7uHDonPZCwfiQBwYEIBGNKIxL88Ua4o1xTaeRc9Yy+BFdMb+SZ+UPil9UtzdPcs8yzzLtm+HNEiDtPHjReeyWxAEQdCNG1RN1VT9zDPqDnWHuiMvT3Qs5lx4BMLYPykbXza+bPy9ewGfB3we8HlcHO2m3bR740bRuexWDMVQ7O2Ng3EwDs7OlkvkErlk3DjRsZhz4REIY/dBTpaT5eSEBDCDGcwrVojOYy9KoiRKamjQOvNnzVKj1Wg1evNm0bmYvnEBYcwOUqaUKWW++ipWYAVWrFsHm2ATbDLoZyQvgwwykZb7nXcUVFDBP/xBdCymT/r5i8+YA1Aj1Ug18v33qZZqqXbcONpAG2iDjhr5FFBAQdQ2b1y6VLogXZAumM3aB3VUCJlD4BEIY7+AtufWkCFUREVUtH8/BmMwBuu1sW/nTiAgoOnTtaOF6+pEJ2KOjd9xMPYLKIqiKMpnn2lPPQ0dCq/Ba/BaVZXoXE0TFwerYBWsysx8uuPTHZ/u2Lat6ETMsfEIhLFmZEw3phvTAwLoMB2mw1lZcBJOwkn9NfbRElpCS06dsnWwdbB1iIrSzqj/5hvRuZhj4QLCWAvQGvkefbRhWsO0hmmZmbgUl+JSHTb2ERDQ+fPaRUSENrX197+LjsUcAxcQxlpQf+pP/cnb2zXBNcE14cABOApH4Wjj1il6Y7VSBVVQxciRapVapVaVlopOxMTiNRDGWtAZPINn8MaNm343/W76DR9OaZRGaXv3is7VNF274kpciSuPHzd2MHYwdnj6adGJmFg8AmHsAYqNjY2NjXVxKZfL5XI5KQn2wB7Y89JLonM1ze3b2uv48drDBBkZohOxB4sLCGPCIMokk0xLlzb2ZYhOZK/GDne8htfw2iuvKJFKpBL5wQeic7EHg88DYUwg6zLrMuuy48d9zD5mH/P16/AkPAlPRkT80PDn4DADMzDDYICbcBNujhnjW+5b7lteW1t5p/JO5Z2TJ0XnYy3L4f+CMtaaaI2JcXHa1dat2qubm+hcTWM2a1Nbr7+uXfMZ7s6GCwhjDihwT+CewD3DhqEv+qLvvn04B+fgHP019tFUmkpTt2/HZEzG5Bdf5A5358IFhDEHZupu6m7qbjLZRtlG2UZlZEAhFEJhp06ic9ktEiIhMj0dMiETMidM0EYmjYvwTK+4gDCmA9rUVq9e2lVWlvb62GOic9mNgICKigwHDAcMB6KiTvmd8jvld+2a6FisabgPhDEd0N6xN3aEh4TAIBgEg3TYyIeAgMHBtmJbsa04NzfoYtDFoIt+fqJjsabhEQhjOtS3b9++fft26OCW55bnlpeWhsNwGA7TYWNfKIRC6N/+hp2xM3aOiLAstiy2LL5wQXQsdn/4MV7GdKiqqqqqqurOHZ9sn2yf7I8/1u427rX161+LznffKqACKry9aRbNollxcY+6Per2qFte3mXlsnJZ+fpr0fHYT+MpLMZ0rHExOiAgICAgIDqa9tAe2qO/Rj6ch/Nw3sMPG9CABszODswPzA/MHzlSdC7203gKizGngyjNl+ZL81eswON4HI+/+aboRHYzghGM9+7hLbyFt6ZNs+yw7LDsaBxpMUfBU1iMOSFrgbXAWnDkSNftXbd33X7jBj6Oj+PjI0bopcMdKqESKl1coBt0g27PPecDPuADNTVWq9VqtRYUiI7HNFxAGHNi1m3WbdZtRUW+5Eu+dOkS1EAN1IwerX3UxfH//VvBCtbGgjdiRNesrlldszw9rUnWJGvS0aOi47V2jv9OhDHWbKTl0nJp+ejR+Al+gp/s3q3dbdNGdC67xUAMxGzd6vW219teb7/0Ug7mYA7W14uO1dpwAWGsFZIlWZKl4GDtKj1d68945BHRuexFGZRBGamp7nXude51kyYV+hf6F/rX1orO1VrwU1iMtULanlRFRQ1rGtY0rAkPp3zKp/yKCtG57IVRGIVR0dH3Cu4V3CvIzNQKY/v2onO1FlxAGGvFTg86Pej0oLIyWkfraF1YGOVRHuXpr5EPEzERE8PDKZdyKffEif4z+8/sP9PXV3QuZ8dTWIyxHzyV+1TuU7mdOhm+NXxr+DYjA9/Bd/Adk0l0LnvRCTpBJ8rLaRgNo2FhYSX5Jfkl+ZWVonM5Gx6BMMZ+oI1Ivvnmzt07d+/cHTpUu3v4sOhc9sKBOBAHBgQYFhsWGxbv3dsnpU9KnxR3d9G5nA2PQBhjP6rxF69HqEeoR+jWrRiN0Rg9aZLoXE3z6qta535SkugkzoILCGPsPhkM0gXpgnRhzRqMwziMmzNHdKL7thAWwsKvvlImKhOVid27i47jLLiAMMbsJifLyXJyQgKchJNw8t139dLhjs/is/hsr16862/z4DUQxpjdlGnKNGVaYiJFURRFvfIKJVESJTU0iM71s76Bb+Cb3/xGdAxnwQWEMdZkarQarUZv3ky9qTf1Hj8eXoFX4BWbTXSuH0PP0rP07K9+JTqHs+ACwhhrstjY2NjYWBcX3ISbcFNUFGyCTbDJ4Li/VxbCQljIW540F8f9g2aMOSztjPY2bb7c8OWGLzccOIC7cBfueuEF0bl+ViqkQuqNG6JjOAtX0QEYY/rReJQuHaWjdFRHR+nKIINMVLerblfdLotFdBxnwQWEMfazgi4GXQy66OfXcLbhbMPZrCwYBsNgWJ8+onPdL/oT/Yn+lJ9f6l3qXepdVSU6j7PgAsIY+1HaVFWvXg0TGyY2TMzK0u4+9pjoXPYypBhSDCl//KPoHM6G10AYY/8fU3dTd1N3kwlCIARCcnO1u/orHPQcPUfPbdpkednysuXlzEzReZwNj0AYYz+Q3pbelt6OiLBdt123Xf/kEyiEQijU32OvFE/xFH/gwHc139V8VzNvnug8zsrhO0cZYy1Pm6qKi9Outm7VXt3cROeyF31Kn9Kn27bhWByLY2fM0M49qasTnctZ8RQWY62Ysaexp7Hn7NlaA+D27dpd/RUOjdmsdlO7qd2mT+fC8WC4iA7AGHvwftjL6jSchtPvvaeXvaz+7xvQHssld3In94QE9Zh6TD22eLHoWK0Nj0AYawUaO8blcrlcLt+0CcxgBvOKFaJz2YtO0Sk6VV+P5/E8np8xQ/1U/VT9dOVK0blaK/2842CM2a2HuYe5h/mhh9pvbb+1/dbt2wEBAWNjRedqmtu3tU7y2FjFT/FT/A4eFJ2oteMRCGNOSDsIysurXVy7uHZxaWm6LRxzYS7M/fZbLMdyLB8xgguHY+ERCGNOJHhn8M7gnV261I2pG1M3JjMTB+NgHBwYKDqX3QbAABhQWQn5kA/5I0dqi+Jnz4qOxf4Vj0AYcwJBY4LGBI3p3r3erd6t3i0vT7eFIwzCIOyLL7TCMWAAFw7HxiMQxnTMOMU4xTjlN78hb/Im76wsKIACKPDxEZ3LXrSEltCSU6dwGS7DZaNGaYXj6lXRudhP4050xnRIJplkGjyYjGQk4/792t327UXnshfNp/k0/8gRzxc8X/B8ISbm5LWT105eq64WnYvdH57CYkxH5PPyefl8dDQVUREVNe7tpL/CAdEQDdEffYSrcBWuGjWKC4c+8RQWYzogpUgpUsr06TAOxsG4zZvRhCY0uep0BsFsVhRFUZTXX9euHfcIXPbTuIAw5sB+6BjXaeNfY8e4dtTtO+8oqKCCf/iD6Fiseej0HQxjzgxRKpPKpLJVq+B5eB6ef+MN0YnsRUmUREkNDWAFK1hnzVJRRRU3bxadizUvHoEw5gC0xj93d4+rHlc9riYn4wf4AX4wcaLoXHabBbNg1t27WIqlWDp5ssVsMVvMn3wiOhZrGVxAGBOo38p+K/ut/NWv3ILdgt2C9+6F1+F1eH3kSNG57BYEQRB04wZVUzVVP/OMukPdoe7IyxMdi7UsLiCMCRBSEVIRUvHww3Xn6s7VnUtPh0WwCBYNGCA6V9NYrbZSW6mtNDKypK6krqTuzBnRidiDwY/xMvYABa4KXBW4qlu3ex3vdbzXMT9fr4WDTtAJOlFerl2FhXHhaJ14EZ2xB+Cp3Kdyn8rt0weDMRiDDx3CUAzFUH9/0bnstgyWwTKLpX59/fr69VFRpUqpUqpUVYmOxcTgKSzGWpAsyZIsBQdrV+np2q64jzwiOpfdhsNwGH7smMuLLi+6vDh2bHHP4p7FPb/7TnQsJhZPYTHWAqTl0nJp+ejRWsE4dky3hSMKoiBq3z6vd73e9Xo3KooLB/tnPAJhrBlJnaXOUucpU9Af/dH/ww+1uzo8YzwVUiF1wwbt/I25c7Wb3DHO/hWfic5YM5COSEekI/PmYSAGYuDGjdoZ4/rbaoS20Bbakpio9lR7qj0bGxiJROdijkl3f8EZcxyIUqlUKpW++y7+Dn+Hv0tIEJ3IXo0d42hFK1pnz1b7qf3Ufhs3is7F9IGnsBizQ2xsbGxsrItL+ZflX5Z/uXGjtrYxY4boXHb7vmOcbGQj29Sp6svqy+rLKSmiYzF94QLC2H3oYe5h7mF+6KH2Ie1D2ofs3Kn9Ao6JEZ3LbvEQD/E1NRADMRATE6N4K96Kd3a26FhMn7iAMPYT+lN/6k/e3q5GV6OrMS1NuztwoOhc9qLVtJpWX7liWGRYZFgUGWnJteRacktKROdi+sZrIIz9G7Isy7LctSscgANwoPHgpv79ReeyFyVSIiVeumTba9tr2xsRoeaquWruxYuiczHnwCMQxv6JVjgefxwICCgrS1vjePxx0bnsRTmUQznnzjUsaFjQsGDkyDMbz2w8s/Ef/xCdizkXbiRkDAACQwNDA0ONRgiBEAgpKNBt4UigBErIycFBOAgHDRzIhYO1JB6BsFZNmi3NlmYPHQprYA2s2bdP26uqXTvRuexFGZRBGamp7nXude51kyYV+hf6F/rX1orOxZwbr4GwVklaK62V1o4dC8EQDME7d2qFw8NDdC67xUAMxGzd2rZL2y5tu7z0Ug7mYA7W14uOxVoHHoGwVkUaJA2SBsXH4xScglPMZu2sboPupnJ/6Bjvp/ZT+731lug8rHXiAsJaBTlZTpaTExLADGYwr1ghOo/93wDIIBNBOIRD+IIFymRlsjL5vfdEx2Ktm+7eeTF2Pxo7xqW/Sn+V/pqUpNvCYQQjGO/dw9t4G2/HxXHhYI6ERyDMqfzQMX69/fX217dtgzRIg7Tx40XnspsJTGC6dcs21TbVNnXcuJLQktCS0EOHRMdi7J/xCIQ5hT4pfVL6pHh5tYtrF9cuLi1Nr4WD1tJaWnv9uo1sZKPhw7lwMEfGIxCma8E7g3cG7+zSpf7P9X+u//PBg9pdSRKdy26hEAqhf/sbdsbO2DkiwrLYstiy+MIF0bEY+yn8GC/TpaAxQWOCxnTvXu9W71bvlpWl3e3ZU3Quu/0efg+/Lytz6evS16VvRIR24t/XX4uOxdj94ALCdMU4xTjFOOU3v2mIbIhsiDx0CFbACljh6ys6l90ICKioyBBkCDIERUUV+xX7FftduyY6FmP24CkspgvGs8azxrPh4TSdptP01FTtbvv2onPZbR2sg3VpaW7+bv5u/hMmcMc40zNeRGcOzfhfxv8y/tczz9j62PrY+jTuiqu/wkGf0qf06bZtMBtmw+znnuPCwZwBj0CYQ9J2xZ02jU7RKTr1l7+gCU1o0t8Z4xqzWVEURVFee0275jPGmXPgEQhzKD90jMsgg7xli+4Kx/cd49SNulG3N9/UCse8edoHuXAw58IjEOYAEOW18lp57Z/+BNtgG2xbsEB0IntpI6X6esNgw2DD4Fde0U78+/BD0bkYa0n6eWfHnIrW+Ofu7hHqEeoRunUrREM0RE+aJDpX09y+jZVYiZWxsVrhaOxHYcy58RQWe6D6rey3st/KX/3K447HHY87+/djNEajHgvHXJgLc7/9FsuxHMtHjFD8FD/FjwsHa11cRAdgrUNIRUhFSMXDD9Ntuk23MzNxFa7CVUOHis5ltwEwAAZUVsJe2At7f/tb5ZJySblksYiOxZgIvAbCWpR2VKyPj+Gu4a7hbuOeTn37is5ltzAIg7AvvoBcyIXckSMVVVEV9e9/Fx2LMZF4Cou1iMDqwOrA6t698TP8DD8rLNTu6q9w0BJaQktOndIKx6BBXDgY+z88AmHNytjT2NPYMyiI2lJbapuRAQgI+MgjonPZbSWshJVHj3rEesR6xI4de/LayWsnr1VXi47FmCPhEQhrFsZ0Y7ox/be/tSXbkm3JR47otnBEQzREf/QRLIAFsCAykgsHYz+ORyDsF5E6S52lzlOmoD/6o39j34Obm+hc9qKdtJN2rlunPqE+oT7R2DFus4nOxZgj4xEIaxJZkiVZmjsX/xv/G/87OVm7q6PC0XjGuAUsYFm2TCscc+dqH+TCwdj94BEIswOiTDLJtHSpdlb30qWiE9mLkiiJkhoawApWsM6apUar0Wr05s2iczGmR1xA2E+KjY2NjY11cSmXy+VyOSkJ9sAe2PPSS6Jz2W0WzIJZd+9iKZZi6eTJFrPFbDF/8onoWIzpGRcQ9m/1MPcw9zA/9FA7j3Ye7Tw++gg34Sbc9NxzonPZLQiCIOjGDaqmaqp+5hl1h7pD3ZGXJzoWY86A10DYv+hP/ak/eXu3/7r91+2/zs7Wa+GgAiqggsuXDVcNVw1XhwzhwsFY8+OtTBgAAJhiTbGm2EcfhTbQBtpkZ+OH+CF+GBwsOpe96ASdoBPl5aSSSurQocp8Zb4yv6xMdC7GnBEXkFZO698ICKAqqqKqY8dwG27DbX36iM5lt8EwGAYrSn1ZfVl92dChZyaemXhmYkWF6FiMOTPezr2VkiRJkiRZpm/pW/r24EE4CSfhZOfOonM1zWefucx0meky89lnlZ5KT6Xnd9+JTsRYa8BrIK2MdlTskCFQDMVQfOwYrIE1sEaHhSMKoiBq3z4vi5fFyzJqVHHP4p7FXDgYe6D4KaxWQlorrZXWjh0LwRAMwTt3YjzGY7yHh+hcdkuFVEjdsEE7f4Mb/xgTiUcgTk7KlDKlzFdfRU/0RM+9e/VaOGgLbaEtiYla4Zg9W7vLhYMxkXgNxEnJyXKynJyQAItgESxasUJ0Hns1doyjFa1onT1b7af2U/tt3Cg6F2Ps//BTWE6isWPc44DHAY8D77+PC3EhLnzrLdG57PZ9x7i21ciUKepkdbI6uXGvLcaYI+E1EJ3rk9InpU+Ku7tnmWeZZ9n27ZAGaZA2frzoXHaLh3iIr6mBGIiBmJgYxVvxVryzs0XHYoz9OC4gOqUVDi8vz0TPRM/Exj2dRowQnctetJpW0+orVwyLDIsMiyIjLbmWXEtuSYnoXIyxn8drIDoTvDN4Z/DOLl3qE+sT6xMPHtTuSpLoXPaiREqkxEuXbHtte217IyLUXDVXzb14UXQuxtj946ewdELbo+o//qPukbpH6h7JzdXu6rBw5FAO5Zw717C3YW/D3rCw0+bT5tNmLhyM6RFPYTk403rTetP6J5+0dbB1sHXIyoL34D14z9dXdC57UQIlUEJODq7AFbgiOlpRFVVRb94UnYsx1nRcQByUNFIaKY0MCdEWxdPTMQRDMKRjR9G57EUZlEEZqanude517nWTJhX6F/oX+tfWis7FGPvleA3EwQSWB5YHlo8ZA92gG3TbvRuDMAiDPD1F57JbDMRAzNatbbu07dK2y0sv5WAO5mB9vehYjLHmwyMQByEfk4/Jx6ZOpcE0mAZ/8AGa0IQmV90V+MaOca3xT4d9KIyx+8YFRDDpiHREOjJvHqZgCqasXg0KKKCgfv5cZJBBJoJwCIfwBQuUycpkZfJ774mOxRhrebp7h+scEOUb8g35RmIiDINhMGzhQtGJ7GYEIxjv3cNbeAtvTZtmmWyZbJn88ceiYzHGHhwuIA9IOIVTOLm6Vv+5+s/Vf960SSscL7wgOpfdTGAC061btqm2qbap48aVhJaEloQeOiQ6FmPsweM+kBamnb/Rpk31N9XfVH+Tmoq7cBfu0l/hoLW0ltZev24jG9lo+HAuHIwx/cy168zTHZ/u+HTHtm3v/O7O7+787vBh+Aw+g89CQkTnsttCWAgLv/rKMNAw0DAwIuKU3ym/U37/8z+iYzHGxOMC0iIQ5Xw5X85PTYU5MAfmjBkjOlHTnD1re8j2kO2hkSNL8kvyS/IrK0UnYow5Di4gzcw4xTjFOGXiRPqCvqAvdu0SncduBARUVGQ4YDhgOBAVpY04rl0THYsx5nh4DaSZUSfqRJ3+8z9F57DbOlgH69LS3FLdUt1ShwzhwsEY+zlcQJqJMd2YbkwPCIBcyIXcfv1E57lvH8FH8NGWLV4DvAZ4DYiJ4a1GGGP3ix/jbSbUg3pQj759Reewj9ms9FJ6Kb1ee+3774JEJ2KM6QePQJoJlVIplXboIDrHj/q+Y1w7Y/yNNxRFURRl3rzv03PhYIzZjQtIMyEjGcnoeGsGdIpO0an6ejyP5/H8jBmWSkulpXL1atG5GGP65yI6gLN4rPyx8sfK6+qomqqpuvGdvUDfd4wbrAarwRoTY1lvWW9Zv2eP6FiMMefBI5BmUpxWnFacdukSLIElsOTMGVE5qJAKqfDaNfqKvqKvfvtby8uWly0vZ2aK/vkwxpwPF5BmRlfoCl1ZvlzMV7dawRd8wXfoUPWQekg9VFgo+ufBGHNe3EjYIhCly9Jl6fK+fRiFURgVHd1iXyoMwiDsiy9wOS7H5RERljaWNpY2FRWifwKMMefHI5AWQeT5pOeTnk8+/zy8C+/Cu7m5zf4lvv+8hgWGBYYFYWFcOBhjDxovoreQitqK2orae/d8Pvf53Ofzjz4CBAR0c6NiKqZiWcbNuBk3u7nd7+fT/r/aWqzHeqxftQpWwkpY+cILloWWhZaFNTWiv1/GWOvDU1gPWGBoYGhgqI+Py1cuX7l8NWEC7aW9tHfIELpO1+m6v3/jf4cP48P4cEUFvUPv0DvHjtF39B19l5LCmxoyxhzF/wKeYeMy/zPC/wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNy0xMi0xNVQxNTo1NzoyNyswODowMKIRvi8AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMTItMTVUMTU6NTc6MjcrMDg6MDDTTAaTAAAATXRFWHRzdmc6YmFzZS11cmkAZmlsZTovLy9ob21lL2FkbWluL2ljb24tZm9udC90bXAvaWNvbl9jazFiemEwemo5ampkY3hyL3JpZ2h0LnN2Z7O3J80AAAAASUVORK5CYII=");
+ background-size: contain;
+ }
+
+ .icon-refresh:before {
+ content: " ";
+ display: block;
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ margin: auto;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 9999;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADIEAYAAAD9yHLdAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAMQpJREFUeNrt3XlcVHX3B/Bz7rCISi6IC+ijkpZpIswMyBLgluVuKm4pqWmEuG/hUpr5uFYoiuaSFrklZvroo+jPFRURZgYVxZ1K3HIXUBSGe35/XC9PWpYL8J2B8/6H1wwGn3sb5sz93u/3fAEYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOM/QUUHYCx59F0ddPVTVdXq5YXkxeTF1O3Ll7H63jdzY3eoDfojTp1UIta1FatCm/D2/C2kxPchttwu0oVyIRMyKxShVpSS2pZuTIkQzIklyuHv+Av+IudHURBFERJkvJbKlQo+IWhEAqhsgz2YA/2d+8WPP/oMXWkjtTx4UMMwAAMuH4d2kE7aHf9OoVQCIX8/jvuxJ2489o1WkJLaMmlS+AHfuB37hwmYAImnDtnNBlNRlNGhvJDiUSfX/ZygiiIgqhMmayJWROzJgYF4Xbcjtv9/akX9aJerq7QE3pCTwcHiIEYiMnMxNpYG2ufOYNTcApOOXDAcNZw1nA2KUn0cTwrLiBMKO+z3me9z9asKa+V18prtVr5tHxaPv3mmzgaR+Nod3cYCANhYMOGyr9+9VXla9myonMXFoqmaIp+8ADDMRzDz56FTtAJOh07RgmUQAkGA17Da3jNYMjrldcrr1dKyrGxx8YeG3vvnujc7I8QdbG6WF3skCFUjapRtYkTcSSOxJHVqr3Yz0tNVb6OH280Go1G43//K/oIn3rkogOwkgzR09bT1tPW3V3jrHHWOLdoIRtkg2zw84PTcBpO+/jgGByDY2rWFJ3U0tEiWkSL8vNxDa7BNSdOkAM5kMOuXTgYB+PgnTvz1uStyVuzbx8XmOKh0+q0Oq2tLW2hLbRl9WrsgB2wQ7duhf17aAWtoBWzZpncTe4m94gI0cf9JC4g7KU0oSbUhCpW1FTTVNNUa98eTGACU9u2uAf34J6WLWEuzIW5VauKzlni6UEP+txcZYju0CGoDtWh+pYt+QH5AfkB69cfxaN4FH/9VXTMkkJ3UXdRd3HBAuWKMTy8yH8hAQENH64MeUZFiT5+FRcQ9kwaN27cuHHjSpVsbW1tbW2DgxEREbt2Vb7bvLny1dZWdE721+gz+ow+S06W+kn9pH7r1+fdyruVd2vdOi4sz0f7rvZd7bs+Pvgv/Bf+KyEBjGAEIxb5+yjNp/k0PytLE6mJ1ES+9lpybHJscuzVq6LPBxcQ9hjlJqCNTbY+W5+tb98eFsEiWNS3LxyDY3CsXTvlsb296JzsJT2aHEBdqAt12bULMzADM5YsgQ/hQ/hw0yblk25enuiYlka7XLtcu3zTJozGaIzu2LG4fz85kzM5jxxpijPFmeLmzhV9PriAlHKefp5+nn4uLtgQG2LDQYOwDJbBMh99BIfgEBxycRGdjxUvOkSH6NDVq7gEl+CSFSvMx83Hzcejo49+c/Sbo99cuiQ6nyjKPY8qVchABjJcuYJe6IVeNjbFHqQNtIE2W7YYpxmnGad16CD6vEiiA7DipfwhNG6sS9Wl6lJ/+EF6KD2UHv76K6ZgCqZMmcKFo3RDX/RF3+rVYQWsgBXjx9uQDdlQero2XZuuTV+2zOui10Wvi6+9JjpncaMP6AP6ICBAWOFQc0RQBEXUqSP6fKj4CqSEKxizvY7X8fqkSaADHejati2usVtWwqhDX+2pPbXfsIFqU22qPW1aSl5KXkre0aOi4xUV3QPdA92Df/8b/MEf/CdMEJvmwgVlem/t2qLPC1+BlDAe8R7xHvENGypXGuvWFdzsAwCAdu24cLCXshgWw2JJUqetSv2l/lL/lBT19abfot+i3+LmJjpmYaMbdINu1K0rOgf4gi/4irsCehIXECvX5OMmHzf52NVVO087TzsvJkZzSnNKcyo1FRAQMDiYCwYrUurr69HrTa4iV5GrnDihu6O7o7sze7Y6e090zJeFC3ABLnjRhYGFiICALGe2IxcQK+OT4ZPhk+HgoNPpdDrdp5/agA3YwOnTGIMxGNO3r/oJUXROVjopK+rLlIGW0BJajh1rF2gXaBd4+rRut263bndIyKN/ZX0faHbADthRrpzoGCCDDDIXEPacPL/0/NLzy8DAXKdcp1ynlBTl2alT1Z5OovMx9pcSIRESnZ1hLIyFsd9/rxunG6cbt2+fOtQqOt4zQ0BAC3jj9gIvEHgT/0lcQCyUcqVRubJypfHdd9IZ6Yx0Zu9epWnf66+LzsfYC9kFu2BXQIDmjOaM5ozJpCMd6WjKFLU1iOh4Fo+vQNjfUWdN5Z7OPZ172mBQnv3gA76XwUoUdUGqHvSgnzwZpsJUmJqQoP9C/4X+C/6A9DTkTu7kzlcg7JHg4ODg4GCNRv0kpvwhHTiAn+An+IkFzPpgrDhMhskwWa+nS3SJLhmNWq1Wq9V+9JHoWJYGwzAMwzQa5ZH4e53CA5RW+vv6+/r7tWqlD0oflD5o9271k9jjLxDGShl1nxZERFy8WHtVe1V7deNGtWmn6HiWol5Uvah6UeKHsizmUqi00J3SndKd6tRJNskm2bR8OY7H8Ti+cmXRuUobSqIkSsrJUVYW37sHw2E4DH+Gwn0QDsLBihV5SLF4YDtsh+06dbLxt/G38U9OVu6VdOmi9OpS980oerSX9tJeRGyGzbCZ6LMCUPZh2YdlH6pDWQ8fisrBfwDFRNtH20fbZ8IELItlsey0afwG9ILCIAzCHj6kntSTep49C6thNaw+fRpDMARDTp/GbtgNu506BTNgBsy4cEFpQXHrltnb7G32vnXLYaLDRIeJt24l1kqslVgrJ+d5f/3jzSadneVj8jH5WNWqmmhNtCbaxYXqUT2q5+xMy2k5La9ZU9mBsHFj/Ba/xW8bNVKuNF9/HQxgAIOdnejTaXW8wAu87t3DbMzG7IEDDSsNKw0r164t6l+rzdJmabNMJqWAeHqKPg1mg9lgNlSqpHRTvnNHVA5+Aysij88qWbhQmQY4cKDoXJaODtABOpCeDtfgGlw7cADfw/fwvf37lfN34ICbm5ubm9vZs7GxsbGxsfn5ovM+L/V1kT83f27+3Pr1bZbYLLFZ4u5OJ+kknQwMpP20n/a3aMGz7Z4RAQF99ZVyRTJunPKkLBf2r9Fu0W7RbklJwck4GSd7eIg+bOW4nZ2V475xQ1QMHsIqZMoWra+8kt8zv2d+z9hY5dnWrUXnshjhEA7h2dlwAS7Aha1boTW0htYbN5pjzDHmmPj4ow5HHY46PL3rq9IDSPRBvLiCNumBEAiBaWnKs+rXtWuhLJSFsn/oknwOz+G5Fi0wHuMxvkUL6A29oXeHDkpBrVJF9PEIh4CAo0frknRJuqS6dW1r2NawrdGnz4teYVoLZYtjSVI2cBOXgwtIIVH/4M3VzdXN1bdsUXo7iL/UFev+faX99O7d0AJaQIvY2JwbOTdybmzYkDYlbUralOxsmAJTYIronJYnJSElISXh8mXl0cqV0AAaQIOVK9VZe+nn08+nn/f1LWhZQ0BAvXuX2sISBmEQ1qVLHuVRHu3Z4z7HfY77nI4dlS1+r1172R+P+ZiP+Tzk/CQuIC9JWejXoIHyyXrnTmgGzaCZq6voXMVN3fEOHdERHRcsKN+8fPPyzdet24f7cB8+eADTYBpME53S+j0+dHfggPpVmZUzblyF7yt8X+H7Nm0gEiIhMjQUVsJKWPnOO6XmnhsCAjZtalvHto5tnQMHlL/PNm2UK9fz50XHKyz2SfZJ9knip/GW/BdUEfFM8EzwTKhXT1otrZZW79tXavbReLT3tjLdctMmnIpTceqSJYb2hvaG9jt3io7HHlfwOh0qDZWGDh2q3IT+8MPS0gKHIimSIn//HbpBN+jWurXpmuma6dqxY8/7c3QjdSN1I48ehXiIh3h3d9HHJblJbpJbjRqit7blAvKcvDt4d/DuULeueb15vXn9vn3oh37oV6uW6FxFpWC6axZmYdaCBTZbbbbabP3qq8O9D/c+3Pv330XnY89H2RDKySn/Qv6F/AsffYRDcAgOGTWqpA99USIlUuLNm+iDPujTurVyRWJ65rsHllZAZHvZXrZ3dX18qLP48RDWM1IX/pkTzAnmhF27SmrhoGRKpmSzGebDfJi/Zk2+lC/lS599drTi0YpHK/76q+h87OUk10yumVzz5k3l0YwZDdc1XNdw3fz5DjkOOQ454eFUn+pT/YkTcSgOxaGOjqLzFhalcDg5KY9271b+ntu2NZQ1lDWUVffL+RvxEA/xljMEKLvL7rI7IiRAAvxz+iIjfAzN0qn7bdBb9Ba9tWdPiWsxogMd6IigA3SADuvWaS5rLmsuN2pkGm4abhoeEqLMM+fCUVKldU/rntY9O9v4gfED4wezZtEYGkNjGjSAYAiG4KVLCz5QlCgVKtBaWktrt29X7pE0b/6P/0kgBEIgkejkKvvR9qPtR4svaMIDWCp1Ixw7WztbO9uEBOUSv0ED0bkKjT/4g/+5c8rK6o8+Ui7p9+wRHYtZFrXtunRdui5dX7oUp+N0nO7nJzpXYVGHaKVvpW+lb7t2NXxk+Mjw0bZtT/47pdCo904aNxadW5l1V7u2Mi38wgVRMfgK5AnqSmPb8bbjbcevW1dSCof6SZKaUTNqNnu27VjbsbZj3d25cLC/cyTwSOCRwLQ0U1dTV1PXgAByJmdyHjlS+e79+6LzvSz0Rm/0dnAgIxnJuHGjsrPne++p31c6SAQEwAgYASMsYEfCR+Tecm+5N1+BWBztae1p7emoKOyNvbH30KGi8xQOkwnLYTksN3CgId4Qb4hXN6Ri7MUon8hffVV5tHSp8vUZhoIsXMGQ3VbYCluPH7eYledPUFqZ1K0reoiZC8gjavtotQuo6DwvTL2nYQADGL7+uryxvLG8MSJCWY9R0saymWVA1LvoXfQuI0bIF+WL8sXZs5UmlZazb0VJo3HRuGhc3NySNidtTtr8yy+icpT6ISx9qj5VnxoUpBSOBQtE53lRdJgO0+HMTPkr+Sv5q27dlLHRMWO4cLCiR2S4bLhsuBwZSV/T1/R1y5Z0iA7RIXHrE1jxKLUFRNlfoE4dpVvr+vXKs+L767+Y1FTNVc1VzVUvrxTHFMcUxw0bRCdipVPKmJQxKWPi45V7bTodTaAJNOEZpsmy55IXlBeUF1T4TSOfV6krIGovIRu9jd5G/8MPVruAahksg2U//qg88PFR5vefOSM6FmMA/+vl9SD/Qf6D/ObN6Uf6kX785hvRuUoKzWDNYM1g8QWk1I1Rnrc/b3/e/pNPlGaHb70lOs9z2wSbYFN0tLGmsaax5rBhypPiX0iM/RVlnUlurvIoLEz3ve573fe//gpREAVRM2eKzmet8lvlt8pvJX47g1JzBaIP1AfqAz09ldlIkyeLzvO8aAWtoBWzZimFY8gQ5VkuHMy6FCxYnEbTaFp4OIRCKITy6/h52bjauNq4ij9vJb6AKF1K7e3pHt2je99/by07wdEiWkSL8vPhM/gMPgsLM7mb3E3uERGiczFWGExtTG1MbRYuhMWwGBb37as8m5cnOpe1eOj90PuhNxeQIlehZ4WeFXqql8oWsIL0n6ifyE7BKTj1wQfGTsZOxk48dsxKJmUh6+rVFEIhFNKjR8EHJ/a3bNfYrrFdwwWkyHh+6fml55eBgbARNsJG9V6B5aOVtJJWDhtmCjGFmEJWrRKdh7HioPRe+/lnyIRMyBw9WnQeS2e7yXaT7SYuIIVOnWUl1ZfqS/WjopRLZPEbr/wT8iRP8pwyxRRvijfFR0eLzsOYCKZWplamVvPm0WbaTJvV6fXsSXmd8jrldRJ/pWbxb6zPKz09PT09/aOPYCpMhalNmojO848ezaoyLTMtMy37/HPRcRizBPI5+Zx8bvBg8AEf8Ll+XXQeS1PmtzK/lfmNr0AKjU+GT4ZPRuXKysYxX3whOs8/WgSLYNGGDY9Px2WMAahNHK9fV3b6DA8XncfSZEVkRWRFcAEpNHmYh3k4derjG8dYHppBM2jGmTOaSppKmkr9+yvPin8hMGaJlJY8sbE8pPW4SmMqjak0hoewXpq+j76Pvs+bb5ILuZBLaKjoPE8VDuEQnp0tl5HLyGXeey+pflL9pPqZmaJjMWYNzKvMq8yrwsOVfTBu3BCdR7RsXbYuWye+gFj9SnQ6SSfp5FdfWXr3TzKTmcwffqjuryA6D2N/5BXsFewVXL268qh6dfm8fF4+b2+PU3EqTnV0pMk0mSaXL6+8gf9Fz7gFsAAW2NjQEBpCQ/6wFe7H8DF8fOcOfoPf4DfPsKMfAgLev4+f4+f4+cOHT36belJP6rluHfwIP8KPgweLPm/F7lG3beMS4xLjEvHrZqy2nbtOq9PqtE2bKi+4xETReZ6G3qF36J3ISNN003TT9FGjROdhpZPSPLRiRRudjc5GFxKi/N107qxcGXt5QTREQ3T58qJzsn+gBz3oc3ONi42LjYvt7UXHsdohLNpKW2nr+PGiczzVRJgIE9PSMqtnVs+sbsE5WYmm3abdpt02eLDmoOag5uD580rhmDdP+W7z5lw4rExTaApN1d5i4lnskM/TFNzz+Iw+o886dhSd508erSSXt8vb5e0DB55bfG7xucV/vhRnrCjpZutm62ZHR8MkmASTSuFQT0mlAQ1oxA9dqazuCoReo9fotYgIMIIRjOL3BP6TztAZOkdFpSxOWZyy+NAh0XFY6aIM7Q4bVmrvEZRwVJfqUl3LuQKxmgKi36Lfot/i5kaTaBJN6tFDdJ4/GQtjYeyvv+bszdmbs/fTT0XHYaWLUjgqVFCGOHhBaollYUNYVlNA5GPyMfnYuHEWO9tqNsyG2aGhyv4H2dmi47DShcpTeSrfpw8kQRIkVawoOg8rIjLIIPMQ1jPzPut91vvsK6/gT/gT/qS2fbY0O3YoC5527BCdhJVO2AybYbOWLUXnYEWMgIC4gDwzcw9zD3OPnj2VR2XLis5T4LGNcHiWFRNMBzrQubmJjsGKFgZgAAbwENYzwxbYAluoLT8syFW4ClfXrFH2MzCZRMdhpRu1ptbU+g8L+FgJxlcg/8gj3iPeI75hQ9gDe2CPj4/oPAXCIAzCHj7UJGuSNcl8s5xZBpyEk3DS7duic7Ai1hyaQ3O+AvlHmhRNiibFAq88FsEiWLR8edLmpM1Jm3/5RXQcxgAAoA/0gT7nzomOwYrYHtgDe65eFR1DZXEFRJmOaGurbLBkQTfNH93zkDZJm6RNc+eKjsPYH+FwHI7DeRJHiXcQDsJBy+mlZ3EFRF4vr5fXv/sujsSROLJaNdF5CiyGxbB427bkmsk1k2ueOSM6DmN/ZH/C/oT9idhYZT+cmzdF52FFQ+or9ZX6xsaKzlGQR3SAPwXqJnWTullgi5JdsAt2qT2EGLMsB28evHnwZlYWtISW0HLyZNF5WFHYuDE5Njk2OfbIEdFJVBZWQBBhNIyG0W3aiE6iomk0jaadOGGsaKxorLhzp+g8jP0dU7wp3hQfHU0hFEIhP/wgOg97Sf7gD/7nzklukpvkFhYmOs6TLKaA6AP1gfpADw/4Gr6Gr11dRedRKbNboqOVR8+wnwFjFsA03DTcNLxfP+XRzJm0iBbRIvEbELFn1BJaQsv9+8255lxzbrNmypWH5dw8V1lMAVFaMLRtKzrG4/LylJWfljPmyNizk2VlndL48VKUFCVFeXjQJtpEm9asocN0mA7zjpjCPdogSpmeq+5r9P77xtnG2cbZzZod/eboN0e/uXRJdMynsZhuttqftD9pfzp4EKfjdJzu5yc6D0RCJETGxRkDjYHGQMsZUmOsMDRc13Bdw3V2duViy8WWi23Y0DzLPMs8q1YtTT9NP00/Z2c5W86Ws//ccw5H42gcXb48mMEM5r/YmTAKoiCqXDlaQStohZ3d8+bCnbgTd5Ypo3S1dnB40eOjZbSMlt27Bz2hJ/QshHUTs2E2zM7MxLfxbXz7+a/kcASOwBFEspPsJDtdvy6Nk8ZJ465exbbYFtsmJSmTc6xv8oPwAuKT4ZPhk1G5cu6V3Cu5V65dwzAMwzCNRnQumANzYM4HHxhbGFsYW8TEiI7DGGOWRnhXW/N483jz+Nat8SSexJPiCwdFUzRFP3hg42TjZOO0caPoPIwxZqmE3wMhLWlJazmtSjAcwzE8Li6pflL9pPo8RswYY08jvIDAG/AGvOHtLTqGSpm2+3//JzoHY4xZOmEFJIiCKIhsbJQuoh4eok+Eit6it+itPXtE52CMMUsn7B7I/e73u9/v/uabmI7pmP7isy0KzQgYASOuXUtxTHFMcTx1SnQcxhizdMKuQPL75PfJ7+PlJfoEqCiLsihr9+5Hj3jBIGOM/QNx90BOwAk4odOJPgEFJ2KptFRaunev6ByMMWYthBUQvIk38aZeL/oEqEgiiaTkZNE5GGPMWggrIDSLZtGs+vVFn4DH9zbnex+MMfasir2AqCvPsSk2xaavvCL6BMBxOA7H09OVnkH374uOwxhj1qLYC4j5ffP75vdr1xZ94AUOwkE4ePy46BiMMWZtir2AyF3lrnLXOnVEH7iKfMmXfE+cEJ2DMcasTfHfA2kEjaDRv/4l+sALTsCv0q/Sr6dPi87BGGPWptgLCLqjO7pb0BXISlpJKy1voxbGGLN0xX8F0gbaQBvLKSDSIGmQNOj6ddE5GGPM2hR/ASEgoBo1RB+4StnA6sYN0TkYY8zaFHsBoZk0k2ZWqiT6wFXZKdkp2SnXronOwRhj1qb4r0DKQBkoU6GC6ANX3L2b1j2te1r3QtjykjHGSpniLyB2YAd2llJAeOEgY4y9qOKfhbUcl+Nye3vRBw6+4Au+3HWXMcZeVLEVkODg4ODgYI0GjGAEI6LoA+cCwhhjL6fYCkhKQEpASoCNsA2sGGOMFa5iKyB21e2q21XnT/yMMVZSFFsBUWY75eWBDnSgs4BCcggOwSELGEpjjDErVcw30YnAG7zBW/y0WepDfahP5cqiczDGmLUq/mm8RjCCMSdH9IFjOIZjeJky/k7+Tv5Ojo6i8zDGmLUp/gISBEEQdOeO6ANXPajzoM6DOlWris7BGGPWpvgLyByYA3Nu3RJ94CpyJmdydnYWnYMxxqxN8ffC2k7bafvNm6IPvOAE+Ev+kj9fgTDG2PMq/pXoC3EhLrSc5oWyXtbL+po1RedgjDFrU/xDWJWhMlS+cEH0gauwMTbGxg0bis7BGGPWpvgLyApYASsyMkQfuIrKUlkq26iR6ByMMWZtir+AAACABV2BfIqf4qdcQBhj7HkVewGR58vz5fmnT4s+8AKJkAiJzs4e8R7xHvE8G4sxxp5VsReQepH1IutF/vILRVM0RT94IPoEFJyIddI6aV3jxqJzMMaYtdAU9y9MS0tLS0sjcnF0cXRx7N4dfoPf4Ldq1USfCGm7tF3afvbsZfNl82Xz/v2i8zDGmKUTdA8EAKpAFahiMok+ASoaQSNoRIsWonMwxpi1EFZA6Cf6iX46dEj0CSjI05k6U2c/P58MnwyfDAcH0XkYY8zSCdvgCQEBwXIKiNpcMdc31zfX19dXeXb3btG5GGPMUgm7AjGajCaj6cQJ5dHdu6JPRIEBMAAGNG8uOgZjjFk6cfdAAABAlpWvhw+LPhEFMiADMt55R3QMxhizdIILCAAYwAAGCxrKmopTcaqXl8cwj2Eew+rXF52HMcYslfgCchfuwt2DB0XHeJLGXeOuce/RQ3QOxhizVMILyN2YuzF3Y+Lj6TAdpsOZmaLzFFgIC2Hh+++LjsEYY5aq2BcSPunWtlvbbm3Lz3eRXCQXydMTzsAZOGMBvakQELBKlZpv1Xyr5lubNl1Ou5x2Oe3qVdGxGGPMUgi/AinQGlpD640bRcd4krxUXiov7d1bdA7GGLM0llNAhsAQGLJ1K+hBD/rcXNFxVHScjtPxDz90n+M+x31OuXKi8zDGmKUQPoSlunLlypUrVx4+dIl0iXSJ9PeH7bAdtterJzoXxmEcxjk4SD2lnlLPS5eurLqy6sqq5GTRuRhjRcfrotdFr4uvvVa9SvUq1av4+ro2c23m2qxBg2oPqz2s9tDRMcAnwCfA5/ff1d5+ovOKImwl+tPgcByOwzduJIkkkt59V3SeglzZmI3ZI0Yoj775RvmqrmNhjFmj4ODg4OBgjSb9fPr59PP9+9NMmkkzx46VO8md5E6vvaZ0zAAgICAAkEACCQDS09PT09Pv3tVO107XTl+7Vr4qX5WvfvXVkagjUUeizp4VfVzFBUUHeJIyVFS1qu0523O25zIylHUidnaic6kohEIopEsX03DTcNPwn38WnYcx9vx0Wp1Wp61ShSIogiLWr8dZOAtnBQW93E/Ny4NBMAgGzZgBS2AJLJk2Tem4kZcn+niLisUVEJUuRZeiS1m7FgbCQBhoOesxaBftol0HD5oqmiqaKr71lug8jLFnpwxNOTnJHeWOcscDB5TZlg0aFPovagNtoM2WLXer3q16t2q3bueGnRt2btjDh6KPv7BZzk30J3mAB3ioQ0WWA1tiS2zp76+7qLuou9i2reg8jLF/pg5VyWlympy2YUORFQ7VNtgG29q3f6XtK21faTt3rujjLyoWW0CMaEQj7tsHARAAASdPis7zJEqlVEqdPVt9YYrOwxh7uvT26e3T248ZA+NhPIwPDCyu34uzcTbODg319PP08/TT60Wfh8Jm8W98NSrWqFijoq0t3sf7eN+Cbqrvxt24u2rVW7du3bp169IlZRaZ0Sg6F2Psf7wWeC3wWtCokTIpZ80a5Z6qTfFNHroCV+AKIprRjGZJUt4nNm8WfV4Ki8VegajyLuVdyrv0/feUREmUlJMjOs+fzIW5MHfqVH8nfyd/J0dH0XEYYwBBFERBZGMj15HryHW++w4WwSJYZG8vNlXJu2dq8QUkNTU1NTX19m2IhEiIXLNGdJ4n4UgciSOrVXtw6cGlB5ciIkTnYYwBZK/OXp29etgwmAyTYbL4oSNKpmRKrl1bdI7CZvEFRCVfkC/IF2bOVP5HmM2i8/yJP/iD/9ix+kB9oD7Q01N0HMZKoybUhJpQnTqwH/bD/qlTRecpkAzJkIwWO+v1RVlNAVEX6OAMnIEzVq4Uneev2dqSjnSk++67husarmu4znLWrzBW8iHa7LfZb7N/0SLlDdtyWg/halyNqy9eFJ2jsFlNASmwATbAhmnTlAcWuEAnHuIh3t29TL0y9crU+/RT0XEYKw309fX19fXDw2EkjISRljPZpkAf6AN9jh0THaOwWV0BMRqNRqPx/HnqRb2o1w8/iM7zVB7gAR4REV51vep61fXyEh2HsZJI30ffR9/nzTflU/Ip+dTs2aLzPA2GYiiG7tghOkdhs7oCorLZZ7PPZp/lXomgF3qhl41N/on8E/knfvjB+6z3We+zr7wiOhdjJYHaHZvSKI3SYmPRG73R28FBdK4/CYMwCHv40DzPPM88b8MG0XEKm9UWkKTNSZuTNv/yC8RCLMSuWCE6z9NgAAZgwOuvmx3NjmbHmJhHz5a4m2mMFSebXja9bHotXVrkK8pfEt2je3Rv3bojgUcCjwRevy46T2Gz2gKiyvsp76e8nz79FIbBMBh2+7boPE+D7bAdtuvUSZukTdIm8b0Rxl6EvpK+kr7SuHHYCTthp169ROd5GlpEi2hRfj4NoAE0YMYM0XmKSon5JKzT6XQ6XViY8mjhQtF5nioUQiFUlukG3aAbnTqZJpgmmCZs2SI6FmOWTDtBO0E74Z13oDN0hs7//S+GYRiGWXALIQICWrZM6cY7aJDoOEWlxBQQhSRpN2k3aTclJuJUnIpTLf3m9d27+Aa+gW+89ZZhpWGlYeXx46ITMWZJ1FYksqPsKDvu3w9REAVRlSqJzvU0lEiJlHjzJjbFpti0QQOlgNy4ITpXUbH6IazHyTJ8Dp/D52Fh6iWk6ER/r0IFeofeoXd27dJ/of9C/8Xrr4tOxJglaPJxk4+bfOzqKq+QV8grtm619MJRYCtsha3jx5f0wqGy3EvAF3TlkRquNVxruDo74xk8g2e8vUXneqpESITEcuWoP/Wn/u3aVS1btWzVsuvX/2743fC7IStLdDzGipNPhk+GT0blyuAADuCwZ4+yolz81tb/hCbQBJqQkGB6z/Se6b2hQx89W+K3ui1xBUTlkumS6ZKZkAB+4Ad+ISFwES7CRcttdog7cSfurFRJ6i/1l/q/+67LWZezLmfXrVPK4f37ovMxVpSUHQIrVJCvydfka9u2QQzEQIzltwRSm7xiCIZgSLt2yt9ryZtt9TQlbAjrf5RLyLt35SA5SA4KCVFvXovO9Y/+Df+GfzdsqExP3L7dI94j3iPe2Vl0LMaKglo4oAW0gBZxcbAH9sAeHx/RuZ7ZQTgIBz/7TFngfOqU6DjFrcQWEFVKcEpwSvCuXeRDPuQzZ47oPM9Hq5UeSA+kBwcOeHfw7uDdoW5d0YkYKwwFhQMAALZvt7bCoW5t/er8V+e/Oj8yUnQeUUrYLKynU/cHyI7LjsuOi4+HSTAJJvn6is71rOgQHaJDV69KraRWUqu2bQ3xhnhDfEqK6FyMPQ9lun2NGsojdfq6Vis61zPzBm/wvnPHvNC80LzQ0/MoHsWj+OuvomOJUuKvQFT7cB/uQ7MZ8zEf8/v0ocN0mA5nZorO9azQF33Rt3p16kf9qF98vO6O7o7uzttvi87F2LPwzPLM8sx64w3lnuShQ8qzVlQ4HsEszMKssLDSXjhUJfYm+tNcXn159eXVt2/XqFejXo16GRl4GA/j4S5dROd6ZsmQDMl2dpAGaZDWo0eNcjXK1Sh3+/aV3678duW35GTR8Rj7Ix3pSEfNmuFaXItrd+yA9bAe1levLjrXi1m0yLjduN24fdYs0UksRakZwnoa5ZJaXbmurmS3VqtX53yS80nOJ6Ghad3Tuqd1z84WnYiVTrpVulW6VaNGKV2zZ81Sm4uKzvW81Om5D/If5D/Ib95c+bvKzRWdy1KUmiGspylvKG8obxg2DN6Bd+Cd7dtF53k5vXs72DjYONgcPlwwZMBYMVA2UCtfXpeiS9GlrF0LX8PX8PVXX1lr4QBf8AXfy5dxOk7H6d26ceH4a6W+gKj3RjT9Nf01/bt3p320j/ZZcUuRR9OApVgpVopNStJqtVqt9qOPlG9yF2BWuLTvat/Vvuvj44AO6IAmEwyEgTCwRw/RuV6Uuq4DEiABErp0UabnXrkiOpel4jeUJ6gtFGwCbAJsAg4fVj5JubqKzlU4DhzAztgZOw8caPjU8Knh09OnRSdi1qVgNmNMdkx2zOjRSouRL75QvmtrKzrfC3u0TkzuJfeSewUHpzimOKY4lrz9OwobF5CnUHcSlCvLleXKe/cqz5YtKzrXyyr4hPVoAZQ6jz02NjY2NtbSe4cxUTxDPUM9Q319sQN2wA4LF+JknIyTPTxE5yoseAWv4JVRowyXDZcNl0vvuo7nxQXkH+hO6U7pTnXqBO/D+/B+bKzyrBV/0noC7aW9tDclheIojuLGjlUXXorOxcTyuuh10euik1N+bn5ufu6sWTgTZ+LMAQPACEYwlqCh0P7QH/rPmGEcYhxiHDJhgug41qbkvBCKmH6Yfph+WNeudJAO0sE1a5RnS04hedyOHVgOy2G5iAhesFg6KLMRy5ZVNmYbOpRepVfp1XHjcDgOx+GVK4vOV9ioA3WgDgsWmKaYppimqM0P2fPiAvKclNlNXbpIzaRmUrO1a5VnS2AhUXuHLYbFsHjtWnm+PF+eP3lyil+KX4rfuXOi47GXUy+qXlS9KHv7ivMrzq84f9Ag+YR8Qj4xcaK6YFV0vqJCsRRLsd9+a3IzuZnc1I2eSn7X3KJS6mdhPa/Hb6699x6EQRiEPXwoOlehWwyLYbH06PXRu7d0XDouHT99Wrtau1q7+v/+zzPdM90zvUMH5fslaEijhFJ7T2l3andqdw4fXsGpglMFp/Pn6RV6hV6ZP7+kFw6IhViIXbJEKRzqrEQuHC+L//BfknLp37kz6EEP+h9/BAMYwGBnJzpXcaHP6XP6/MgRuA/34f68eZlXM69mXl2z5tywc8PODSuBhdVKKAWjaVNl5feAARAMwRDcp4/yXeufDPLMtsE22DZ3rrGqsaqx6qhRypNcOAoLF5BCohSSdu0gHMIhfO1aiIZoiC5fXnSuYjcMhsGw27fpOl2n6z//jANxIA5cu9ZtkNsgt0G7d/Nsr8Klv6+/r79fq5ZskA2yoUcPvIE38Eb//gXbApQ2j4ZeqQE1oAaffGIKNAWaAr/8UnSskooLSCHzCvYK9gr28MgfnD84f/DmzTgGx+CYmjVF5xKNIimSIn//Hd3QDd3WrwdXcAXX9etzYnNic2ITEnil79/TVtVW1VZ1d1dWRnfsCCfhJJzs3BmyIAuytNoSNzvqhdy/L++V98p7+/bldRzFo5S/4IqOp5+nn6efi4s0QZogTdi0CSbDZJis14vOZZnu36fRNJpGJyRIA6QB0oC9e+EW3IJbe/aUcyjnUM4hKUntGCA6aWFTF+Zl2mXaZdo1aiStllZLqwMDyZ/8yT8wEHfhLtwVGAhzYS7MrVpVdF5Lo25zoHld87rm9Y4dk39J/iX5F24qWly4gBQxdXokhVIohcbE4GJcjIu7dhWdy2p4gRd43btHs2gWzTpxQlnwdeKE0uTu5EnpXeld6d3jx/MG5Q3KG3TypNJm+7fflP+4+Me63ee4z3GfU66c3VG7o3ZH69bNn5o/NX9q3bo4GAfj4FdfhVbQClo1boxrcA2u8fBQJmE0agSLYBEssrcXfbqtS2oqEBBQ+/bKDqQXLohOVNpwASlWiLoFugW6Bf/+NxyDY3AsIoKHHgoXJVMyJZvNYAYzmG/cgFzIhdz/fcUojMKoa9cgBEIg5M6dZ/65QECg0WAwBmOwkxO0hJbQ0slJ+blVqkAe5EFelSqQCImQyFsQF5l20A7a/fyzpq+mr6Zvv35J9ZPqJ9W3nn19Shp+4xKkYEOoltASWn7/vfKsulMbYwwAgKIpmqIfPIBsyIbsiAhTK1MrU6t580TnYgouIIJ5xHvEe8Q7O2t2aHZodixfrkw7bN9edC7GRKJpNI2mnTiBE3EiTuzVSxmiSk0VnYs9jguIRUFU2q8PGoSIiKg2dStF8/ZZ6aQDHeiIIAIiIGLpUltbW1tb2xEjEmsl1kqslZMjOh77a1xALJQ6bRPSIR3SV63CIAzCoDffFJ2LsULlB37g99tvShv1jz9WWuXExYmOxZ4NtzKxUKZrpmuma8eOYSAGYqBWq8xCGjGCDtNhOsw3DZk1y8tTvkZF5QTkBOQEvPkmFw7rxFcgVkZdX4I9sAf2mDkTT+AJPNGnD8/mYpZvz578yPzI/MghQ44EHgk8EpiWJjoRezn8hmPl9Kn6VH1qUBD1o37Ub/585dnGjUXnYqXcoz3FoQt0gS7jxxtbGFsYW8TEiI7FChcPYVk5Q2NDY0PjffuUhQo6nTrUBT7gAz7Xr4vOx0oHdUU4jIJRMGr0aDgEh+BQ/fpcOEo2vgIpodQV0TaeNp42ngMHKiu4J0zglhisUIyAETDi2jWQQQb566+VvdHnzzcajUaj8f590fFY8eACUkp4n/U+6332lVfMn5g/MX8SGoou6IIuI0YonxRdXETnYxZuFIyCUZcugR3Ygd2sWeW7le9WvtvSpUqPsgcPRMdjYvAQVimhtnwwbTBtMG2YMycnMCcwJ7BuXWXr2g8/LNjXgzEAUDok7N+PNbAG1ggJuXvz7s27N1991RhsDDYGz5/PhYMB8BUIe4JnqGeoZ6ivLzbEhtgwLAyaQlNoGhyM4RiO4WXKiM7HChfNo3k079YtfA1fw9diYmQH2UF2WLJEaYd+8qTofMyycQFhf6sJNaEmVLGiTZxNnE1c166URVmU1bcv3sE7eCcg4PGtb5lly8tT2ubv26c0m/zuO8e+jn0d+/70E19RsBfBBYS9EHUnPPov/Zf+27mzsg6lc2eaTtNpemAgeqEXetnYiM5ZOt29C8tgGSyLi4McyIGcTZtyQ3NDc0Pj4lJTU1NTU2/fFp2QlQxcQFih8snwyfDJqFw51y3XLdft7bexMTbGxq1awTgYB+NatYI5MAfm1KkjOqfVerRlK1SBKlDl1Ck6Rsfo2O7dOAJH4Ij//CdnR86OnB379vEOj6w4cAFhxUq/Rb9Fv8XNTR4gD5AH+PmhCU1o8vGBTtAJOvn6Kv9KXQhpays6b7FT95RHQsLERGgADaBBYiJshI2w8fBhjMM4jEtMVLrT3r0rOi4r3biAMIui0+q0Oq2tLV2ki3TxjTfgS/gSvmzcGDMxEzMbNYIgCIKgWrXgB/gBfqhdW5k95uqKq3AVrnJ1tZid/fSgB31urrID4W+/QTWoBtXOnwc3cAO38+dhH+yDfenpShfa8+el8lJ5qfzJk8k1k2sm1zx7Vvkhxb+jImPPgwsIK1G8gr2CvYKrVzdfMl8yX6pZU1ouLZeWu7pCb+gNve3sKIIiKKJcOZgJM2GmnZ2UJWVJWXZ2NIkm0aRy5ZQFcYjkS77kW768ci8nK0uZrXT7Ni7ABbggKwuGwlAYmpmpdJHNytL8R/MfzX+ysiAO4iDuxo26H9T9oO4Hly/HxsbGxsbm54s+L4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYKzb/D4DEm9oGCaFQAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTEyLTE1VDE1OjU3OjI3KzA4OjAwohG+LwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0xMi0xNVQxNTo1NzoyNyswODowMNNMBpMAAABPdEVYdHN2ZzpiYXNlLXVyaQBmaWxlOi8vL2hvbWUvYWRtaW4vaWNvbi1mb250L3RtcC9pY29uX2NrMWJ6YTB6ajlqamRjeHIvcmVmcmVzaC5zdmejF0ikAAAAAElFTkSuQmCC");
+ background-size: contain;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue
new file mode 100644
index 0000000..4f7f496
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifyPoints.vue
@@ -0,0 +1,259 @@
+/* eslint-disable no-unused-vars */
+<template>
+ <div
+ style="position: relative"
+ >
+ <div class="verify-img-out">
+ <div
+ :style="{'width': setSize.imgWidth,
+ 'height': setSize.imgHeight,
+ 'background-size' : setSize.imgWidth + ' '+ setSize.imgHeight,
+ 'margin-bottom': vSpace + 'px'}"
+ class="verify-img-panel"
+ >
+ <div @click="refresh" class="verify-refresh" style="z-index:3" v-show="showRefresh">
+ <i class="iconfont icon-refresh"></i>
+ </div>
+ <img
+ :src="'data:image/png;base64,'+pointBackImgBase"
+ @click="bindingClick?canvasClick($event):undefined"
+ alt=""
+ ref="canvas"
+ style="width:100%;height:100%;display:block">
+
+ <div
+ :key="index"
+ :style="{
+ 'background-color':'#1abd6c',
+ color:'#fff',
+ 'z-index':9999,
+ width:'20px',
+ height:'20px',
+ 'text-align':'center',
+ 'line-height':'20px',
+ 'border-radius': '50%',
+ position:'absolute',
+ top:parseInt(tempPoint.y-10) + 'px',
+ left:parseInt(tempPoint.x-10) + 'px'
+ }"
+ class="point-area"
+ v-for="(tempPoint, index) in tempPoints">
+ {{ index + 1 }}
+ </div>
+ </div>
+ </div>
+ <!-- 'height': this.barSize.height, -->
+ <div
+ :style="{'width': setSize.imgWidth,
+ 'color': this.barAreaColor,
+ 'border-color': this.barAreaBorderColor,
+ 'line-height':this.barSize.height}"
+ class="verify-bar-area">
+ <span class="verify-msg">{{ text }}</span>
+ </div>
+ </div>
+</template>
+<script type="text/babel">
+ /**
+ * VerifyPoints
+ * @description 鐐归��
+ * */
+ import { resetSize } from './../utils/util'
+ import { aesEncrypt } from './../utils/ase'
+ import { reqGet, reqCheck } from '@/api/modular/system/loginManage'
+
+ export default {
+ name: 'VerifyPoints',
+ props: {
+ // 寮瑰嚭寮弍op锛屽浐瀹歠ixed
+ mode: {
+ type: String,
+ default: 'fixed'
+ },
+ // eslint-disable-next-line vue/require-default-prop
+ captchaType: {
+ type: String
+ },
+ // 闂撮殧
+ vSpace: {
+ type: Number,
+ default: 5
+ },
+ imgSize: {
+ type: Object,
+ default() {
+ return {
+ width: '310px',
+ height: '155px'
+ }
+ }
+ },
+ barSize: {
+ type: Object,
+ default() {
+ return {
+ width: '310px',
+ height: '40px'
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ secretKey: '', // 鍚庣杩斿洖鐨刟se鍔犲瘑绉橀挜
+ checkNum: 3, // 榛樿闇�瑕佺偣鍑荤殑瀛楁暟
+ fontPos: [], // 閫変腑鐨勫潗鏍囦俊鎭�
+ checkPosArr: [], // 鐢ㄦ埛鐐瑰嚮鐨勫潗鏍�
+ num: 1, // 鐐瑰嚮鐨勮鏁�
+ pointBackImgBase: '', // 鍚庣鑾峰彇鍒扮殑鑳屾櫙鍥剧墖
+ poinTextList: [], // 鍚庣杩斿洖鐨勭偣鍑诲瓧浣撻『搴�
+ backToken: '', // 鍚庣杩斿洖鐨則oken鍊�
+ setSize: {
+ imgHeight: 0,
+ imgWidth: 0,
+ barHeight: 0,
+ barWidth: 0
+ },
+ tempPoints: [],
+ text: '',
+ barAreaColor: undefined,
+ barAreaBorderColor: undefined,
+ showRefresh: true,
+ bindingClick: true
+ }
+ },
+ computed: {
+ resetSize() {
+ return resetSize
+ }
+ },
+ methods: {
+ init() {
+ // 鍔犺浇椤甸潰
+ this.fontPos.splice(0, this.fontPos.length)
+ this.checkPosArr.splice(0, this.checkPosArr.length)
+ this.num = 1
+ this.getPictrue()
+ this.$nextTick(() => {
+ this.setSize = this.resetSize(this) // 閲嶆柊璁剧疆瀹藉害楂樺害
+ this.$parent.$emit('ready', this)
+ })
+ },
+ canvasClick(e) {
+ this.checkPosArr.push(this.getMousePos(this.$refs.canvas, e))
+ // eslint-disable-next-line eqeqeq
+ if (this.num == this.checkNum) {
+ this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e))
+ // 鎸夋瘮渚嬭浆鎹㈠潗鏍囧��
+ this.checkPosArr = this.pointTransfrom(this.checkPosArr, this.setSize)
+ // 绛夊垱寤哄潗鏍囨墽琛屽畬
+ setTimeout(() => {
+ // var flag = this.comparePos(this.fontPos, this.checkPosArr);
+ // 鍙戦�佸悗绔姹�
+ var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify(this.checkPosArr), this.secretKey) : this.backToken + '---' + JSON.stringify(this.checkPosArr)
+ const data = {
+ captchaType: this.captchaType,
+ 'pointJson': this.secretKey ? aesEncrypt(JSON.stringify(this.checkPosArr), this.secretKey) : JSON.stringify(this.checkPosArr),
+ 'token': this.backToken
+ }
+ reqCheck(data).then(res => {
+ // eslint-disable-next-line eqeqeq
+ if (res.repCode == '0000') {
+ this.barAreaColor = '#4cae4c'
+ this.barAreaBorderColor = '#5cb85c'
+ this.text = '楠岃瘉鎴愬姛'
+ this.bindingClick = false
+ // eslint-disable-next-line eqeqeq
+ if (this.mode == 'pop') {
+ setTimeout(() => {
+ this.$parent.clickShow = false
+ this.refresh()
+ }, 1500)
+ }
+ this.$parent.$emit('success', { captchaVerification })
+ } else {
+ this.$parent.$emit('error', this)
+ this.barAreaColor = '#d9534f'
+ this.barAreaBorderColor = '#d9534f'
+ this.text = '楠岃瘉澶辫触'
+ setTimeout(() => {
+ this.refresh()
+ }, 700)
+ }
+ })
+ }, 400)
+ }
+ if (this.num < this.checkNum) {
+ this.num = this.createPoint(this.getMousePos(this.$refs.canvas, e))
+ }
+ },
+
+ // 鑾峰彇鍧愭爣
+ getMousePos: function (obj, e) {
+ var x = e.offsetX
+ var y = e.offsetY
+ return { x, y }
+ },
+ // 鍒涘缓鍧愭爣鐐�
+ createPoint: function (pos) {
+ this.tempPoints.push(Object.assign({}, pos))
+ return ++this.num
+ },
+ refresh: function () {
+ this.tempPoints.splice(0, this.tempPoints.length)
+ this.barAreaColor = '#000'
+ this.barAreaBorderColor = '#ddd'
+ this.bindingClick = true
+ this.fontPos.splice(0, this.fontPos.length)
+ this.checkPosArr.splice(0, this.checkPosArr.length)
+ this.num = 1
+ this.getPictrue()
+ this.text = '楠岃瘉澶辫触'
+ this.showRefresh = true
+ },
+
+ // 璇锋眰鑳屾櫙鍥剧墖鍜岄獙璇佸浘鐗�
+ getPictrue() {
+ const data = {
+ captchaType: this.captchaType
+ }
+ reqGet(data).then(res => {
+ // eslint-disable-next-line eqeqeq
+ if (res.repCode == '0000') {
+ this.pointBackImgBase = res.repData.originalImageBase64
+ this.backToken = res.repData.token
+ this.secretKey = res.repData.secretKey
+ this.poinTextList = res.repData.wordList
+ this.text = '璇蜂緷娆$偣鍑汇��' + this.poinTextList.join(',') + '銆�'
+ } else {
+ this.text = res.repMsg
+ }
+ })
+ },
+ // 鍧愭爣杞崲鍑芥暟
+ pointTransfrom(pointArr, imgSize) {
+ var newPointArr = pointArr.map(p => {
+ const x = Math.round(310 * p.x / parseInt(imgSize.imgWidth))
+ const y = Math.round(155 * p.y / parseInt(imgSize.imgHeight))
+ return { x, y }
+ })
+ return newPointArr
+ }
+ },
+ watch: {
+ // type鍙樺寲鍒欏叏闈㈠埛鏂�
+ type: {
+ immediate: true,
+ handler() {
+ this.init()
+ }
+ }
+ },
+ mounted() {
+ // 绂佹鎷栨嫿
+ this.$el.onselectstart = function () {
+ return false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue
new file mode 100644
index 0000000..8e91a5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/Verify/VerifySlide.vue
@@ -0,0 +1,374 @@
+<template>
+ <div style="position: relative;">
+ <div
+ :style="{height: (parseInt(setSize.imgHeight) + vSpace) + 'px'}"
+ class="verify-img-out"
+ v-if="type === '2'"
+ >
+ <div
+ :style="{width: setSize.imgWidth,
+ height: setSize.imgHeight,}"
+ class="verify-img-panel">
+ <img :src="'data:image/png;base64,'+backImgBase" alt="" style="width:100%;height:100%;display:block">
+ <div @click="refresh" class="verify-refresh" v-show="showRefresh"><i class="iconfont icon-refresh"></i>
+ </div>
+ <transition name="tips">
+ <span :class="passFlag ?'suc-bg':'err-bg'" class="verify-tips" v-if="tipWords">{{ tipWords }}</span>
+ </transition>
+ </div>
+ </div>
+ <!-- 鍏叡閮ㄥ垎 -->
+ <div
+ :style="{width: setSize.imgWidth,
+ height: barSize.height,
+ 'line-height':barSize.height}"
+ class="verify-bar-area">
+ <span class="verify-msg" v-text="text"></span>
+ <div
+ :style="{width: (leftBarWidth!==undefined)?leftBarWidth: barSize.height, height: barSize.height, 'border-color': leftBarBorderColor, transaction: transitionWidth}"
+ class="verify-left-bar">
+ <span class="verify-msg" v-text="finishText"></span>
+ <div
+ :style="{width: barSize.height, height: barSize.height, 'background-color': moveBlockBackgroundColor, left: moveBlockLeft, transition: transitionLeft}"
+ @mousedown="start"
+ @touchstart="start"
+ class="verify-move-block">
+ <i
+ :class="['verify-icon iconfont', iconClass]"
+ :style="{color: iconColor}"></i>
+ <div
+ :style="{'width':Math.floor(parseInt(setSize.imgWidth)*47/310)+ 'px',
+ 'height': setSize.imgHeight,
+ 'top':'-' + (parseInt(setSize.imgHeight) + vSpace) + 'px',
+ 'background-size': setSize.imgWidth + ' ' + setSize.imgHeight,
+ }"
+ class="verify-sub-block"
+ v-if="type === '2'">
+ <img :src="'data:image/png;base64,'+blockBackImgBase" alt="" style="width:100%;height:100%;display:block">
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+<script type="text/babel">
+ /**
+ * VerifySlide
+ * @description 婊戝潡
+ * */
+ import { aesEncrypt } from './../utils/ase'
+ import { resetSize } from './../utils/util'
+ import { reqGet, reqCheck } from '@/api/modular/system/loginManage'
+
+ // "captchaType":"blockPuzzle",
+ export default {
+ name: 'VerifySlide',
+ props: {
+ // eslint-disable-next-line vue/require-default-prop
+ captchaType: {
+ type: String
+ },
+ type: {
+ type: String,
+ default: '1'
+ },
+ // 寮瑰嚭寮弍op锛屽浐瀹歠ixed
+ mode: {
+ type: String,
+ default: 'fixed'
+ },
+ vSpace: {
+ type: Number,
+ default: 5
+ },
+ explain: {
+ type: String,
+ default: '鍚戝彸婊戝姩瀹屾垚楠岃瘉'
+ },
+ imgSize: {
+ type: Object,
+ default() {
+ return {
+ width: '310px',
+ height: '155px'
+ }
+ }
+ },
+ blockSize: {
+ type: Object,
+ default() {
+ return {
+ width: '50px',
+ height: '50px'
+ }
+ }
+ },
+ barSize: {
+ type: Object,
+ default() {
+ return {
+ width: '310px',
+ height: '40px'
+ }
+ }
+ }
+ },
+ data() {
+ return {
+ secretKey: '', // 鍚庣杩斿洖鐨勫姞瀵嗙閽� 瀛楁
+ passFlag: '', // 鏄惁閫氳繃鐨勬爣璇�
+ backImgBase: '', // 楠岃瘉鐮佽儗鏅浘鐗�
+ blockBackImgBase: '', // 楠岃瘉婊戝潡鐨勮儗鏅浘鐗�
+ backToken: '', // 鍚庣杩斿洖鐨勫敮涓�token鍊�
+ startMoveTime: '', // 绉诲姩寮�濮嬬殑鏃堕棿
+ endMovetime: '', // 绉诲姩缁撴潫鐨勬椂闂�
+ tipsBackColor: '', // 鎻愮ず璇嶇殑鑳屾櫙棰滆壊
+ tipWords: '',
+ text: '',
+ finishText: '',
+ setSize: {
+ imgHeight: 0,
+ imgWidth: 0,
+ barHeight: 0,
+ barWidth: 0
+ },
+ top: 0,
+ left: 0,
+ moveBlockLeft: undefined,
+ leftBarWidth: undefined,
+ // 绉诲姩涓牱寮�
+ moveBlockBackgroundColor: undefined,
+ leftBarBorderColor: '#ddd',
+ iconColor: undefined,
+ iconClass: 'icon-right',
+ status: false, // 榧犳爣鐘舵��
+ isEnd: false, // 鏄楠岃瘉瀹屾垚
+ showRefresh: true,
+ transitionLeft: '',
+ transitionWidth: ''
+ }
+ },
+ computed: {
+ barArea() {
+ return this.$el.querySelector('.verify-bar-area')
+ },
+ resetSize() {
+ return resetSize
+ }
+ },
+ methods: {
+ init() {
+ this.text = this.explain
+ this.getPictrue()
+ this.$nextTick(() => {
+ const setSize = this.resetSize(this) // 閲嶆柊璁剧疆瀹藉害楂樺害
+ for (const key in setSize) {
+ this.$set(this.setSize, key, setSize[key])
+ }
+ this.$parent.$emit('ready', this)
+ })
+
+ var _this = this
+
+ window.removeEventListener('touchmove', function (e) {
+ _this.move(e)
+ })
+ window.removeEventListener('mousemove', function (e) {
+ _this.move(e)
+ })
+
+ // 榧犳爣鏉惧紑
+ window.removeEventListener('touchend', function () {
+ _this.end()
+ })
+ window.removeEventListener('mouseup', function () {
+ _this.end()
+ })
+
+ window.addEventListener('touchmove', function (e) {
+ _this.move(e)
+ })
+ window.addEventListener('mousemove', function (e) {
+ _this.move(e)
+ })
+
+ // 榧犳爣鏉惧紑
+ window.addEventListener('touchend', function () {
+ _this.end()
+ })
+ window.addEventListener('mouseup', function () {
+ _this.end()
+ })
+ },
+
+ // 榧犳爣鎸変笅
+ start: function (e) {
+ e = e || window.event
+ if (!e.touches) { // 鍏煎PC绔�
+ var x = e.clientX
+ } else { // 鍏煎绉诲姩绔�
+ // eslint-disable-next-line no-redeclare
+ var x = e.touches[0].pageX
+ }
+ this.startLeft = Math.floor(x - this.barArea.getBoundingClientRect().left)
+ this.startMoveTime = +new Date() // 寮�濮嬫粦鍔ㄧ殑鏃堕棿
+ // eslint-disable-next-line eqeqeq
+ if (this.isEnd == false) {
+ this.text = ''
+ this.moveBlockBackgroundColor = '#337ab7'
+ this.leftBarBorderColor = '#337AB7'
+ this.iconColor = '#fff'
+ e.stopPropagation()
+ this.status = true
+ }
+ },
+ // 榧犳爣绉诲姩
+ move: function (e) {
+ e = e || window.event
+ // eslint-disable-next-line eqeqeq
+ if (this.status && this.isEnd == false) {
+ if (!e.touches) { // 鍏煎PC绔�
+ var x = e.clientX
+ } else { // 鍏煎绉诲姩绔�
+ // eslint-disable-next-line no-redeclare
+ var x = e.touches[0].pageX
+ }
+ // eslint-disable-next-line camelcase
+ var bar_area_left = this.barArea.getBoundingClientRect().left
+ // eslint-disable-next-line camelcase
+ var move_block_left = x - bar_area_left // 灏忔柟鍧楃浉瀵逛簬鐖跺厓绱犵殑left鍊�
+ // eslint-disable-next-line camelcase
+ if (move_block_left >= this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2) {
+ // eslint-disable-next-line camelcase
+ move_block_left = this.barArea.offsetWidth - parseInt(parseInt(this.blockSize.width) / 2) - 2
+ }
+ // eslint-disable-next-line camelcase
+ if (move_block_left <= 0) {
+ // eslint-disable-next-line camelcase
+ move_block_left = parseInt(parseInt(this.blockSize.width) / 2)
+ }
+ // 鎷栧姩鍚庡皬鏂瑰潡鐨刲eft鍊�
+ // eslint-disable-next-line camelcase
+ this.moveBlockLeft = (move_block_left - this.startLeft) + 'px'
+ // eslint-disable-next-line camelcase
+ this.leftBarWidth = (move_block_left - this.startLeft) + 'px'
+ }
+ },
+
+ // 榧犳爣鏉惧紑
+ end: function () {
+ this.endMovetime = +new Date()
+ var _this = this
+ // 鍒ゆ柇鏄惁閲嶅悎
+ // eslint-disable-next-line eqeqeq
+ if (this.status && this.isEnd == false) {
+ var moveLeftDistance = parseInt((this.moveBlockLeft || '').replace('px', ''))
+ moveLeftDistance = moveLeftDistance * 310 / parseInt(this.setSize.imgWidth)
+ const data = {
+ captchaType: this.captchaType,
+ 'pointJson': this.secretKey ? aesEncrypt(JSON.stringify({ x: moveLeftDistance, y: 5.0 }), this.secretKey) : JSON.stringify({ x: moveLeftDistance, y: 5.0 }),
+ 'token': this.backToken
+ }
+ reqCheck(data).then(res => {
+ // eslint-disable-next-line eqeqeq
+ if (res.repCode == '0000') {
+ this.moveBlockBackgroundColor = '#5cb85c'
+ this.leftBarBorderColor = '#5cb85c'
+ this.iconColor = '#fff'
+ this.iconClass = 'icon-check'
+ this.showRefresh = false
+ this.isEnd = true
+ // eslint-disable-next-line eqeqeq
+ if (this.mode == 'pop') {
+ setTimeout(() => {
+ this.$parent.clickShow = false
+ this.refresh()
+ }, 1500)
+ }
+ this.passFlag = true
+ this.tipWords = `${((this.endMovetime - this.startMoveTime) / 1000).toFixed(2)}s楠岃瘉鎴愬姛`
+ var captchaVerification = this.secretKey ? aesEncrypt(this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 }), this.secretKey) : this.backToken + '---' + JSON.stringify({ x: moveLeftDistance, y: 5.0 })
+ setTimeout(() => {
+ this.tipWords = ''
+ this.$parent.closeBox()
+ this.$parent.$emit('success', { captchaVerification })
+ }, 1000)
+ } else {
+ this.moveBlockBackgroundColor = '#d9534f'
+ this.leftBarBorderColor = '#d9534f'
+ this.iconColor = '#fff'
+ this.iconClass = 'icon-close'
+ this.passFlag = false
+ setTimeout(function () {
+ _this.refresh()
+ }, 1000)
+ this.$parent.$emit('error', this)
+ this.tipWords = '楠岃瘉澶辫触'
+ setTimeout(() => {
+ this.tipWords = ''
+ }, 1000)
+ }
+ })
+ this.status = false
+ }
+ },
+
+ refresh: function () {
+ this.showRefresh = true
+ this.finishText = ''
+
+ this.transitionLeft = 'left .3s'
+ this.moveBlockLeft = 0
+
+ this.leftBarWidth = undefined
+ this.transitionWidth = 'width .3s'
+
+ this.leftBarBorderColor = '#ddd'
+ this.moveBlockBackgroundColor = '#fff'
+ this.iconColor = '#000'
+ this.iconClass = 'icon-right'
+ this.isEnd = false
+
+ this.getPictrue()
+ setTimeout(() => {
+ this.transitionWidth = ''
+ this.transitionLeft = ''
+ this.text = this.explain
+ }, 300)
+ },
+
+ // 璇锋眰鑳屾櫙鍥剧墖鍜岄獙璇佸浘鐗�
+ getPictrue() {
+ const data = {
+ captchaType: this.captchaType
+ }
+ reqGet(data).then(res => {
+ // eslint-disable-next-line eqeqeq
+ if (res.repCode == '0000') {
+ this.backImgBase = res.repData.originalImageBase64
+ this.blockBackImgBase = res.repData.jigsawImageBase64
+ this.backToken = res.repData.token
+ this.secretKey = res.repData.secretKey
+ } else {
+ this.tipWords = res.repMsg
+ }
+ })
+ }
+ },
+ watch: {
+ // type鍙樺寲鍒欏叏闈㈠埛鏂�
+ type: {
+ immediate: true,
+ handler() {
+ this.init()
+ }
+ }
+ },
+ mounted() {
+ // 绂佹鎷栨嫿
+ this.$el.onselectstart = function () {
+ return false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js
new file mode 100644
index 0000000..7556cd7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/ase.js
@@ -0,0 +1,11 @@
+import CryptoJS from 'crypto-js'
+/**
+ * @word 瑕佸姞瀵嗙殑鍐呭
+ * @keyWord String 鏈嶅姟鍣ㄩ殢鏈鸿繑鍥炵殑鍏抽敭瀛�
+ */
+export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') {
+ var key = CryptoJS.enc.Utf8.parse(keyWord)
+ var srcs = CryptoJS.enc.Utf8.parse(word)
+ var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 })
+ return encrypted.toString()
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js
new file mode 100644
index 0000000..b98b993
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/axios.js
@@ -0,0 +1,30 @@
+import axios from 'axios'
+
+axios.defaults.baseURL = process.env.BASE_API
+
+const service = axios.create({
+ timeout: 40000,
+ headers: {
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'Content-Type': 'application/json; charset=UTF-8'
+ }
+})
+service.interceptors.request.use(
+ config => {
+ return config
+ },
+ error => {
+ Promise.reject(error)
+ }
+)
+
+// response interceptor
+service.interceptors.response.use(
+ response => {
+ const res = response.data
+ return res
+ },
+ () => {
+ }
+)
+export default service
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js
new file mode 100644
index 0000000..f6c5746
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/verifition/utils/util.js
@@ -0,0 +1,52 @@
+export function resetSize(vm) {
+ // eslint-disable-next-line camelcase
+ var img_width, img_height, bar_width, bar_height // 鍥剧墖鐨勫搴︺�侀珮搴︼紝绉诲姩鏉$殑瀹藉害銆侀珮搴�
+
+ var parentWidth = vm.$el.parentNode.offsetWidth || window.offsetWidth
+ var parentHeight = vm.$el.parentNode.offsetHeight || window.offsetHeight
+
+ // eslint-disable-next-line eqeqeq
+ if (vm.imgSize.width.indexOf('%') != -1) {
+ // eslint-disable-next-line camelcase
+ img_width = parseInt(this.imgSize.width) / 100 * parentWidth + 'px'
+ } else {
+ // eslint-disable-next-line camelcase
+ img_width = this.imgSize.width
+ }
+
+ // eslint-disable-next-line eqeqeq
+ if (vm.imgSize.height.indexOf('%') != -1) {
+ // eslint-disable-next-line camelcase
+ img_height = parseInt(this.imgSize.height) / 100 * parentHeight + 'px'
+ } else {
+ // eslint-disable-next-line camelcase
+ img_height = this.imgSize.height
+ }
+
+ // eslint-disable-next-line eqeqeq
+ if (vm.barSize.width.indexOf('%') != -1) {
+ // eslint-disable-next-line camelcase
+ bar_width = parseInt(this.barSize.width) / 100 * parentWidth + 'px'
+ } else {
+ // eslint-disable-next-line camelcase
+ bar_width = this.barSize.width
+ }
+
+ // eslint-disable-next-line eqeqeq
+ if (vm.barSize.height.indexOf('%') != -1) {
+ // eslint-disable-next-line camelcase
+ bar_height = parseInt(this.barSize.height) / 100 * parentHeight + 'px'
+ } else {
+ // eslint-disable-next-line camelcase
+ bar_height = this.barSize.height
+ }
+
+ return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height }
+}
+
+// eslint-disable-next-line camelcase
+export const _code_chars = [1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', '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', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
+// eslint-disable-next-line camelcase
+export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0']
+// eslint-disable-next-line camelcase
+export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC']
diff --git a/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue b/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue
new file mode 100644
index 0000000..4fdb719
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/components/xnComponents/XCard.vue
@@ -0,0 +1,16 @@
+<template>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <slot name="content"></slot>
+ </a-card>
+</template>
+
+<script>
+ export default {
+ name: 'XCard',
+ data() {
+ return {
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' }
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js b/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js
new file mode 100644
index 0000000..48e7d61
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/config/defaultSettings.js
@@ -0,0 +1,38 @@
+/**
+ * 椤圭洰榛樿閰嶇疆椤�
+ * primaryColor - 榛樿涓婚鑹�, 濡傛灉淇敼棰滆壊涓嶇敓鏁堬紝璇锋竻鐞� localStorage
+ * navTheme - sidebar theme ['dark', 'light'] 涓ょ涓婚
+ * colorWeak - 鑹茬洸妯″紡
+ * layout - 鏁翠綋甯冨眬鏂瑰紡 ['sidemenu', 'topmenu'] 涓ょ甯冨眬
+ * fixedHeader - 鍥哄畾 Header : boolean
+ * fixSiderbar - 鍥哄畾宸︿晶鑿滃崟鏍� 锛� boolean
+ * autoHideHeader - 鍚戜笅婊氬姩鏃讹紝闅愯棌 Header : boolean
+ * contentWidth - 鍐呭鍖哄竷灞�锛� 娴佸紡 | 鍥哄畾
+ *
+ * storageOptions: {} - Vue-ls 鎻掍欢閰嶇疆椤� (localStorage/sessionStorage)
+ * production: 鍙橀噺鏆傚厛璁惧畾涓� false锛岀洰鐨勬槸鍚勭鐜閮芥甯告樉绀鸿缃娊灞夛紝鐪熷疄鐜璇锋斁寮�娉ㄩ噴
+ *
+ *
+ */
+
+export default {
+ primaryColor: '#FA541C', // primary color of ant design
+ navTheme: 'light', // theme for nav menu
+ layout: 'sidemenu', // nav menu position: sidemenu or topmenu
+ contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu
+ fixedHeader: true, // sticky header
+ fixSiderbar: true, // sticky siderbar
+ autoHideHeader: false, // auto hide header
+ colorWeak: false,
+ multiTab: false,
+ crumbsSate: false,
+ production: process.env.NODE_ENV === 'production' && process.env.VUE_APP_PREVIEW !== 'true',
+ // vue-ls options
+ storageOptions: {
+ namespace: 'pro__', // key prefix
+ name: 'ls', // name variable Vue.[ls] or this.[$ls],
+ storage: 'local' // storage name session, local, memory
+ }
+}
+
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/config/router.config.js b/iWare_RawMaterialWarehouse_Web/src/config/router.config.js
new file mode 100644
index 0000000..cf09871
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/config/router.config.js
@@ -0,0 +1,98 @@
+// eslint-disable-next-line
+import { UserLayout, BasicLayout, RouteView, BlankLayout, PageView } from '@/layouts'
+import { bxAnaalyse } from '@/core/icons'
+
+export const asyncRouterMap = [
+
+ {
+ path: '/',
+ name: 'MenuIndex.vue',
+ component: BasicLayout,
+ meta: { title: '棣栭〉' },
+ redirect: '/dashboard/workplace',
+ children: [
+ // dashboard
+ {
+ path: 'dashboard',
+ name: 'dashboard',
+ redirect: '/dashboard/workplace',
+ component: RouteView,
+ // eslint-disable-next-line standard/object-curly-even-spacing
+ meta: { title: '浠〃鐩�', keepAlive: true, icon: bxAnaalyse /* permission: [ 'dashboard' ] */ },
+ children: [
+ {
+ path: 'analysis/:pageNo([1-9]\\d*)?',
+ name: 'Analysis',
+ component: () => import('@/views/system/dashboard/Analysis'),
+ // eslint-disable-next-line standard/object-curly-even-spacing
+ meta: { title: '鍒嗘瀽椤�', keepAlive: true /* permission: [ 'dashboard' ] */ }
+ },
+ {
+ path: 'workplace',
+ name: 'Workplace',
+ component: () => import('@/views/system/dashboard/Workplace'),
+ // eslint-disable-next-line standard/object-curly-even-spacing
+ meta: { title: '宸ヤ綔鍙�', keepAlive: false/*, permission: [ 'dashboard' ] */ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ path: '*', redirect: '/404', hidden: true
+ }
+]
+
+/**
+ * 鍩虹璺敱
+ * @type { *[] }
+ */
+export const constantRouterMap = [
+ {
+ path: '/user',
+ component: UserLayout,
+ redirect: '/user/login',
+ hidden: true,
+ children: [
+ {
+ path: 'login',
+ name: 'login',
+ component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/Login')
+ },
+ {
+ path: 'register',
+ name: 'register',
+ component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/Register')
+ },
+ {
+ path: 'register-result',
+ name: 'registerResult',
+ component: () => import(/* webpackChunkName: "user" */ '@/views/userLoginReg/RegisterResult')
+ },
+ {
+ path: 'recover',
+ name: 'recover',
+ component: undefined
+ }
+ ]
+ },
+
+ {
+ path: '/test',
+ component: BlankLayout,
+ redirect: '/test/home',
+ children: [
+ {
+ path: 'home',
+ name: 'TestHome',
+ component: () => import('@/views/Home')
+ }
+ ]
+ },
+
+ {
+ path: '/404',
+ component: () => import(/* webpackChunkName: "fail" */ '@/views/system/exception/404')
+ }
+
+]
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js b/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js
new file mode 100644
index 0000000..58cb248
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/bootstrap.js
@@ -0,0 +1,41 @@
+/*
+ * @Author: your name
+ * @Date: 2021-05-18 23:01:53
+ * @LastEditTime: 2021-05-19 00:57:22
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\core\bootstrap.js
+ */
+import Vue from 'vue'
+import store from '@/store/'
+import {
+ ACCESS_TOKEN,
+ DEFAULT_COLOR,
+ DEFAULT_THEME,
+ DEFAULT_LAYOUT_MODE,
+ DEFAULT_COLOR_WEAK,
+ SIDEBAR_TYPE,
+ DEFAULT_FIXED_HEADER,
+ DEFAULT_FIXED_HEADER_HIDDEN,
+ DEFAULT_FIXED_SIDEMENU,
+ DEFAULT_CONTENT_WIDTH_TYPE,
+ DEFAULT_MULTI_TAB,
+ DEFAULT_CRUMBS_STATE
+} from '@/store/mutation-types'
+
+import config from '@/config/defaultSettings'
+
+export default function Initializer () {
+ store.commit('SET_SIDEBAR_TYPE', Vue.ls.get(SIDEBAR_TYPE, true))
+ store.commit('TOGGLE_THEME', Vue.ls.get(DEFAULT_THEME, config.navTheme))
+ store.commit('TOGGLE_LAYOUT_MODE', Vue.ls.get(DEFAULT_LAYOUT_MODE, config.layout))
+ store.commit('TOGGLE_FIXED_HEADER', Vue.ls.get(DEFAULT_FIXED_HEADER, config.fixedHeader))
+ store.commit('TOGGLE_FIXED_SIDERBAR', Vue.ls.get(DEFAULT_FIXED_SIDEMENU, config.fixSiderbar))
+ store.commit('TOGGLE_CONTENT_WIDTH', Vue.ls.get(DEFAULT_CONTENT_WIDTH_TYPE, config.contentWidth))
+ store.commit('TOGGLE_FIXED_HEADER_HIDDEN', Vue.ls.get(DEFAULT_FIXED_HEADER_HIDDEN, config.autoHideHeader))
+ store.commit('TOGGLE_WEAK', Vue.ls.get(DEFAULT_COLOR_WEAK, config.colorWeak))
+ store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
+ store.commit('TOGGLE_MULTI_TAB', Vue.ls.get(DEFAULT_MULTI_TAB, config.multiTab))
+ store.commit('TOGGLE_CRUMBS_STATE', Vue.ls.get(DEFAULT_CRUMBS_STATE, config.crumbsSate))
+ store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js b/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js
new file mode 100644
index 0000000..bdc9ec0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/directives/action.js
@@ -0,0 +1,34 @@
+import Vue from 'vue'
+import store from '@/store'
+
+/**
+ * Action 鏉冮檺鎸囦护
+ * 鎸囦护鐢ㄦ硶锛�
+ * - 鍦ㄩ渶瑕佹帶鍒� action 绾у埆鏉冮檺鐨勭粍浠朵笂浣跨敤 v-action:[method] , 濡備笅锛�
+ * <i-button v-action:add >娣诲姞鐢ㄦ埛</a-button>
+ * <a-button v-action:delete>鍒犻櫎鐢ㄦ埛</a-button>
+ * <a v-action:edit @click="edit(record)">淇敼</a>
+ *
+ * - 褰撳墠鐢ㄦ埛娌℃湁鏉冮檺鏃讹紝缁勪欢涓婁娇鐢ㄤ簡璇ユ寚浠ゅ垯浼氳闅愯棌
+ * - 褰撳悗鍙版潈闄愯窡 pro 鎻愪緵鐨勬ā寮忎笉鍚屾椂锛屽彧闇�瑕侀拡瀵硅繖閲岀殑鏉冮檺杩囨护杩涜淇敼鍗冲彲
+ *
+ * @see https://github.com/sendya/ant-design-pro-vue/pull/53
+ */
+const action = Vue.directive('action', {
+ inserted: function (el, binding, vnode) {
+ const actionName = binding.arg
+ const roles = store.getters.roles
+ const elVal = vnode.context.$route.meta.permission
+ const permissionId = elVal instanceof String && [elVal] || elVal
+ roles.permissions.forEach(p => {
+ if (!permissionId.includes(p.permissionId)) {
+ return
+ }
+ if (p.actionList && !p.actionList.includes(actionName)) {
+ el.parentNode && el.parentNode.removeChild(el) || (el.style.display = 'none')
+ }
+ })
+ }
+})
+
+export default action
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/icons.js b/iWare_RawMaterialWarehouse_Web/src/core/icons.js
new file mode 100644
index 0000000..46b7261
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/icons.js
@@ -0,0 +1,11 @@
+/**
+ * Custom icon list
+ * All icons are loaded here for easy management
+ * @see https://vue.ant.design/components/icon/#Custom-Font-Icon
+ *
+ * 鑷畾涔夊浘鏍囧姞杞借〃
+ * 鎵�鏈夊浘鏍囧潎浠庤繖閲屽姞杞斤紝鏂逛究绠$悊
+ */
+import bxAnaalyse from '@/assets/icons/bx-analyse.svg?inline' // path to your '*.svg?inline' file.
+
+export { bxAnaalyse }
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js b/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js
new file mode 100644
index 0000000..a6b1b38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/lazy_lib/components_use.js
@@ -0,0 +1,115 @@
+/**
+ * 璇ユ枃浠舵槸涓轰簡鎸夐渶鍔犺浇锛屽墧闄ゆ帀浜嗕竴浜涗笉闇�瑕佺殑妗嗘灦缁勪欢銆�
+ * 鍑忓皯浜嗙紪璇戞敮鎸佸簱鍖呭ぇ灏�
+ * @author yubaoshan
+ * 褰撻渶瑕佹洿澶氱粍浠朵緷璧栨椂锛屽湪璇ユ枃浠跺姞鍏ュ嵆鍙�
+ */
+import Vue from 'vue'
+import {
+ ConfigProvider,
+ Layout,
+ Input,
+ InputNumber,
+ Button,
+ Switch,
+ Radio,
+ Checkbox,
+ Select,
+ Card,
+ Form,
+ Row,
+ Col,
+ Modal,
+ Table,
+ Tabs,
+ Icon,
+ Badge,
+ Popover,
+ Dropdown,
+ List,
+ Avatar,
+ Breadcrumb,
+ Steps,
+ Spin,
+ Menu,
+ Drawer,
+ Tooltip,
+ Alert,
+ Tag,
+ Divider,
+ DatePicker,
+ TimePicker,
+ Upload,
+ Progress,
+ Skeleton,
+ Popconfirm,
+ message,
+ notification,
+ TreeSelect,
+ Tree,
+ Transfer,
+ Empty,
+ PageHeader,
+ Descriptions,
+ Result,
+ Cascader,
+ Collapse,
+} from 'ant-design-vue'
+// import VueCropper from 'vue-cropper'
+
+Vue.use(ConfigProvider)
+Vue.use(Layout)
+Vue.use(Input)
+Vue.use(InputNumber)
+Vue.use(Button)
+Vue.use(Switch)
+Vue.use(Radio)
+Vue.use(Checkbox)
+Vue.use(Select)
+Vue.use(Card)
+Vue.use(Form)
+Vue.use(Row)
+Vue.use(Col)
+Vue.use(Modal)
+Vue.use(Table)
+Vue.use(Tabs)
+Vue.use(Icon)
+Vue.use(Badge)
+Vue.use(Popover)
+Vue.use(Dropdown)
+Vue.use(List)
+Vue.use(Avatar)
+Vue.use(Breadcrumb)
+Vue.use(Steps)
+Vue.use(Spin)
+Vue.use(Menu)
+Vue.use(Drawer)
+Vue.use(Tooltip)
+Vue.use(Alert)
+Vue.use(Tag)
+Vue.use(Divider)
+Vue.use(DatePicker)
+Vue.use(TimePicker)
+Vue.use(Upload)
+Vue.use(Progress)
+Vue.use(Skeleton)
+Vue.use(Popconfirm)
+// Vue.use(VueCropper)
+Vue.use(notification)
+Vue.use(TreeSelect)
+Vue.use(Tree)
+Vue.use(Transfer)
+Vue.use(Empty)
+Vue.use(PageHeader)
+Vue.use(Descriptions)
+Vue.use(Result)
+Vue.use(Cascader)
+Vue.use(Collapse)
+
+Vue.prototype.$confirm = Modal.confirm
+Vue.prototype.$message = message
+Vue.prototype.$notification = notification
+Vue.prototype.$info = Modal.info
+Vue.prototype.$success = Modal.success
+Vue.prototype.$error = Modal.error
+Vue.prototype.$warning = Modal.warning
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js b/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js
new file mode 100644
index 0000000..efd2047
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/lazy_use.js
@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import VueStorage from 'vue-ls'
+import config from '@/config/defaultSettings'
+
+// base library
+import '@/core/lazy_lib/components_use'
+import Viser from 'viser-vue'
+
+// ext library
+import VueClipboard from 'vue-clipboard2'
+import VueCropper from 'vue-cropper'
+import MultiTab from '@/components/MultiTab'
+import PageLoading from '@/components/PageLoading'
+import PermissionHelper from '@/utils/helper/permission'
+import './directives/action'
+
+VueClipboard.config.autoSetContainer = true
+
+Vue.use(Viser)
+Vue.use(MultiTab)
+Vue.use(PageLoading)
+Vue.use(VueStorage, config.storageOptions)
+Vue.use(VueClipboard)
+Vue.use(PermissionHelper)
+Vue.use(VueCropper)
+
+process.env.NODE_ENV !== 'production' && console.warn('[antd-pro] NOTICE: Antd use lazy-load.')
diff --git a/iWare_RawMaterialWarehouse_Web/src/core/use.js b/iWare_RawMaterialWarehouse_Web/src/core/use.js
new file mode 100644
index 0000000..a17c2fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/core/use.js
@@ -0,0 +1,30 @@
+import Vue from 'vue'
+import VueStorage from 'vue-ls'
+import config from '@/config/defaultSettings'
+
+// base library
+import Antd from 'ant-design-vue'
+import Viser from 'viser-vue'
+import VueCropper from 'vue-cropper'
+import 'ant-design-vue/dist/antd.less'
+
+// ext library
+import VueClipboard from 'vue-clipboard2'
+import MultiTab from '@/components/MultiTab'
+import PageLoading from '@/components/PageLoading'
+import PermissionHelper from '@/utils/helper/permission'
+// import '@/components/use'
+import './directives/action'
+
+VueClipboard.config.autoSetContainer = true
+
+Vue.use(Antd)
+Vue.use(Viser)
+Vue.use(MultiTab)
+Vue.use(PageLoading)
+Vue.use(VueStorage, config.storageOptions)
+Vue.use(VueClipboard)
+Vue.use(PermissionHelper)
+Vue.use(VueCropper)
+
+process.env.NODE_ENV !== 'production' && console.warn('[antd-pro] WARNING: Antd now use fulled imported.')
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue
new file mode 100644
index 0000000..9a39754
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/BasicLayout.vue
@@ -0,0 +1,203 @@
+<template>
+ <a-layout :class="['layout', device]">
+ <!-- SideMenu -->
+ <a-drawer
+ v-if="isMobile()"
+ placement="left"
+ :wrapClassName="`drawer-sider ${navTheme}`"
+ :closable="false"
+ :visible="collapsed"
+ @close="drawerClose"
+ >
+ <side-menu
+ mode="inline"
+ :menus="menus"
+ :theme="navTheme"
+ :collapsed="false"
+ :collapsible="true"
+ @menuSelect="menuSelect"
+ ></side-menu>
+ </a-drawer>
+
+ <side-menu
+ v-else-if="isSideMenu()"
+ mode="inline"
+ :menus="menus"
+ :theme="navTheme"
+ :collapsed="collapsed"
+ :collapsible="true"
+ ></side-menu>
+
+ <a-layout :class="[layoutMode, `content-width-${contentWidth}`]" :style="{ paddingLeft: contentPaddingLeft, minHeight: '100vh' }">
+ <!-- layout header -->
+ <global-header
+ :mode="layoutMode"
+ :menus="menus"
+ :theme="navTheme"
+ :collapsed="collapsed"
+ :device="device"
+ @toggle="toggle"
+ />
+
+ <!-- layout content -->
+ <a-layout-content :style="{display:'flex',flexDirection:'column',paddingTop: fixedHeader ? '55px' : '0'}">
+ <div style="flex-shrink:0;" v-if="multiTab">
+ <multi-tab></multi-tab>
+ </div>
+ <div style="flex-grow:1;height:10px;display:flex;flex-direction:column;">
+ <div style="flex-shrink:0;background-color:#fff;padding:8px;" v-if="crumbsState">
+ <s-breadcrumb />
+ </div>
+ <div style="flex-grow:1;height:10px;">
+ <transition name="page-transition">
+ <route-view />
+ </transition>
+ </div>
+ </div>
+ </a-layout-content>
+ <!-- <a-layout-content :style="{ height: '100%', margin: '24px 24px 0', paddingTop: fixedHeader ? '55px' : '0' }">
+ <multi-tab v-if="multiTab"></multi-tab>
+ <transition name="page-transition">
+ <route-view />
+ </transition>
+ </a-layout-content> -->
+
+ <!-- layout footer -->
+ <a-layout-footer>
+ <global-footer />
+ </a-layout-footer>
+
+ <!-- Setting Drawer (show in development mode) -->
+ <setting-drawer v-if="!production"></setting-drawer>
+ </a-layout>
+ </a-layout>
+
+</template>
+
+<script>
+import { triggerWindowResizeEvent } from '@/utils/util'
+import { mapState, mapActions } from 'vuex'
+import { mixin, mixinDevice } from '@/utils/mixin'
+import config from '@/config/defaultSettings'
+
+import RouteView from './RouteView'
+import SideMenu from '@/components/Menu/SideMenu'
+import GlobalHeader from '@/components/GlobalHeader'
+import GlobalFooter from '@/components/GlobalFooter'
+import SettingDrawer from '@/components/SettingDrawer'
+import Breadcrumb from '@/components/tools/Breadcrumb'
+import { convertRoutes } from '@/utils/routeConvert'
+
+export default {
+ name: 'BasicLayout',
+ mixins: [mixin, mixinDevice],
+ components: {
+ RouteView,
+ SideMenu,
+ GlobalHeader,
+ GlobalFooter,
+ SettingDrawer,
+ 's-breadcrumb': Breadcrumb
+ },
+ data () {
+ return {
+ production: config.production,
+ collapsed: false,
+ menus: []
+ }
+ },
+ computed: {
+ ...mapState({
+ // 鍔ㄦ�佷富璺敱
+ mainMenu: state => state.permission.addRouters
+ }),
+ contentPaddingLeft () {
+ if (!this.fixSidebar || this.isMobile()) {
+ return '0'
+ }
+ if (this.sidebarOpened) {
+ return '230px'
+ }
+ return '80px'
+ }
+ },
+ watch: {
+ sidebarOpened (val) {
+ this.collapsed = !val
+ },
+ // 鑿滃崟鍙樺寲
+ mainMenu (val) {
+ this.setMenus()
+ }
+ },
+ created () {
+ this.setMenus()
+ /* const routes = convertRoutes(this.mainMenu.find(item => item.path === '/'))
+ this.menus = (routes && routes.children) || [] */
+ this.collapsed = !this.sidebarOpened
+ },
+ mounted () {
+ const userAgent = navigator.userAgent
+ if (userAgent.indexOf('Edge') > -1) {
+ this.$nextTick(() => {
+ this.collapsed = !this.collapsed
+ setTimeout(() => {
+ this.collapsed = !this.collapsed
+ }, 16)
+ })
+ }
+ },
+ methods: {
+ ...mapActions(['setSidebar']),
+ // 閲嶆柊鐢熸垚
+ setMenus () {
+ const routes = convertRoutes(this.mainMenu.find(item => item.path === '/'))
+ this.menus = (routes && routes.children) || []
+ },
+ toggle () {
+ this.collapsed = !this.collapsed
+ this.setSidebar(!this.collapsed)
+ triggerWindowResizeEvent()
+ },
+ paddingCalc () {
+ let left = ''
+ if (this.sidebarOpened) {
+ left = this.isDesktop() ? '230px' : '80px'
+ } else {
+ left = (this.isMobile() && '0') || ((this.fixSidebar && '80px') || '0')
+ }
+ return left
+ },
+ menuSelect () {
+ },
+ drawerClose () {
+ this.collapsed = false
+ }
+ }
+}
+</script>
+
+<style lang="less">
+/*
+ * The following styles are auto-applied to elements with
+ * transition="page-transition" when their visibility is toggled
+ * by Vue.js.
+ *
+ * You can easily play with the page transition by editing
+ * these styles.
+ */
+
+.page-transition-enter {
+ opacity: 0;
+}
+
+.page-transition-leave-active {
+ opacity: 0;
+}
+
+.page-transition-enter .page-transition-container,
+.page-transition-leave-active .page-transition-container {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1);
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue
new file mode 100644
index 0000000..1bfbfbf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/BlankLayout.vue
@@ -0,0 +1,16 @@
+<template>
+ <div>
+ <router-view />
+ </div>
+</template>
+
+<script>
+
+export default {
+ name: 'BlankLayout'
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue
new file mode 100644
index 0000000..e2526a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/Iframe.vue
@@ -0,0 +1,29 @@
+
+<script>
+ import Vue from 'vue'
+ import { ACCESS_TOKEN } from '@/store/mutation-types'
+
+ export default {
+ name: 'Iframe',
+ data () {
+ return {
+ }
+ },
+ render () {
+ const { $route: { meta: { link } } } = this
+ if ({ link }.link === '') {
+ return '404'
+ }
+ let url = ''
+ if ({ link }.link.indexOf('token=') > -1) {
+ url = { link }.link + Vue.ls.get(ACCESS_TOKEN)
+ } else {
+ url = { link }.link
+ }
+ let height = ''
+ const deviceHeight = document.documentElement.clientHeight
+ height = (Number(deviceHeight) - 260) + 'px'
+ return <iframe id="iframe" height={height} src={url} style="width:100%;overflow:hidden;" frameBorder="0"></iframe>
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue
new file mode 100644
index 0000000..6ecd2ee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/PageView.vue
@@ -0,0 +1,32 @@
+<template>
+ <div style="height:100%;overflow:auto;">
+ <div class="content" style="margin:0;height:100%;">
+ <div class="page-header-index-wide" style="height:100%;">
+ <slot>
+ <!-- keep-alive -->
+ <keep-alive v-if="multiTab">
+ <router-view ref="content" />
+ </keep-alive>
+ <router-view v-else ref="content" />
+ </slot>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+
+export default {
+ name: 'PageView',
+ computed: {
+ ...mapState({
+ multiTab: state => state.app.multiTab
+ })
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue
new file mode 100644
index 0000000..93081e2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/RouteView.vue
@@ -0,0 +1,54 @@
+<script>
+export default {
+ name: 'RouteView',
+ props: {
+ keepAlive: {
+ type: Boolean,
+ default: true
+ }
+ },
+ data () {
+ return {}
+ },
+ render () {
+ const { $route: { meta }, $store: { getters } } = this
+ const inKeep = (
+ <div style="height:100%;box-sizing:border-box;padding:24px 24px 0 24px;overflow:auto;">
+ <div class="content" style="margin:0;height:100%;">
+ <div class="page-header-index-wide" style="height:100%;">
+ <keep-alive>
+ <router-view />
+ </keep-alive>
+ </div>
+ </div>
+ </div>
+ )
+
+ /* const inKeep = (
+ <keep-alive>
+ <router-view />
+ </keep-alive>
+ ) */
+
+ const notKeep = (
+ <div style="height:100%;box-sizing:border-box;padding:24px 24px 0 24px;overflow:auto;">
+ <div class="content" style="margin:0;height:100%;">
+ <div class="page-header-index-wide" style="height:100%;">
+ <router-view />
+ </div>
+ </div>
+ </div>
+ )
+ /* const notKeep = (
+ <router-view />
+ ) */
+ // 杩欓噷澧炲姞浜� multiTab 鐨勫垽鏂紝褰撳紑鍚簡 multiTab 鏃�
+ // 搴斿綋鍏ㄩ儴缁勪欢鐨嗙紦瀛橈紝鍚﹀垯浼氬鑷村垏鎹㈤〉闈㈠悗椤甸潰杩樺師鎴愬師濮嬬姸鎬�
+ // 鑻ョ‘瀹炰笉闇�瑕侊紝鍙敼涓� return meta.keepAlive ? inKeep : notKeep
+ if (!getters.multiTab && !meta.keepAlive) {
+ return notKeep
+ }
+ return this.keepAlive || getters.multiTab || meta.keepAlive ? inKeep : notKeep
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue b/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue
new file mode 100644
index 0000000..18d8c6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/UserLayout.vue
@@ -0,0 +1,164 @@
+<template>
+ <div id="userLayout" :class="['user-layout-wrapper', device]">
+ <div class="container">
+ <div class="login-form-x">
+ <div class="login-form-y">
+ <div class="top">
+ <div class="header">
+ <div class="logo">
+ <img src="~@/assets/logo.jpg" alt="logo">
+ </div>
+ <span class="title">鎴戠殑寮�鍙戞ā鏉�</span>
+ </div>
+ </div>
+
+ <route-view></route-view>
+ </div>
+ </div>
+
+
+ <div class="footer">
+ <!-- <div class="links">
+ <a href="_self">甯姪</a>
+ <a href="_self">闅愮</a>
+ <a href="_self">鏉℃</a>
+ </div> -->
+ <div class="copyright">
+ <p>Copyright@浼熸湰鏅鸿兘鏈虹數(涓婃捣)鑲′唤鏈夐檺鍏徃All Right Reserved</p>
+ <!-- <p>澶囨鍙�:鑻廔CP 澶� 05012752 鑻忓畨鍏綉瀹夊 32028202000467鍙�</p> -->
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import RouteView from './RouteView'
+import { mixinDevice } from '@/utils/mixin'
+
+export default {
+ name: 'UserLayout',
+ components: { RouteView },
+ mixins: [mixinDevice],
+ data () {
+ return {}
+ },
+ mounted () {
+ document.body.classList.add('userLayout')
+ },
+ beforeDestroy () {
+ document.body.classList.remove('userLayout')
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ #userLayout.user-layout-wrapper {
+ height: 100%;
+
+ &.mobile {
+ .container {
+ .main {
+ max-width: 368px;
+ width: 98%;
+ }
+ }
+ }
+
+ .container {
+ width: 100%;
+ min-height: 100%;
+ background-color: #ffffff;
+ background-image: url("../assets/login_bk.png");
+ background-attachment: fixed;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: 100% 100%;
+ padding: 110px 0 144px;
+ position: relative;
+ display: flex;
+ align-items: center;
+ .login-form-x{
+ width:100%;
+ box-sizing: border-box;
+ display: flex;
+ padding-right: 12%;
+ justify-content: flex-end;
+ .login-form-y{
+ display: flex;
+ flex-direction: column;
+ min-width: 260px;
+ width: 368px;
+ padding:20px 20px 10px 20px;
+ background-color: #fff;
+ border-radius: 20px;
+ opacity: 0.8;
+ }
+ }
+
+ a {
+ text-decoration: none;
+ }
+
+ .top {
+ width: 100%;
+ margin-bottom: 20px;
+ .header {
+ display:flex;
+ flex-direction: column;
+ justify-content: center;
+
+ .logo {
+ display:flex;
+ justify-content: center;
+ height:40px;
+ img{
+ height:100%;
+ width:auto;
+ }
+ }
+
+ .title {
+ font-size: 33px;
+ color: rgba(0, 0, 0, .85);
+ font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
+ font-weight: 600;
+ display:flex;
+ justify-content: center;
+ }
+ }
+ }
+
+ .main {
+ width: 100%;
+ }
+
+ .footer {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 0 16px;
+ margin: 48px 0 12px;
+ text-align: center;
+ color: #999;
+
+ .links {
+ margin-bottom: 8px;
+ font-size: 14px;
+ a {
+ transition: all 0.3s;
+ &:not(:last-child) {
+ margin-right: 40px;
+ }
+ }
+ }
+ .copyright {
+ font-size: 14px;
+ p{
+ margin-bottom: 0;
+ }
+ }
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/layouts/index.js b/iWare_RawMaterialWarehouse_Web/src/layouts/index.js
new file mode 100644
index 0000000..a7ab0c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/layouts/index.js
@@ -0,0 +1,8 @@
+import UserLayout from './UserLayout'
+import BlankLayout from './BlankLayout'
+import BasicLayout from './BasicLayout'
+import RouteView from './RouteView'
+import PageView from './PageView'
+import Iframe from './Iframe'
+
+export { UserLayout, BasicLayout, BlankLayout, RouteView, PageView, Iframe }
diff --git a/iWare_RawMaterialWarehouse_Web/src/main.js b/iWare_RawMaterialWarehouse_Web/src/main.js
new file mode 100644
index 0000000..e1ef354
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/main.js
@@ -0,0 +1,50 @@
+// with polyfills
+import 'core-js/stable'
+import 'regenerator-runtime/runtime'
+import Vue from 'vue'
+import App from './App.vue'
+import router from './router'
+import store from './store/'
+import { VueAxios } from './utils/request'
+// WARNING: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.
+import './mock'
+
+import bootstrap from './core/bootstrap'
+import './core/lazy_use'
+import './permission'
+import './utils/filter'
+import './components/global.less'
+//import socket from './utils/socket'
+import { Dialog } from '@/components'
+import { hasBtnPermission } from './utils/permissions'
+import { sysApplication } from './utils/applocation'
+import 'k-form-design/packages/core/useComponents'
+import KFormDesign from 'k-form-design/packages/use.js'
+import 'k-form-design/lib/k-form-design.css'
+import 'ant-design-vue/dist/antd.less'
+import dataV from '@jiaminghi/data-view'
+import createLoading from './components/Loading'
+import { getObjectType } from './utils/util'
+import checkVersion from './utils/checkVersion'
+
+Vue.use(KFormDesign)
+Vue.use(dataV)
+//Vue.use(socket, '/hubs/chatHub')
+
+Vue.use(VueAxios)
+Vue.use(Dialog)
+Vue.prototype.hasPerm = hasBtnPermission
+Vue.prototype.applocation = sysApplication
+Vue.prototype.$getObjectType = getObjectType
+Vue.prototype.$loading = createLoading()
+Vue.config.productionTip = false
+
+new Vue({
+ router,
+ store,
+ created: bootstrap,
+ render: h => h(App)
+}).$mount('#app')
+
+
+checkVersion();//鍚姩鐗堟湰妫�鏌ュ畾鏃跺櫒
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js b/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js
new file mode 100644
index 0000000..12af838
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mixins/handleTableHt.js
@@ -0,0 +1,141 @@
+/***
+<div ref="boxOutWrap" class="boxOutWrap">
+
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false"
+
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+ <div ref="actionBar" class="actionBar">
+
+
+ <s-table :scroll="{x: true,y:tableHeight}"
+
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+
+ export default {
+ mixins: [setTableHtMixin],
+
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+
+
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+
+ *
+ */
+export default {
+ data() {
+ return {
+ tableHeight: 100
+ }
+ },
+ // watch: {
+ // $route: {
+ // handler: function (route, oldRoute) {
+ // this.setTableHeight()
+ // window.addEventListener('resize', this.setTableHeight)
+ // },
+ // immediate: true
+ // }
+ // },
+ methods: {
+ //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ handleTableHt() {
+ this.$nextTick(() => {
+ if (!this.$refs.boxOutWrap) {
+ console.log("娌℃湁DOM:boxOutWrap,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+ return
+ }
+ if (!this.$refs.boxForm) {
+ console.log("娌℃湁DOM:boxForm,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+ return
+ }
+ if (!this.$refs.actionBar) {
+ console.log("娌℃湁DOM:actionBar,鏃犳硶鑷姩璁$畻琛ㄦ牸楂樺害")
+ return
+ }
+ let mainTableHt = 0
+ // let t_footer = 40 //搴曢儴鐗堟潈
+ // let t_head = 55 //椤堕儴鏍�
+ let t_boxOutWrap = 0 //鏈�澶х殑鐩掑瓙
+ let t_tablePage = 24.5 //琛ㄦ牸鍒嗛〉
+ let t_formhead = 0 //form
+ if (this.$refs.boxOutWrap) {
+ // form澶х洅瀛愮殑楂樺害
+ t_boxOutWrap = this.$refs.boxOutWrap.clientHeight
+ }
+ if (this.$refs.boxForm) {
+ // form澶х洅瀛愮殑楂樺害
+ t_formhead = this.$refs.boxForm.clientHeight || 0
+ }
+ let t_actionBar = 0
+ if (this.$refs.actionBar) {
+ //鎿嶄綔鏍�32
+ t_actionBar = this.$refs.actionBar.clientHeight || 0
+ }
+ // mainTableHt = document.documentElement.clientHeight - t_head - t_formhead - t_tablePage - t_actionBar - t_footer
+ mainTableHt = t_boxOutWrap - t_formhead - t_tablePage - t_actionBar
+ mainTableHt = mainTableHt - 120 //鍑忔帀鍏朵粬闂撮殭 padding
+ console.log('鏈�澶х殑鐩掑瓙' + t_boxOutWrap)
+ console.log('form楂�' + t_formhead)
+ console.log('琛ㄦ牸鎿嶄綔鏍忛珮' + t_actionBar)
+ console.log('琛ㄦ牸楂樺害锛�' + mainTableHt)
+ if (mainTableHt <= 0) {
+ mainTableHt = 30
+ }
+ // this.tableHeight = mainTableHt + 'px'
+ this.tableHeight = mainTableHt
+
+ })
+ },
+ }
+ // async activated () {
+ // if (this.ready || this.$Config.ready === 0) {
+ // this.setTableHeight()
+ // window.addEventListener('resize', this.setTableHeight)
+ // }
+ // this.ready = true
+ // this.$Config.ready++
+ // },
+ // deactivated () {
+ // window.removeEventListener('resize', this.setTableHeight)
+ // },
+ // destroyed () {
+ // window.removeEventListener('resize', this.setTableHeight)
+ // }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/index.js b/iWare_RawMaterialWarehouse_Web/src/mock/index.js
new file mode 100644
index 0000000..63ed127
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/index.js
@@ -0,0 +1,21 @@
+import { isIE } from '@/utils/util'
+
+// 鍒ゆ柇鐜涓嶆槸 prod 鎴栬�� preview 鏄� true 鏃讹紝鍔犺浇 mock 鏈嶅姟
+if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true') {
+ if (isIE()) {
+ console.error('[antd-pro] ERROR: `mockjs` NOT SUPPORT `IE` PLEASE DO NOT USE IN `production` ENV.')
+ }
+ // 浣跨敤鍚屾鍔犺浇渚濊禆
+ // 闃叉 vuex 涓殑 GetInfo 鏃╀簬 mock 杩愯锛屽鑷存棤娉� mock 璇锋眰杩斿洖缁撴灉
+ const Mock = require('mockjs2')
+ require('./services/auth')
+ require('./services/user')
+ require('./services/manage')
+ require('./services/other')
+ require('./services/tagCloud')
+ require('./services/article')
+
+ Mock.setup({
+ timeout: 800 // setter delay time
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js
new file mode 100644
index 0000000..81e1b9a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/article.js
@@ -0,0 +1,88 @@
+import Mock from 'mockjs2'
+import { builder, getQueryParameters } from '../util'
+
+const titles = [
+ 'Alipay',
+ 'Angular',
+ 'Ant Design',
+ 'iWare.Wms',
+ 'Bootstrap',
+ 'React',
+ 'Vue',
+ 'Webpack'
+]
+
+const avatar = ['https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png'
+]
+
+const covers = [
+ 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
+ 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png'
+]
+
+const owner = [
+ '浠樺皬灏�',
+ '鍚村姞濂�',
+ '鍛ㄦ槦鏄�',
+ '鏋椾笢涓�',
+ '鏇蹭附涓�'
+]
+
+const content = '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆傝殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�'
+const description = '鍦ㄤ腑鍙颁骇鍝佺殑鐮斿彂杩囩▼涓紝浼氬嚭鐜颁笉鍚岀殑璁捐瑙勮寖鍜屽疄鐜版柟寮忥紝浣嗗叾涓線寰�瀛樺湪寰堝绫讳技鐨勯〉闈㈠拰缁勪欢锛岃繖浜涚被浼肩殑缁勪欢浼氳鎶界鎴愪竴濂楁爣鍑嗚鑼冦��'
+const href = 'https://ant.design'
+
+const article = (options) => {
+ const queryParameters = getQueryParameters(options)
+ if (queryParameters && !queryParameters.count) {
+ queryParameters.count = 5
+ }
+ const data = []
+ for (let i = 0; i < queryParameters.count; i++) {
+ const tmpKey = i + 1
+ const num = parseInt(Math.random() * (4 + 1), 10)
+ data.push({
+ id: tmpKey,
+ avatar: avatar[num],
+ owner: owner[num],
+ content: content,
+ star: Mock.mock('@integer(1, 999)'),
+ percent: Mock.mock('@integer(1, 999)'),
+ like: Mock.mock('@integer(1, 999)'),
+ message: Mock.mock('@integer(1, 999)'),
+ description: description,
+ href: href,
+ title: titles[ i % 8 ],
+ updatedAt: Mock.mock('@datetime'),
+ members: [
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ],
+ activeUser: Math.ceil(Math.random() * 100000) + 100000,
+ newUser: Math.ceil(Math.random() * 1000) + 1000,
+ cover: parseInt(i / 4, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)]
+ })
+ }
+ return builder(data)
+}
+
+Mock.mock(/\/list\/article/, 'get', article)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js
new file mode 100644
index 0000000..717a72b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/auth.js
@@ -0,0 +1,49 @@
+import Mock from 'mockjs2'
+import { builder, getBody } from '../util'
+
+const username = ['admin', 'super']
+// 寮虹‖瑕佹眰 ant.design 鐩稿悓瀵嗙爜
+// '21232f297a57a5a743894a0e4a801fc3',
+const password = ['8914de686ab28dc22f30d3d8e107ff6c'] // admin, ant.design
+
+const login = (options) => {
+ const body = getBody(options)
+ if (!username.includes(body.username) || !password.includes(body.password)) {
+ return builder({ isLogin: true }, '璐︽埛鎴栧瘑鐮侀敊璇�', 401)
+ }
+
+ return builder({
+ 'id': Mock.mock('@guid'),
+ 'name': Mock.mock('@name'),
+ 'username': 'admin',
+ 'password': '',
+ 'avatar': 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png',
+ 'status': 1,
+ 'telephone': '',
+ 'lastLoginIp': '27.154.74.117',
+ 'lastLoginTime': 1534837621348,
+ 'creatorId': 'admin',
+ 'createTime': 1497160610259,
+ 'deleted': 0,
+ 'roleId': 'admin',
+ 'lang': 'zh-CN',
+ 'token': '4291d7da9005377ec9aec4a71ea837f'
+ }, '', 200, { 'Custom-Header': Mock.mock('@guid') })
+}
+
+const logout = () => {
+ return builder({}, '[娴嬭瘯鎺ュ彛] 娉ㄩ攢鎴愬姛')
+}
+
+const smsCaptcha = () => {
+ return builder({ captcha: Mock.mock('@integer(10000, 99999)') })
+}
+
+const twofactor = () => {
+ return builder({ stepCode: Mock.mock('@integer(0, 1)') })
+}
+
+Mock.mock(/\/auth\/login/, 'post', login)
+Mock.mock(/\/auth\/logout/, 'post', logout)
+Mock.mock(/\/account\/sms/, 'post', smsCaptcha)
+Mock.mock(/\/auth\/2step-code/, 'post', twofactor)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js
new file mode 100644
index 0000000..9b941e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/manage.js
@@ -0,0 +1,252 @@
+import Mock from 'mockjs2'
+import { builder, getQueryParameters } from '../util'
+
+const totalCount = 5701
+
+const serverList = (options) => {
+ const parameters = getQueryParameters(options)
+
+ const result = []
+ const pageNo = parseInt(parameters.pageNo)
+ const pageSize = parseInt(parameters.pageSize)
+ const totalPage = Math.ceil(totalCount / pageSize)
+ const key = (pageNo - 1) * pageSize
+ const next = (pageNo >= totalPage ? (totalCount % pageSize) : pageSize) + 1
+
+ for (let i = 1; i < next; i++) {
+ const tmpKey = key + i
+ result.push({
+ key: tmpKey,
+ id: tmpKey,
+ no: 'No ' + tmpKey,
+ description: '杩欐槸涓�娈垫弿杩�',
+ callNo: Mock.mock('@integer(1, 999)'),
+ status: Mock.mock('@integer(0, 3)'),
+ updatedAt: Mock.mock('@datetime'),
+ editable: false
+ })
+ }
+
+ return builder({
+ pageSize: pageSize,
+ pageNo: pageNo,
+ totalCount: totalCount,
+ totalPage: totalPage,
+ data: result
+ })
+}
+
+const projects = () => {
+ return builder({
+ 'data': [{
+ id: 1,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+ title: 'Alipay',
+ description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 2,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+ title: 'Angular',
+ description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 3,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+ title: 'Ant Design',
+ description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 4,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+ title: 'iWare.Wms',
+ description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 5,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+ title: 'Bootstrap',
+ description: '鍑涘啲灏嗚嚦',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 6,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+ title: 'Vue',
+ description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ }
+ ],
+ 'pageSize': 10,
+ 'pageNo': 0,
+ 'totalPage': 6,
+ 'totalCount': 57
+ })
+}
+
+const activity = () => {
+ return builder([{
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鏇存柊',
+ event: '鐣粍璁″垝'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '钃濊帗閰�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鏇存柊',
+ event: '鐣粍璁″垝'
+ },
+ time: '2018-08-23 09:35:37'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鍒涘缓',
+ event: '鐣粍璁″垝'
+ },
+ time: '2017-05-27 00:00:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '鏇蹭附涓�',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: '鏇存柊',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: 'created',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '鏇蹭附涓�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: 'created',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ }
+ ])
+}
+
+const teams = () => {
+ return builder([{
+ id: 1,
+ name: '绉戝鎼爾缁�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ {
+ id: 2,
+ name: '绋嬪簭鍛樻棩甯�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+ },
+ {
+ id: 1,
+ name: '璁捐澶╁洟',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+ },
+ {
+ id: 1,
+ name: '涓簩灏戝コ鍥�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+ },
+ {
+ id: 1,
+ name: '楠椾綘瀛﹁绠楁満',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+ }
+ ])
+}
+
+const radar = () => {
+ return builder([{
+ item: '寮曠敤',
+ '涓汉': 70,
+ '鍥㈤槦': 30,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '鍙g',
+ '涓汉': 60,
+ '鍥㈤槦': 70,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '浜ч噺',
+ '涓汉': 50,
+ '鍥㈤槦': 60,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '璐$尞',
+ '涓汉': 40,
+ '鍥㈤槦': 50,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '鐑害',
+ '涓汉': 60,
+ '鍥㈤槦': 70,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '寮曠敤',
+ '涓汉': 70,
+ '鍥㈤槦': 50,
+ '閮ㄩ棬': 40
+ }
+ ])
+}
+
+Mock.mock(/\/service/, 'get', serverList)
+Mock.mock(/\/list\/search\/projects/, 'get', projects)
+Mock.mock(/\/workplace\/activity/, 'get', activity)
+Mock.mock(/\/workplace\/teams/, 'get', teams)
+Mock.mock(/\/workplace\/radar/, 'get', radar)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js
new file mode 100644
index 0000000..56e2dd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/other.js
@@ -0,0 +1,973 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+const orgTree = () => {
+ return builder([{
+ 'key': 'key-01',
+ 'title': '鐮斿彂涓績',
+ 'icon': 'mail',
+ 'children': [{
+ 'key': 'key-01-01',
+ 'title': '鍚庣缁�',
+ 'icon': null,
+ 'group': true,
+ children: [{
+ 'key': 'key-01-01-01',
+ 'title': 'JAVA',
+ 'icon': null
+ },
+ {
+ 'key': 'key-01-01-02',
+ 'title': 'PHP',
+ 'icon': null
+ },
+ {
+ 'key': 'key-01-01-03',
+ 'title': 'Golang',
+ 'icon': null
+ }
+ ]
+ }, {
+ 'key': 'key-01-02',
+ 'title': '鍓嶇缁�',
+ 'icon': null,
+ 'group': true,
+ children: [{
+ 'key': 'key-01-02-01',
+ 'title': 'React',
+ 'icon': null
+ },
+ {
+ 'key': 'key-01-02-02',
+ 'title': 'Vue',
+ 'icon': null
+ },
+ {
+ 'key': 'key-01-02-03',
+ 'title': 'Angular',
+ 'icon': null
+ }
+ ]
+ }]
+ }, {
+ 'key': 'key-02',
+ 'title': '璐㈠姟閮�',
+ 'icon': 'dollar',
+ 'children': [{
+ 'key': 'key-02-01',
+ 'title': '浼氳鏍哥畻',
+ 'icon': null
+ }, {
+ 'key': 'key-02-02',
+ 'title': '鎴愭湰鎺у埗',
+ 'icon': null
+ }, {
+ 'key': 'key-02-03',
+ 'title': '鍐呴儴鎺у埗',
+ 'icon': null,
+ 'children': [{
+ 'key': 'key-02-03-01',
+ 'title': '璐㈠姟鍒跺害寤鸿',
+ 'icon': null
+ },
+ {
+ 'key': 'key-02-03-02',
+ 'title': '浼氳鏍哥畻',
+ 'icon': null
+ }
+ ]
+ }]
+ }])
+}
+
+const role = () => {
+ return builder({
+ 'data': [{
+ 'id': 'admin',
+ 'name': '绠$悊鍛�',
+ 'describe': '鎷ユ湁鎵�鏈夋潈闄�',
+ 'status': 1,
+ 'creatorId': 'system',
+ 'createTime': 1497160610259,
+ 'deleted': 0,
+ 'permissions': [{
+ 'roleId': 'admin',
+ 'permissionId': 'comment',
+ 'permissionName': '璇勮绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': ['delete', 'edit'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'member',
+ 'permissionName': '浼氬憳绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['query', 'get', 'edit', 'delete'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'menu',
+ 'permissionName': '鑿滃崟绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'import'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'order',
+ 'permissionName': '璁㈠崟绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['query', 'add', 'get'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'permission',
+ 'permissionName': '鏉冮檺绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'get', 'edit', 'delete'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'role',
+ 'permissionName': '瑙掕壊绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'test',
+ 'permissionName': '娴嬭瘯鏉冮檺',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'user',
+ 'permissionName': '鐢ㄦ埛绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'export',
+ 'describe': '瀵煎嚭',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'get'],
+ 'dataAccess': null
+ }
+ ]
+ },
+ {
+ 'id': 'svip',
+ 'name': 'SVIP',
+ 'describe': '瓒呯骇浼氬憳',
+ 'status': 1,
+ 'creatorId': 'system',
+ 'createTime': 1532417744846,
+ 'deleted': 0,
+ 'permissions': [{
+ 'roleId': 'admin',
+ 'permissionId': 'comment',
+ 'permissionName': '璇勮绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'get', 'delete'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'member',
+ 'permissionName': '浼氬憳绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'query', 'get'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'menu',
+ 'permissionName': '鑿滃崟绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'get'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'order',
+ 'permissionName': '璁㈠崟绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'query'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'permission',
+ 'permissionName': '鏉冮檺绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add', 'get', 'edit'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'role',
+ 'permissionName': '瑙掕壊绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'test',
+ 'permissionName': '娴嬭瘯鏉冮檺',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': ['add', 'edit'],
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'admin',
+ 'permissionId': 'user',
+ 'permissionName': '鐢ㄦ埛绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'edit',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['add'],
+ 'dataAccess': null
+ }
+ ]
+ },
+ {
+ 'id': 'user',
+ 'name': '鏅�氫細鍛�',
+ 'describe': '鏅�氱敤鎴凤紝鍙兘鏌ヨ',
+ 'status': 1,
+ 'creatorId': 'system',
+ 'createTime': 1497160610259,
+ 'deleted': 0,
+ 'permissions': [{
+ 'roleId': 'user',
+ 'permissionId': 'comment',
+ 'permissionName': '璇勮绠$悊',
+ 'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+ 'actionEntitySet': [{
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': ['query'],
+ 'dataAccess': null
+ },
+
+ {
+ 'roleId': 'user',
+ 'permissionId': 'marketing',
+ 'permissionName': '钀ラ攢绠$悊',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'user',
+ 'permissionId': 'member',
+ 'permissionName': '浼氬憳绠$悊',
+ 'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+ 'actionEntitySet': [{
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'user',
+ 'permissionId': 'menu',
+ 'permissionName': '鑿滃崟绠$悊',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+
+ {
+ 'roleId': 'user',
+ 'permissionId': 'order',
+ 'permissionName': '璁㈠崟绠$悊',
+ 'actions': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+ 'actionEntitySet': [{
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ },
+ {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }
+ ],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'user',
+ 'permissionId': 'permission',
+ 'permissionName': '鏉冮檺绠$悊',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'user',
+ 'permissionId': 'role',
+ 'permissionName': '瑙掕壊绠$悊',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+
+ {
+ 'roleId': 'user',
+ 'permissionId': 'test',
+ 'permissionName': '娴嬭瘯鏉冮檺',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ },
+ {
+ 'roleId': 'user',
+ 'permissionId': 'user',
+ 'permissionName': '鐢ㄦ埛绠$悊',
+ 'actions': '[]',
+ 'actionEntitySet': [],
+ 'actionList': null,
+ 'dataAccess': null
+ }
+ ]
+ }
+ ],
+ 'pageSize': 10,
+ 'pageNo': 0,
+ 'totalPage': 1,
+ 'totalCount': 5
+ })
+}
+
+const permissionNoPager = () => {
+ return builder([{
+ 'id': 'marketing',
+ 'name': '钀ラ攢绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': null,
+ 'parents': null,
+ 'type': null,
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'member',
+ 'name': '浼氬憳绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'menu',
+ 'name': '鑿滃崟绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'import',
+ 'get',
+ 'edit'
+ ]
+ },
+ {
+ 'id': 'order',
+ 'name': '璁㈠崟绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'permission',
+ 'name': '鏉冮檺绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'role',
+ 'name': '瑙掕壊绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'test',
+ 'name': '娴嬭瘯鏉冮檺',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get'
+ ]
+ },
+ {
+ 'id': 'user',
+ 'name': '鐢ㄦ埛绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get'
+ ]
+ }
+ ])
+}
+
+const permissions = () => {
+ return builder({
+ 'data': [{
+ 'id': 'marketing',
+ 'name': '钀ラ攢绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': null,
+ 'parents': null,
+ 'type': null,
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'member',
+ 'name': '浼氬憳绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'menu',
+ 'name': '鑿滃崟绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'import',
+ 'get',
+ 'edit'
+ ]
+ },
+ {
+ 'id': 'order',
+ 'name': '璁㈠崟绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'query',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'permission',
+ 'name': '鏉冮檺绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'role',
+ 'name': '瑙掕壊绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"鏌ヨ"},{"action":"edit","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get',
+ 'edit',
+ 'delete'
+ ]
+ },
+ {
+ 'id': 'test',
+ 'name': '娴嬭瘯鏉冮檺',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get'
+ ]
+ },
+ {
+ 'id': 'user',
+ 'name': '鐢ㄦ埛绠$悊',
+ 'describe': null,
+ 'status': 1,
+ 'actionData': '[{"action":"add","describe":"鏂板","defaultCheck":false},{"action":"get","describe":"鏌ヨ","defaultCheck":false}]',
+ 'sptDaTypes': null,
+ 'optionalFields': '[]',
+ 'parents': null,
+ 'type': 'default',
+ 'deleted': 0,
+ 'actions': [
+ 'add',
+ 'get'
+ ]
+ }
+ ],
+ 'pageSize': 10,
+ 'pageNo': 0,
+ 'totalPage': 1,
+ 'totalCount': 5
+ })
+}
+
+Mock.mock(/\/org\/tree/, 'get', orgTree)
+Mock.mock(/\/role/, 'get', role)
+Mock.mock(/\/permission\/no-pager/, 'get', permissionNoPager)
+Mock.mock(/\/permission/, 'get', permissions)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js
new file mode 100644
index 0000000..63a2e06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/tagCloud.js
@@ -0,0 +1,9 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+//
+const tagCloudData = () => {
+ return builder([{ 'value': 9, 'name': 'AntV' }, { 'value': 8, 'name': 'F2' }, { 'value': 8, 'name': 'G2' }, { 'value': 8, 'name': 'G6' }, { 'value': 8, 'name': 'DataSet' }, { 'value': 8, 'name': '澧ㄨ�呭闄�' }, { 'value': 6, 'name': 'Analysis' }, { 'value': 6, 'name': 'Data Mining' }, { 'value': 6, 'name': 'Data Vis' }, { 'value': 6, 'name': 'Design' }, { 'value': 6, 'name': 'Grammar' }, { 'value': 6, 'name': 'Graphics' }, { 'value': 6, 'name': 'Graph' }, { 'value': 6, 'name': 'Hierarchy' }, { 'value': 6, 'name': 'Labeling' }, { 'value': 6, 'name': 'Layout' }, { 'value': 6, 'name': 'Quantitative' }, { 'value': 6, 'name': 'Relation' }, { 'value': 6, 'name': 'Statistics' }, { 'value': 6, 'name': '鍙鍖�' }, { 'value': 6, 'name': '鏁版嵁' }, { 'value': 6, 'name': '鏁版嵁鍙鍖�' }, { 'value': 4, 'name': 'Arc Diagram' }, { 'value': 4, 'name': 'Bar Chart' }, { 'value': 4, 'name': 'Canvas' }, { 'value': 4, 'name': 'Chart' }, { 'value': 4, 'name': 'DAG' }, { 'value': 4, 'name': 'DG' }, { 'value': 4, 'name': 'Facet' }, { 'value': 4, 'name': 'Geo' }, { 'value': 4, 'name': 'Line' }, { 'value': 4, 'name': 'MindMap' }, { 'value': 4, 'name': 'Pie' }, { 'value': 4, 'name': 'Pizza Chart' }, { 'value': 4, 'name': 'Punch Card' }, { 'value': 4, 'name': 'SVG' }, { 'value': 4, 'name': 'Sunburst' }, { 'value': 4, 'name': 'Tree' }, { 'value': 4, 'name': 'UML' }, { 'value': 3, 'name': 'Chart' }, { 'value': 3, 'name': 'View' }, { 'value': 3, 'name': 'Geom' }, { 'value': 3, 'name': 'Shape' }, { 'value': 3, 'name': 'Scale' }, { 'value': 3, 'name': 'Animate' }, { 'value': 3, 'name': 'Global' }, { 'value': 3, 'name': 'Slider' }, { 'value': 3, 'name': 'Connector' }, { 'value': 3, 'name': 'Transform' }, { 'value': 3, 'name': 'Util' }, { 'value': 3, 'name': 'DomUtil' }, { 'value': 3, 'name': 'MatrixUtil' }, { 'value': 3, 'name': 'PathUtil' }, { 'value': 3, 'name': 'G' }, { 'value': 3, 'name': '2D' }, { 'value': 3, 'name': '3D' }, { 'value': 3, 'name': 'Line' }, { 'value': 3, 'name': 'Area' }, { 'value': 3, 'name': 'Interval' }, { 'value': 3, 'name': 'Schema' }, { 'value': 3, 'name': 'Edge' }, { 'value': 3, 'name': 'Polygon' }, { 'value': 3, 'name': 'Heatmap' }, { 'value': 3, 'name': 'Render' }, { 'value': 3, 'name': 'Tooltip' }, { 'value': 3, 'name': 'Axis' }, { 'value': 3, 'name': 'Guide' }, { 'value': 3, 'name': 'Coord' }, { 'value': 3, 'name': 'Legend' }, { 'value': 3, 'name': 'Path' }, { 'value': 3, 'name': 'Helix' }, { 'value': 3, 'name': 'Theta' }, { 'value': 3, 'name': 'Rect' }, { 'value': 3, 'name': 'Polar' }, { 'value': 3, 'name': 'Dsv' }, { 'value': 3, 'name': 'Csv' }, { 'value': 3, 'name': 'Tsv' }, { 'value': 3, 'name': 'GeoJSON' }, { 'value': 3, 'name': 'TopoJSON' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Filter' }, { 'value': 3, 'name': 'Map' }, { 'value': 3, 'name': 'Pick' }, { 'value': 3, 'name': 'Rename' }, { 'value': 3, 'name': 'Reverse' }, { 'value': 3, 'name': 'sort' }, { 'value': 3, 'name': 'Subset' }, { 'value': 3, 'name': 'Partition' }, { 'value': 3, 'name': 'Imputation' }, { 'value': 3, 'name': 'Fold' }, { 'value': 3, 'name': 'Aggregate' }, { 'value': 3, 'name': 'Proportion' }, { 'value': 3, 'name': 'Histogram' }, { 'value': 3, 'name': 'Quantile' }, { 'value': 3, 'name': 'Treemap' }, { 'value': 3, 'name': 'Hexagon' }, { 'value': 3, 'name': 'Binning' }, { 'value': 3, 'name': 'kernel' }, { 'value': 3, 'name': 'Regression' }, { 'value': 3, 'name': 'Density' }, { 'value': 3, 'name': 'Sankey' }, { 'value': 3, 'name': 'Voronoi' }, { 'value': 3, 'name': 'Projection' }, { 'value': 3, 'name': 'Centroid' }, { 'value': 3, 'name': 'H5' }, { 'value': 3, 'name': 'Mobile' }, { 'value': 3, 'name': 'K绾垮浘' }, { 'value': 3, 'name': '鍏崇郴鍥�' }, { 'value': 3, 'name': '鐑涘舰鍥�' }, { 'value': 3, 'name': '鑲$エ鍥�' }, { 'value': 3, 'name': '鐩存柟鍥�' }, { 'value': 3, 'name': '閲戝瓧濉斿浘' }, { 'value': 3, 'name': '鍒嗛潰' }, { 'value': 3, 'name': '鍗椾竵鏍煎皵鐜懓鍥�' }, { 'value': 3, 'name': '楗煎浘' }, { 'value': 3, 'name': '绾垮浘' }, { 'value': 3, 'name': '鐐瑰浘' }, { 'value': 3, 'name': '鏁g偣鍥�' }, { 'value': 3, 'name': '瀛愬脊鍥�' }, { 'value': 3, 'name': '鏌辩姸鍥�' }, { 'value': 3, 'name': '浠〃鐩�' }, { 'value': 3, 'name': '姘旀场鍥�' }, { 'value': 3, 'name': '婕忔枟鍥�' }, { 'value': 3, 'name': '鐑姏鍥�' }, { 'value': 3, 'name': '鐜夌帵鍥�' }, { 'value': 3, 'name': '鐩存柟鍥�' }, { 'value': 3, 'name': '鐭╁舰鏍戝浘' }, { 'value': 3, 'name': '绠卞舰鍥�' }, { 'value': 3, 'name': '鑹插潡鍥�' }, { 'value': 3, 'name': '铻烘棆鍥�' }, { 'value': 3, 'name': '璇嶄簯' }, { 'value': 3, 'name': '璇嶄簯鍥�' }, { 'value': 3, 'name': '闆疯揪鍥�' }, { 'value': 3, 'name': '闈㈢Н鍥�' }, { 'value': 3, 'name': '椹禌鍏嬪浘' }, { 'value': 3, 'name': '鐩掗』鍥�' }, { 'value': 3, 'name': '鍧愭爣杞�' }, { 'value': 3, 'name': '' }, { 'value': 3, 'name': 'Jacques Bertin' }, { 'value': 3, 'name': 'Leland Wilkinson' }, { 'value': 3, 'name': 'William Playfair' }, { 'value': 3, 'name': '鍏宠仈' }, { 'value': 3, 'name': '鍒嗗竷' }, { 'value': 3, 'name': '鍖洪棿' }, { 'value': 3, 'name': '鍗犳瘮' }, { 'value': 3, 'name': '鍦板浘' }, { 'value': 3, 'name': '鏃堕棿' }, { 'value': 3, 'name': '姣旇緝' }, { 'value': 3, 'name': '娴佺▼' }, { 'value': 3, 'name': '瓒嬪娍' }, { 'value': 2, 'name': '浜﹀彾' }, { 'value': 2, 'name': '鍐嶉' }, { 'value': 2, 'name': '瀹岀櫧' }, { 'value': 2, 'name': '宸存��' }, { 'value': 2, 'name': '寮犲垵灏�' }, { 'value': 2, 'name': '寰℃湳' }, { 'value': 2, 'name': '鏈夌敯' }, { 'value': 2, 'name': '娌夐奔' }, { 'value': 2, 'name': '鐜変集' }, { 'value': 2, 'name': '鐢诲悍' }, { 'value': 2, 'name': '绁��' }, { 'value': 2, 'name': '缁濅簯' }, { 'value': 2, 'name': '缃楀' }, { 'value': 2, 'name': '钀у簡' }, { 'value': 2, 'name': '钁g強鐝�' }, { 'value': 2, 'name': '闄嗘矇' }, { 'value': 2, 'name': '椤惧��' }, { 'value': 2, 'name': 'Domo' }, { 'value': 2, 'name': 'GPL' }, { 'value': 2, 'name': 'PAI' }, { 'value': 2, 'name': 'SPSS' }, { 'value': 2, 'name': 'SYSTAT' }, { 'value': 2, 'name': 'Tableau' }, { 'value': 2, 'name': 'D3' }, { 'value': 2, 'name': 'Vega' }, { 'value': 2, 'name': '缁熻鍥捐〃' }])
+}
+
+Mock.mock(/\/data\/antv\/tag-cloud/, 'get', tagCloudData)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js b/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js
new file mode 100644
index 0000000..ad0747c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/services/user.js
@@ -0,0 +1,768 @@
+import Mock from 'mockjs2'
+import { builder } from '../util'
+
+const info = (options) => {
+ const userInfo = {
+ 'id': '4291d7da9005377ec9aec4a71ea837f',
+ 'name': '澶╅噹杩滃瓙',
+ 'username': 'admin',
+ 'password': '',
+ 'avatar': '/avatar2.jpg',
+ 'status': 1,
+ 'telephone': '',
+ 'lastLoginIp': '27.154.74.117',
+ 'lastLoginTime': 1534837621348,
+ 'creatorId': 'admin',
+ 'createTime': 1497160610259,
+ 'merchantCode': 'TLif2btpzg079h15bk',
+ 'deleted': 0,
+ 'roleId': 'admin',
+ 'role': {}
+ }
+ // role
+ const roleObj = {
+ 'id': 'admin',
+ 'name': '绠$悊鍛�',
+ 'describe': '鎷ユ湁鎵�鏈夋潈闄�',
+ 'status': 1,
+ 'creatorId': 'system',
+ 'createTime': 1497160610259,
+ 'deleted': 0,
+ 'permissions': [{
+ 'roleId': 'admin',
+ 'permissionId': 'dashboard',
+ 'permissionName': '浠〃鐩�',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'exception',
+ 'permissionName': '寮傚父椤甸潰鏉冮檺',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'result',
+ 'permissionName': '缁撴灉鏉冮檺',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'profile',
+ 'permissionName': '璇︾粏椤垫潈闄�',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'table',
+ 'permissionName': '琛ㄦ牸鏉冮檺',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'form.vue',
+ 'permissionName': '琛ㄥ崟鏉冮檺',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'order',
+ 'permissionName': '璁㈠崟绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'permission',
+ 'permissionName': '鏉冮檺绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'role',
+ 'permissionName': '瑙掕壊绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'table',
+ 'permissionName': '妗屽瓙绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"query","defaultCheck":false,"describe":"鏌ヨ"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'query',
+ 'describe': '鏌ヨ',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }, {
+ 'roleId': 'admin',
+ 'permissionId': 'user',
+ 'permissionName': '鐢ㄦ埛绠$悊',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }, {
+ 'action': 'export',
+ 'describe': '瀵煎嚭',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ }]
+ }
+
+ roleObj.permissions.push({
+ 'roleId': 'admin',
+ 'permissionId': 'support',
+ 'permissionName': '瓒呯骇妯″潡',
+ 'actions': '[{"action":"add","defaultCheck":false,"describe":"鏂板"},{"action":"import","defaultCheck":false,"describe":"瀵煎叆"},{"action":"get","defaultCheck":false,"describe":"璇︽儏"},{"action":"update","defaultCheck":false,"describe":"淇敼"},{"action":"delete","defaultCheck":false,"describe":"鍒犻櫎"},{"action":"export","defaultCheck":false,"describe":"瀵煎嚭"}]',
+ 'actionEntitySet': [{
+ 'action': 'add',
+ 'describe': '鏂板',
+ 'defaultCheck': false
+ }, {
+ 'action': 'import',
+ 'describe': '瀵煎叆',
+ 'defaultCheck': false
+ }, {
+ 'action': 'get',
+ 'describe': '璇︽儏',
+ 'defaultCheck': false
+ }, {
+ 'action': 'update',
+ 'describe': '淇敼',
+ 'defaultCheck': false
+ }, {
+ 'action': 'delete',
+ 'describe': '鍒犻櫎',
+ 'defaultCheck': false
+ }, {
+ 'action': 'export',
+ 'describe': '瀵煎嚭',
+ 'defaultCheck': false
+ }],
+ 'actionList': null,
+ 'dataAccess': null
+ })
+
+ userInfo.role = roleObj
+ return builder(userInfo)
+}
+
+const userNav = (options) => {
+ const nav = [
+ // dashboard
+ {
+ 'name': 'dashboard',
+ 'parentId': 0,
+ 'id': 1,
+ 'meta': {
+ 'icon': 'dashboard',
+ 'title': '浠〃鐩�77',
+ 'show': true
+ },
+ 'component': 'RouteView',
+ 'redirect': '/dashboard/workplace'
+ },
+ {
+ 'name': 'workplace',
+ 'parentId': 1,
+ 'id': 7,
+ 'meta': {
+ 'title': '宸ヤ綔鍙�',
+ 'show': true
+ },
+ 'component': 'Workplace'
+ },
+ {
+ 'name': 'monitor',
+ 'path': 'https://www.baidu.com/',
+ 'parentId': 1,
+ 'id': 3,
+ 'meta': {
+ 'title': '鐩戞帶椤碉紙澶栭儴锛�',
+ 'target': '_blank',
+ 'show': true
+ }
+ },
+ {
+ 'name': 'Analysis',
+ 'parentId': 1,
+ 'id': 2,
+ 'meta': {
+ 'title': '鍒嗘瀽椤�',
+ 'show': true
+ },
+ 'component': 'Analysis',
+ 'path': '/dashboard/analysis'
+ },
+ {
+ 'name': 'tests',
+ 'parentId': 1,
+ 'id': 8,
+ 'meta': {
+ 'title': '娴嬭瘯鍔熻兘',
+ 'show': true
+ },
+ 'component': 'TestWork'
+ },
+
+ // form
+ {
+ 'name': 'form.vue',
+ 'parentId': 0,
+ 'id': 10,
+ 'meta': {
+ 'icon': 'form.vue',
+ 'title': '琛ㄥ崟椤�'
+ },
+ 'redirect': '/form/base-form',
+ 'component': 'PageView'
+ },
+ {
+ 'name': 'basic-form',
+ 'parentId': 10,
+ 'id': 6,
+ 'meta': {
+ 'title': '鍩虹琛ㄥ崟'
+ },
+ 'component': 'BasicForm'
+ },
+ {
+ 'name': 'step-form',
+ 'parentId': 10,
+ 'id': 5,
+ 'meta': {
+ 'title': '鍒嗘琛ㄥ崟'
+ },
+ 'component': 'StepForm'
+ },
+ {
+ 'name': 'advanced-form',
+ 'parentId': 10,
+ 'id': 4,
+ 'meta': {
+ 'title': '楂樼骇琛ㄥ崟'
+ },
+ 'component': 'AdvanceForm'
+ },
+
+ // list
+ {
+ 'name': 'list',
+ 'parentId': 0,
+ 'id': 10010,
+ 'meta': {
+ 'icon': 'table',
+ 'title': '鍒楄〃椤�',
+ 'show': true
+ },
+ 'redirect': '/list/table-list',
+ 'component': 'PageView'
+ },
+ {
+ 'name': 'table-list',
+ 'parentId': 10010,
+ 'id': 10011,
+ 'path': '/list/table-list/:pageNo([1-9]\\d*)?',
+ 'meta': {
+ 'title': '鏌ヨ琛ㄦ牸',
+ 'show': true
+ },
+ 'component': 'TableList'
+ },
+ {
+ 'name': 'basic-list',
+ 'parentId': 10010,
+ 'id': 10012,
+ 'meta': {
+ 'title': '鏍囧噯鍒楄〃',
+ 'show': true
+ },
+ 'component': 'StandardList'
+ },
+ {
+ 'name': 'card',
+ 'parentId': 10010,
+ 'id': 10013,
+ 'meta': {
+ 'title': '鍗$墖鍒楄〃',
+ 'show': true
+ },
+ 'component': 'CardList'
+ },
+ {
+ 'name': 'search',
+ 'parentId': 10010,
+ 'id': 10014,
+ 'meta': {
+ 'title': '鎼滅储鍒楄〃',
+ 'show': true
+ },
+ 'redirect': '/list/search/article',
+ 'component': 'SearchLayout'
+ },
+ {
+ 'name': 'article',
+ 'parentId': 10014,
+ 'id': 10015,
+ 'meta': {
+ 'title': '鎼滅储鍒楄〃锛堟枃绔狅級',
+ 'show': true
+ },
+ 'component': 'SearchArticles'
+ },
+ {
+ 'name': 'project',
+ 'parentId': 10014,
+ 'id': 10016,
+ 'meta': {
+ 'title': '鎼滅储鍒楄〃锛堥」鐩級',
+ 'show': true
+ },
+ 'component': 'SearchProjects'
+ },
+ {
+ 'name': 'application',
+ 'parentId': 10014,
+ 'id': 10017,
+ 'meta': {
+ 'title': '鎼滅储鍒楄〃锛堝簲鐢級',
+ 'show': true
+ },
+ 'component': 'SearchApplications'
+ },
+
+ // profile
+ {
+ 'name': 'profile',
+ 'parentId': 0,
+ 'id': 10018,
+ 'meta': {
+ 'title': '璇︽儏椤�',
+ 'icon': 'profile',
+ 'show': true
+ },
+ 'redirect': '/profile/basic',
+ 'component': 'RouteView'
+ },
+ {
+ 'name': 'basic',
+ 'parentId': 10018,
+ 'id': 10019,
+ 'meta': {
+ 'title': '鍩虹璇︽儏椤�',
+ 'show': true
+ },
+ 'component': 'ProfileBasic'
+ },
+ {
+ 'name': 'advanced',
+ 'parentId': 10018,
+ 'id': 10020,
+ 'meta': {
+ 'title': '楂樼骇璇︽儏椤�',
+ 'show': true
+ },
+ 'component': 'ProfileAdvanced'
+ },
+
+ // result
+ {
+ 'name': 'result',
+ 'parentId': 0,
+ 'id': 10021,
+ 'meta': {
+ 'title': '缁撴灉椤�',
+ 'icon': 'check-circle-o',
+ 'show': true
+ },
+ 'redirect': '/result/success',
+ 'component': 'PageView'
+ },
+ {
+ 'name': 'success',
+ 'parentId': 10021,
+ 'id': 10022,
+ 'meta': {
+ 'title': '鎴愬姛',
+ 'hiddenHeaderContent': true,
+ 'show': true
+ },
+ 'component': 'ResultSuccess'
+ },
+ {
+ 'name': 'fail',
+ 'parentId': 10021,
+ 'id': 10023,
+ 'meta': {
+ 'title': '澶辫触',
+ 'hiddenHeaderContent': true,
+ 'show': true
+ },
+ 'component': 'ResultFail'
+ },
+
+ // Exception
+ {
+ 'name': 'exception',
+ 'parentId': 0,
+ 'id': 10024,
+ 'meta': {
+ 'title': '寮傚父椤�',
+ 'icon': 'warning',
+ 'show': true
+ },
+ 'redirect': '/exception/403',
+ 'component': 'RouteView'
+ },
+ {
+ 'name': '403',
+ 'parentId': 10024,
+ 'id': 10025,
+ 'meta': {
+ 'title': '403',
+ 'show': true
+ },
+ 'component': 'Exception403'
+ },
+ {
+ 'name': '404',
+ 'parentId': 10024,
+ 'id': 10026,
+ 'meta': {
+ 'title': '404',
+ 'show': true
+ },
+ 'component': 'Exception404'
+ },
+ {
+ 'name': '500',
+ 'parentId': 10024,
+ 'id': 10027,
+ 'meta': {
+ 'title': '500',
+ 'show': true
+ },
+ 'component': 'Exception500'
+ },
+
+ // account
+ {
+ 'name': 'account',
+ 'parentId': 0,
+ 'id': 10028,
+ 'meta': {
+ 'title': '涓汉椤�',
+ 'icon': 'user',
+ 'show': true
+ },
+ 'redirect': '/account/center',
+ 'component': 'RouteView'
+ },
+ {
+ 'name': 'center',
+ 'parentId': 10028,
+ 'id': 10029,
+ 'meta': {
+ 'title': '涓汉涓績',
+ 'show': true
+ },
+ 'component': 'AccountCenter'
+ },
+ // 鐗规畩涓夌骇鑿滃崟
+ {
+ 'name': 'settings',
+ 'parentId': 10028,
+ 'id': 10030,
+ 'meta': {
+ 'title': '涓汉璁剧疆',
+ 'hideHeader': true,
+ 'hideChildren': true,
+ 'show': true
+ },
+ 'redirect': '/account/settings/base',
+ 'component': 'AccountSettings'
+ },
+ {
+ 'name': 'BaseSettings',
+ 'path': '/account/settings/base',
+ 'parentId': 10030,
+ 'id': 10031,
+ 'meta': {
+ 'title': '鍩烘湰璁剧疆',
+ 'show': false
+ },
+ 'component': 'BaseSettings'
+ },
+ {
+ 'name': 'SecuritySettings',
+ 'path': '/account/settings/security',
+ 'parentId': 10030,
+ 'id': 10032,
+ 'meta': {
+ 'title': '瀹夊叏璁剧疆',
+ 'show': false
+ },
+ 'component': 'SecuritySettings'
+ },
+ {
+ 'name': 'CustomSettings',
+ 'path': '/account/settings/custom',
+ 'parentId': 10030,
+ 'id': 10033,
+ 'meta': {
+ 'title': '涓�у寲璁剧疆',
+ 'show': false
+ },
+ 'component': 'CustomSettings'
+ },
+ {
+ 'name': 'BindingSettings',
+ 'path': '/account/settings/binding',
+ 'parentId': 10030,
+ 'id': 10034,
+ 'meta': {
+ 'title': '璐︽埛缁戝畾',
+ 'show': false
+ },
+ 'component': 'BindingSettings'
+ },
+ {
+ 'name': 'NotificationSettings',
+ 'path': '/account/settings/notification',
+ 'parentId': 10030,
+ 'id': 10034,
+ 'meta': {
+ 'title': '鏂版秷鎭�氱煡',
+ 'show': false
+ },
+ 'component': 'NotificationSettings'
+ }
+ ]
+ const json = builder(nav)
+ return json
+}
+
+Mock.mock(/\/api\/user\/info/, 'get', info)
+Mock.mock(/\/api\/user\/nav/, 'get', userNav)
diff --git a/iWare_RawMaterialWarehouse_Web/src/mock/util.js b/iWare_RawMaterialWarehouse_Web/src/mock/util.js
new file mode 100644
index 0000000..a4be036
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/mock/util.js
@@ -0,0 +1,38 @@
+const responseBody = {
+ message: '',
+ timestamp: 0,
+ result: null,
+ code: 0
+}
+
+export const builder = (data, message, code = 0, headers = {}) => {
+ responseBody.result = data
+ if (message !== undefined && message !== null) {
+ responseBody.message = message
+ }
+ if (code !== undefined && code !== 0) {
+ responseBody.code = code
+ responseBody._status = code
+ }
+ if (headers !== null && typeof headers === 'object' && Object.keys(headers).length > 0) {
+ responseBody._headers = headers
+ }
+ responseBody.timestamp = new Date().getTime()
+ return responseBody
+}
+
+export const getQueryParameters = (options) => {
+ const url = options.url
+ const search = url.split('?')[1]
+ if (!search) {
+ return {}
+ }
+ return JSON.parse('{"' + decodeURIComponent(search)
+ .replace(/"/g, '\\"')
+ .replace(/&/g, '","')
+ .replace(/=/g, '":"') + '"}')
+}
+
+export const getBody = (options) => {
+ return options.body && JSON.parse(options.body)
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/permission.js b/iWare_RawMaterialWarehouse_Web/src/permission.js
new file mode 100644
index 0000000..7e786a9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/permission.js
@@ -0,0 +1,123 @@
+import Vue from 'vue'
+import router from './router'
+import store from './store'
+
+import NProgress from 'nprogress' // progress bar
+import '@/components/NProgress/nprogress.less' // progress bar custom style
+import { setDocumentTitle, domTitle } from '@/utils/domUtil'
+import { ACCESS_TOKEN, ALL_APPS_MENU } from '@/store/mutation-types'
+
+import { Modal, notification } from 'ant-design-vue' // NProgress Configuration
+import { timeFix } from '@/utils/util'/// es/notification
+import Enumerable from 'linq'
+
+NProgress.configure({ showSpinner: false })
+const whiteList = ['login', 'register', 'registerResult', 'wechat'] // no redirect whitelist
+// 鏃犻粯璁ら椤电殑鎯呭喌
+const defaultRoutePath = '/welcome'
+
+router.beforeEach((to, from, next) => {
+ NProgress.start() // start progress bar
+ to.meta && (typeof to.meta.title !== 'undefined' && setDocumentTitle(`${to.meta.title} - ${domTitle}`))
+ if (Vue.ls.get(ACCESS_TOKEN)) {
+ /* has token */
+ if (to.path === '/user/login') {
+ //next({ path: defaultRoutePath })
+ NProgress.done()
+ } else {
+ if (store.getters.roles.length === 0) {
+ store
+ .dispatch('GetInfo')
+ .then(res => {
+ if (res.menus.length < 1) {
+ Modal.error({
+ title: '鎻愮ず锛�',
+ content: '鏃犺彍鍗曟潈闄愶紝璇疯仈绯荤鐞嗗憳',
+ okText: '纭畾',
+ onOk: () => {
+ store.dispatch('Logout').then(() => {
+ window.location.reload()
+ })
+ }
+ })
+ return
+ }
+ // eslint-disable-next-line camelcase
+ const all_app_menu = Vue.ls.get(ALL_APPS_MENU)
+ let antDesignmenus
+ // eslint-disable-next-line camelcase
+ if (all_app_menu == null) {
+ const applocation = []
+ res.apps.forEach(item => {
+ const apps = { 'code': '', 'name': '', 'active': '', 'menu': '' }
+ if (item.active) {
+ apps.code = item.code
+ apps.name = item.name
+ apps.active = item.active
+ apps.menu = res.menus
+ antDesignmenus = res.menus
+ } else {
+ apps.code = item.code
+ apps.name = item.name
+ apps.active = item.active
+ apps.menu = ''
+ }
+ applocation.push(apps)
+ })
+ if (antDesignmenus === undefined) {
+ // 娌℃湁璁剧疆榛樿鍊肩殑鎯呭喌涓嬶紝浣跨涓�涓簲鐢ㄨ彍鍗曚负榛樿鑿滃崟
+ var firstApps = Enumerable.from(applocation).first()
+ firstApps.active = 'Y'
+ firstApps.menu = res.menus
+ antDesignmenus = res.menus
+ }
+ Vue.ls.set(ALL_APPS_MENU, applocation, 7 * 24 * 60 * 60 * 1000)//缂撳瓨7澶�
+ // 寤惰繜 1 绉掓樉绀烘杩庝俊鎭�
+ setTimeout(() => {
+ notification.success({
+ message: '娆㈣繋',
+ description: `${timeFix()}锛屾杩庡洖鏉
+ })
+ }, 1000)
+ } else {
+ antDesignmenus = Vue.ls.get(ALL_APPS_MENU)[0].menu
+ }
+ store.dispatch('GenerateRoutes', { antDesignmenus }).then(() => {
+ // 鍔ㄦ�佹坊鍔犲彲璁块棶璺敱琛�
+ router.addRoutes(store.getters.addRouters)
+ // 璇锋眰甯︽湁 redirect 閲嶅畾鍚戞椂锛岀櫥褰曡嚜鍔ㄩ噸瀹氬悜鍒拌鍦板潃
+ const redirect = decodeURIComponent(from.query.redirect || to.path)
+ if (to.path === redirect) {
+ next({ path: redirect })
+ // hack鏂规硶 纭繚addRoutes宸插畬鎴� ,set the replace: true so the navigation will not leave a history record
+ next({ ...to, replace: true })
+ } else {
+ // 璺宠浆鍒扮洰鐨勮矾鐢�
+ next({ path: redirect })
+ }
+ })
+ })
+ .catch(() => {
+ store.dispatch('Logout').then(() => {
+ next({ path: '/user/login', query: { redirect: to.fullPath } })
+ })
+ })
+ store.dispatch('getNoticReceiveList').then((res) => { })
+ } else {
+ next()
+ }
+ }
+ } else {
+ if (whiteList.includes(to.name)) {
+ // 鍦ㄥ厤鐧诲綍鐧藉悕鍗曪紝鐩存帴杩涘叆
+ next()
+ } else {
+ next({ path: '/user/login', query: { redirect: to.fullPath } })
+ NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
+ }
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done() // finish progress bar
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js b/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js
new file mode 100644
index 0000000..457ea1f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/router/generator-routers.js
@@ -0,0 +1,263 @@
+
+import { BasicLayout, BlankLayout, PageView, RouteView, Iframe } from '@/layouts'
+
+// 鍓嶇璺敱琛�
+const constantRouterComponents = {
+ // 鍩虹椤甸潰 layout 蹇呴』寮曞叆
+ BasicLayout: BasicLayout,
+ BlankLayout: BlankLayout,
+ RouteView: RouteView,
+ PageView: PageView,
+ Iframe: Iframe,
+ '403': () => import('@/views/system/exception/403'),
+ '404': () => import('@/views/system/exception/404'),
+ '500': () => import('@/views/system/exception/500'),
+
+ 'Workplace': () => import('@/views/system/dashboard/Workplace'),
+ // account
+ 'AccountCenter': () => import('@/views/system/account/center/Index'),
+ 'AccountSettings': () => import('@/views/system/account/settings/Index'),
+ 'BaseSettings': () => import('@/views/system/account/settings/BaseSetting'),
+ 'SecuritySettings': () => import('@/views/system/account/settings/Security'),
+ 'CustomSettings': () => import('@/views/system/account/settings/Custom'),
+ 'BindingSettings': () => import('@/views/system/account/settings/Binding'),
+ 'NotificationSettings': () => import('@/views/system/account/settings/Notification'),
+
+ // 榛樿棣栭〉
+ 'Console': () => import('@/views/system/index/welcome')
+}
+
+// 鍓嶇鏈壘鍒伴〉闈㈣矾鐢憋紙鍥哄畾涓嶇敤鏀癸級銆佸師鏉ヤ负 /404
+const notFoundRouter = {
+ path: '*', redirect: '/welcome', hidden: true
+}
+// 涓汉涓績椤甸潰
+const userAccount = [
+ // account
+ {
+ 'name': 'account',
+ 'pid': 0,
+ 'id': 10028,
+ 'meta': {
+ 'title': '涓汉椤�',
+ 'icon': 'user',
+ 'show': false
+ },
+ 'redirect': '/account/center',
+ 'component': 'RouteView'
+ },
+ {
+ 'name': 'center',
+ 'pid': 10028,
+ 'id': 10029,
+ 'meta': {
+ 'title': '涓汉涓績',
+ 'show': false
+ },
+ 'component': 'AccountCenter'
+ },
+ // 鐗规畩涓夌骇鑿滃崟
+ {
+ 'name': 'settings',
+ 'pid': '10028',
+ 'id': '10030',
+ 'meta': {
+ 'title': '涓汉璁剧疆',
+ 'hideHeader': true,
+ 'hideChildren': true,
+ 'show': false
+ },
+ 'redirect': '/account/settings/base',
+ 'component': 'AccountSettings'
+ },
+ {
+ 'name': 'BaseSettings',
+ 'path': '/account/settings/base',
+ 'pid': 10030,
+ 'id': 10031,
+ 'meta': {
+ 'title': '鍩烘湰璁剧疆',
+ 'show': false
+ },
+ 'component': 'BaseSettings'
+ },
+ {
+ 'name': 'SecuritySettings',
+ 'path': '/account/settings/security',
+ 'pid': 10030,
+ 'id': 10032,
+ 'meta': {
+ 'title': '瀹夊叏璁剧疆',
+ 'show': false
+ },
+ 'component': 'SecuritySettings'
+ },
+ {
+ 'name': 'CustomSettings',
+ 'path': '/account/settings/custom',
+ 'pid': 10030,
+ 'id': 10033,
+ 'meta': {
+ 'title': '涓�у寲璁剧疆',
+ 'show': false
+ },
+ 'component': 'CustomSettings'
+ },
+ {
+ 'name': 'BindingSettings',
+ 'path': '/account/settings/binding',
+ 'pid': 10030,
+ 'id': 10034,
+ 'meta': {
+ 'title': '璐︽埛缁戝畾',
+ 'show': false
+ },
+ 'component': 'BindingSettings'
+ },
+ {
+ 'name': 'NotificationSettings',
+ 'path': '/account/settings/notification',
+ 'pid': 10030,
+ 'id': 10034,
+ 'meta': {
+ 'title': '鏂版秷鎭�氱煡',
+ 'show': false
+ },
+ 'component': 'NotificationSettings'
+ },
+ {
+ 'name': 'Console',
+ 'path': '/welcome',
+ 'pid': 0,
+ 'id': 183183,
+ 'meta': {
+ 'title': '棣栭〉',
+ 'show': false
+ },
+ 'component': 'Console'
+ }
+
+]
+
+// 鏍圭骇鑿滃崟
+const rootRouter = {
+ key: '',
+ name: 'MenuIndex.vue',
+ path: '',
+ component: 'BasicLayout',
+ redirect: '/welcome',
+ meta: {
+ title: '棣栭〉'
+ },
+ children: []
+}
+
+/**
+ * 鍔ㄦ�佺敓鎴愯彍鍗�
+ * @param data
+ * @returns {Promise<Router>}
+ */
+export const generatorDynamicRouter = (data) => {
+ return new Promise((resolve, reject) => {
+ const resNav = data.antDesignmenus
+ const menuNav = []
+ const childrenNav = []
+ // 鍚庣鏁版嵁, 鏍圭骇鏍戞暟缁�, 鏍圭骇 PID
+ listToTree(resNav, childrenNav, 0)
+
+ /**
+ * 澧炲姞闈欐�佺綉椤�
+ */
+ listToTree(userAccount, childrenNav, 0)
+ rootRouter.children = childrenNav
+ menuNav.push(rootRouter)
+ const routers = generator(menuNav)
+ routers.push(notFoundRouter)
+ resolve(routers)
+ }).catch(err => {
+ // reject('鍔犺浇鑿滃崟澶辫触')
+ return Promise.reject(err)
+ })
+}
+
+/**
+ * 鏍煎紡鍖栨爲褰㈢粨鏋勬暟鎹� 鐢熸垚 vue-router 灞傜骇璺敱琛�
+ *
+ * @param routerMap
+ * @param parent
+ * @returns {*}
+ */
+export const generator = (routerMap, parent) => {
+ return routerMap.map(item => {
+ // eslint-disable-next-line no-unused-vars
+ const { title, show, hideChildren, hiddenHeaderContent, target, icon, link } = item.meta || {}
+ const currentRouter = {
+ // 濡傛灉璺敱璁剧疆浜� path锛屽垯浣滀负榛樿 path锛屽惁鍒� 璺敱鍦板潃 鍔ㄦ�佹嫾鎺ョ敓鎴愬 /dashboard/workplace
+ path: item.path || `${parent && parent.path || ''}/${item.key}`,
+ // 璺敱鍚嶇О锛屽缓璁敮涓�
+ name: item.name || item.key || '',
+ // 璇ヨ矾鐢卞搴旈〉闈㈢殑 缁勪欢 :鏂规1
+ // component: constantRouterComponents[item.component || item.key],
+ // 璇ヨ矾鐢卞搴旈〉闈㈢殑 缁勪欢 :鏂规2 (鍔ㄦ�佸姞杞�)
+ component: (constantRouterComponents[item.component || item.key]) || (() => import(`@/views/${item.component}`)),
+ // meta: 椤甸潰鏍囬, 鑿滃崟鍥炬爣, 椤甸潰鏉冮檺(渚涙寚浠ゆ潈闄愮敤锛屽彲鍘绘帀)
+ meta: {
+ title: title,
+ icon: icon || undefined,
+ // hiddenHeaderContent: hiddenHeaderContent,
+ target: target,
+ link: link
+ }
+ }
+ // 鏄惁璁剧疆浜嗛殣钘忚彍鍗�
+ if (show === false) {
+ currentRouter.hidden = true
+ }
+ // 鏄惁璁剧疆浜嗛殣钘忓瓙鑿滃崟
+ if (hideChildren) {
+ currentRouter.hideChildrenInMenu = true
+ }
+ // 涓轰簡闃叉鍑虹幇鍚庣杩斿洖缁撴灉涓嶈鑼冿紝澶勭悊鏈夊彲鑳藉嚭鐜版嫾鎺ュ嚭涓や釜 鍙嶆枩鏉�
+ if (!currentRouter.path.startsWith('http')) {
+ currentRouter.path = currentRouter.path.replace('//', '/')
+ }
+ // 閲嶅畾鍚�
+ item.redirect && (currentRouter.redirect = item.redirect)
+ // 鏄惁鏈夊瓙鑿滃崟锛屽苟閫掑綊澶勭悊
+ if (item.children && item.children.length > 0) {
+ // Recursion
+ currentRouter.children = generator(item.children, currentRouter)
+ }
+ return currentRouter
+ })
+}
+
+/**
+ * 鏁扮粍杞爲褰㈢粨鏋�
+ * @param list 婧愭暟缁�
+ * @param tree 鏍�
+ * @param parentId 鐖禝D
+ */
+const listToTree = (list, tree, parentId) => {
+ if (list) {
+ list.forEach(item => {
+ // 鍒ゆ柇鏄惁涓虹埗绾ц彍鍗�
+ // eslint-disable-next-line eqeqeq
+ if (item.pid == parentId) {
+ const child = {
+ ...item,
+ key: item.key || item.name,
+ children: []
+ }
+ // 杩唬 list锛� 鎵惧埌褰撳墠鑿滃崟鐩哥鍚堢殑鎵�鏈夊瓙鑿滃崟
+ listToTree(list, child.children, item.id)
+ // 鍒犳帀涓嶅瓨鍦� children 鍊肩殑灞炴��
+ if (child.children.length <= 0) {
+ delete child.children
+ }
+ // 鍔犲叆鍒版爲涓�
+ tree.push(child)
+ }
+ })
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/router/index.js b/iWare_RawMaterialWarehouse_Web/src/router/index.js
new file mode 100644
index 0000000..dd72772
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/router/index.js
@@ -0,0 +1,19 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+import { constantRouterMap } from '@/config/router.config'
+
+// hack router push callback
+const originalPush = Router.prototype.push
+Router.prototype.push = function push (location, onResolve, onReject) {
+ if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
+ return originalPush.call(this, location).catch(err => err)
+}
+
+Vue.use(Router)
+
+export default new Router({
+ mode: 'history',
+ base: process.env.BASE_URL,
+ scrollBehavior: () => ({ y: 0 }),
+ routes: constantRouterMap
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/getters.js b/iWare_RawMaterialWarehouse_Web/src/store/getters.js
new file mode 100644
index 0000000..0d3f37d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/getters.js
@@ -0,0 +1,20 @@
+const getters = {
+ device: state => state.app.device,
+ theme: state => state.app.theme,
+ color: state => state.app.color,
+ token: state => state.user.token,
+ avatar: state => state.user.avatar,
+ nickname: state => state.user.name,
+ welcome: state => state.user.welcome,
+ roles: state => state.user.roles,
+ buttons: state => state.user.buttons,
+ allButtons: state => state.user.allButtons,
+ admintype: state => state.user.admintype,
+ userInfo: state => state.user.info,
+ userNotices: state => state.user.notices,
+ addRouters: state => state.permission.addRouters,
+ multiTab: state => state.app.multiTab,
+ lang: state => state.i18n.lang
+}
+
+export default getters
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/index.js b/iWare_RawMaterialWarehouse_Web/src/store/index.js
new file mode 100644
index 0000000..687d21b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/index.js
@@ -0,0 +1,32 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+import app from './modules/app'
+import user from './modules/user'
+
+// default router permission control
+// import permission from './modules/permission'
+
+// dynamic router permission control (Experimental)
+import permission from './modules/async-router'
+import getters from './getters'
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+ modules: {
+ app,
+ user,
+ permission
+ },
+ state: {
+
+ },
+ mutations: {
+
+ },
+ actions: {
+
+ },
+ getters
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js
new file mode 100644
index 0000000..24bf365
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/app.js
@@ -0,0 +1,138 @@
+import Vue from 'vue'
+import {
+ SIDEBAR_TYPE,
+ DEFAULT_THEME,
+ DEFAULT_LAYOUT_MODE,
+ DEFAULT_COLOR,
+ DEFAULT_COLOR_WEAK,
+ DEFAULT_FIXED_HEADER,
+ DEFAULT_FIXED_SIDEMENU,
+ DEFAULT_FIXED_HEADER_HIDDEN,
+ DEFAULT_CONTENT_WIDTH_TYPE,
+ DEFAULT_MULTI_TAB,
+ DEFAULT_CRUMBS_STATE
+} from '@/store/mutation-types'
+
+const app = {
+ state: {
+ sidebar: true,
+ device: 'desktop',
+ theme: '',
+ layout: '',
+ contentWidth: '',
+ fixedHeader: false,
+ fixSiderbar: false,
+ autoHideHeader: false,
+ color: null,
+ weak: false,
+ multiTab: true,
+ crumbsState: true,
+ hasError: false
+ },
+ mutations: {
+ SET_SIDEBAR_TYPE: (state, type) => {
+ state.sidebar = type
+ Vue.ls.set(SIDEBAR_TYPE, type)
+ },
+ CLOSE_SIDEBAR: (state) => {
+ Vue.ls.set(SIDEBAR_TYPE, true)
+ state.sidebar = false
+ },
+ TOGGLE_DEVICE: (state, device) => {
+ state.device = device
+ },
+ TOGGLE_THEME: (state, theme) => {
+ // setStore('_DEFAULT_THEME', theme)
+ Vue.ls.set(DEFAULT_THEME, theme)
+ state.theme = theme
+ },
+ TOGGLE_LAYOUT_MODE: (state, layout) => {
+ Vue.ls.set(DEFAULT_LAYOUT_MODE, layout)
+ state.layout = layout
+ },
+ TOGGLE_FIXED_HEADER: (state, fixed) => {
+ Vue.ls.set(DEFAULT_FIXED_HEADER, fixed)
+ state.fixedHeader = fixed
+ },
+ TOGGLE_FIXED_SIDERBAR: (state, fixed) => {
+ Vue.ls.set(DEFAULT_FIXED_SIDEMENU, fixed)
+ state.fixSiderbar = fixed
+ },
+ TOGGLE_FIXED_HEADER_HIDDEN: (state, show) => {
+ Vue.ls.set(DEFAULT_FIXED_HEADER_HIDDEN, show)
+ state.autoHideHeader = show
+ },
+ TOGGLE_CONTENT_WIDTH: (state, type) => {
+ Vue.ls.set(DEFAULT_CONTENT_WIDTH_TYPE, type)
+ state.contentWidth = type
+ },
+ TOGGLE_COLOR: (state, color) => {
+ Vue.ls.set(DEFAULT_COLOR, color)
+ state.color = color
+ },
+ TOGGLE_WEAK: (state, flag) => {
+ Vue.ls.set(DEFAULT_COLOR_WEAK, flag)
+ state.weak = flag
+ },
+ TOGGLE_MULTI_TAB: (state, bool) => {
+ Vue.ls.set(DEFAULT_MULTI_TAB, bool)
+ state.multiTab = bool
+ },
+ TOGGLE_CRUMBS_STATE: (state, bool) => {
+ Vue.ls.set(DEFAULT_CRUMBS_STATE, bool)
+ state.crumbsState = bool
+ },
+ SET_HAS_ERROR: (state, bool) => {
+ state.hasError = bool
+ }
+ },
+ actions: {
+ setSidebar ({ commit }, type) {
+ commit('SET_SIDEBAR_TYPE', type)
+ },
+ CloseSidebar ({ commit }) {
+ commit('CLOSE_SIDEBAR')
+ },
+ ToggleDevice ({ commit }, device) {
+ commit('TOGGLE_DEVICE', device)
+ },
+ ToggleTheme ({ commit }, theme) {
+ commit('TOGGLE_THEME', theme)
+ },
+ ToggleLayoutMode ({ commit }, mode) {
+ commit('TOGGLE_LAYOUT_MODE', mode)
+ },
+ ToggleFixedHeader ({ commit }, fixedHeader) {
+ if (!fixedHeader) {
+ commit('TOGGLE_FIXED_HEADER_HIDDEN', false)
+ }
+ commit('TOGGLE_FIXED_HEADER', fixedHeader)
+ },
+ ToggleFixSiderbar ({ commit }, fixSiderbar) {
+ commit('TOGGLE_FIXED_SIDERBAR', fixSiderbar)
+ },
+ ToggleFixedHeaderHidden ({ commit }, show) {
+ commit('TOGGLE_FIXED_HEADER_HIDDEN', show)
+ },
+ ToggleContentWidth ({ commit }, type) {
+ commit('TOGGLE_CONTENT_WIDTH', type)
+ },
+ ToggleColor ({ commit }, color) {
+ commit('TOGGLE_COLOR', color)
+ },
+ ToggleWeak ({ commit }, weakFlag) {
+ commit('TOGGLE_WEAK', weakFlag)
+ },
+ ToggleMultiTab ({ commit }, bool) {
+ commit('TOGGLE_MULTI_TAB', bool)
+ },
+ ToggleCrumbsState ({ commit }, bool) {
+ commit('TOGGLE_CRUMBS_STATE', bool)
+ },
+ SetHasError ({ commit }, bool) {
+ commit('SET_HAS_ERROR', bool)
+ }
+ }
+}
+
+export default app
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js
new file mode 100644
index 0000000..4491e06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/async-router.js
@@ -0,0 +1,33 @@
+/**
+ * 鍚戝悗绔姹傜敤鎴风殑鑿滃崟锛屽姩鎬佺敓鎴愯矾鐢�
+ */
+import { constantRouterMap } from '@/config/router.config'
+import { generatorDynamicRouter } from '@/router/generator-routers'
+
+const permission = {
+ state: {
+ routers: constantRouterMap,
+ addRouters: []
+ },
+ mutations: {
+ SET_ROUTERS: (state, routers) => {
+ state.addRouters = routers
+ state.routers = constantRouterMap.concat(routers)
+ }
+ },
+ actions: {
+ GenerateRoutes ({ commit }, data) {
+ return new Promise(resolve => {
+ generatorDynamicRouter(data).then(routers => {
+ commit('SET_ROUTERS', routers)
+ resolve()
+ })
+ }).catch(err => {
+ // eslint-disable-next-line no-undef
+ reject(err)
+ })
+ }
+ }
+}
+
+export default permission
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js
new file mode 100644
index 0000000..c614821
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/permission.js
@@ -0,0 +1,76 @@
+import { asyncRouterMap, constantRouterMap } from '@/config/router.config'
+
+/**
+ * 杩囨护璐︽埛鏄惁鎷ユ湁鏌愪竴涓潈闄愶紝骞跺皢鑿滃崟浠庡姞杞藉垪琛ㄧЩ闄�
+ *
+ * @param permission
+ * @param route
+ * @returns {boolean}
+ */
+function hasPermission (permission, route) {
+ // if (route.meta && route.meta.permission) {
+ // let flag = false
+ // for (let i = 0, len = permission.length; i < len; i++) {
+ // flag = route.meta.permission.includes(permission[i])
+ // if (flag) {
+ // return true
+ // }
+ // }
+ // return false
+ // }
+ return true
+}
+
+/**
+ * 鍗曡处鎴峰瑙掕壊鏃讹紝浣跨敤璇ユ柟娉曞彲杩囨护瑙掕壊涓嶅瓨鍦ㄧ殑鑿滃崟
+ *
+ * @param roles
+ * @param route
+ * @returns {*}
+ */
+// eslint-disable-next-line
+function hasRole(roles, route) {
+ if (route.meta && route.meta.roles) {
+ return route.meta.roles.includes(roles.id)
+ } else {
+ return true
+ }
+}
+
+function filterAsyncRouter (routerMap, roles) {
+ const accessedRouters = routerMap.filter(route => {
+ if (hasPermission(roles.permissionList, route)) {
+ if (route.children && route.children.length) {
+ route.children = filterAsyncRouter(route.children, roles)
+ }
+ return true
+ }
+ return false
+ })
+ return accessedRouters
+}
+
+const permission = {
+ state: {
+ routers: constantRouterMap,
+ addRouters: []
+ },
+ mutations: {
+ SET_ROUTERS: (state, routers) => {
+ state.addRouters = routers
+ state.routers = constantRouterMap.concat(routers)
+ }
+ },
+ actions: {
+ GenerateRoutes ({ commit }, data) {
+ return new Promise(resolve => {
+ const { roles } = data
+ const accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
+ commit('SET_ROUTERS', accessedRouters)
+ resolve()
+ })
+ }
+ }
+}
+
+export default permission
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js b/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js
new file mode 100644
index 0000000..9395c25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/modules/user.js
@@ -0,0 +1,258 @@
+import Vue from 'vue'
+import { login, getLoginUser, logout } from '@/api/modular/system/loginManage'
+import { sysDictTypeTree } from '@/api/modular/system/dictManage'
+import { sysMenuChange } from '@/api/modular/system/menuManage'
+// eslint-disable-next-line no-unused-vars
+import { ACCESS_TOKEN, ALL_APPS_MENU, DICT_TYPE_TREE_DATA, NOTICE_RECEIVED } from '@/store/mutation-types'
+import { sysFileInfoPreview } from '@/api/modular/system/fileManage'
+import {
+ unReadNotice
+} from '@/api/modular/system/noticeReceivedManage'
+
+import { welcome, dateFormat } from '@/utils/util'
+import store from '../index'
+import router from '../../router'
+
+const user = {
+ state: {
+ token: '',
+ name: '',
+ welcome: '',
+ avatar: '',
+ buttons: [], // 鎸夐挳鏉冮檺
+ allButtons: [], // 鎵�鏈夋寜閽潈闄�
+ admintype: '', // 鏄惁鏄秴绠�
+ roles: [],
+ info: {},
+ notices: [] // 鎺ユ敹鐨勯�氱煡鍏憡
+ },
+
+ mutations: {
+ SET_TOKEN: (state, token) => {
+ state.token = token
+ },
+ SET_NAME: (state, { name, welcome }) => {
+ state.name = name
+ state.welcome = welcome
+ },
+ SET_AVATAR: (state, avatar) => {
+ state.avatar = avatar
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ },
+ SET_INFO: (state, info) => {
+ state.info = info
+ },
+ SET_BUTTONS: (state, buttons) => {
+ state.buttons = buttons
+ },
+ SET_ALL_BUTTONS: (state, allButtons) => {
+ state.allButtons = allButtons
+ },
+ SET_ADMINTYPE: (state, admintype) => {
+ state.admintype = admintype
+ },
+ SET_NOTICES: (state, notices) => {
+ state.notices = notices
+ },
+ APPEND_NOTICE: (state, notice) => {
+ notice.publicTime = dateFormat(notice.publicTime, 'YYYY-mm-dd HH:MM:SS')
+ const notices = state.notices
+ const temp = notices.rows.filter(m => { return m.value === notice.type })[0]
+ const other = notices.rows.filter(m => { return m.value !== notice.type })
+ temp.noticeData.unshift(notice)
+ notices.totalRows++
+ if (temp.noticeData.length > 6) {
+ temp.noticeData.pop()
+ }
+ notices.rows = []
+ notices.rows.push(temp)
+ notices.rows.push.apply(notices.rows, other)
+ notices.rows.sort((obj1, obj2) => {
+ return obj1.index - obj2.index
+ })
+ state.notices = notices
+ },
+ SUBTRACT_NOTICE: (state, notice) => {
+ // 鏌ョ湅閫氱煡鍚庡湪娑堟伅鎻愮ず涓秷闄ゅ凡缁忔煡鐪嬭繃鐨勶紝姝ゅ嚱鏁� 鍙兘 瀛樺湪鏈煡bug
+ // notice.publicTime = dateFormat(notice.publicTime, 'YYYY-mm-dd HH:MM:SS')
+ const notices = state.notices
+ // debugger
+ const temp = notices.rows.filter(m => { return m.value === notice.type })[0]
+ const other = notices.rows.filter(m => { return m.value !== notice.type })
+ temp.noticeData.shift(notice)
+ notices.totalRows--
+ if (temp.noticeData.length > 6) {
+ temp.noticeData.pop()
+ }
+ notices.rows = []
+ notices.rows.pop(temp)
+ notices.rows.pop.apply(notices.rows, other)
+ notices.rows.sort((obj1, obj2) => {
+ return obj1.index - obj2.index
+ })
+ state.notices = notices
+ }
+ },
+
+ actions: {
+ // 鐧诲綍
+ Login ({ commit }, userInfo) {
+ Vue.ls.remove(ALL_APPS_MENU)//娓呴櫎鑿滃崟缂撳瓨
+ return new Promise((resolve, reject) => {
+ login(userInfo).then(response => {
+ if (!response.success) {
+ reject(response.message)
+ return
+ }
+ // 浠庡搷搴� Header 涓鍙栵紝澶勭悊閫昏緫绉昏嚦 request.js 涓鐞�
+ // const result = response.data
+ // Vue.ls.set(ACCESS_TOKEN, result, 7 * 24 * 60 * 60 * 1000)
+ // commit('SET_TOKEN', result)
+ resolve()
+ // eslint-disable-next-line handle-callback-err
+ }).catch(error => {
+ // eslint-disable-next-line prefer-promise-reject-errors
+ reject('鍚庣鏈惎鍔ㄦ垨浠g悊閿欒')
+ })
+ })
+ },
+
+ // 鑾峰彇鐢ㄦ埛淇℃伅
+ GetInfo ({ commit }) {
+ return new Promise((resolve, reject) => {
+ getLoginUser().then(response => {
+ if (response.success) {
+ const data = response.data
+ commit('SET_ADMINTYPE', data.adminType)
+ commit('SET_ROLES', 1)
+ commit('SET_BUTTONS', data.permissions)
+ commit('SET_ALL_BUTTONS', data.allPermissions)
+ commit('SET_INFO', data)
+ commit('SET_NAME', { name: data.name, welcome: welcome() })
+ if (data.avatar != null) {
+ sysFileInfoPreview({ id: data.avatar }).then((res) => {
+ commit('SET_AVATAR', window.URL.createObjectURL(new Blob([res])))
+ }).catch((err) => {
+ this.$message.error('棰勮閿欒锛�' + err.message)
+ })
+ // commit('SET_AVATAR', process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + data.avatar)
+ } else {
+ commit('SET_AVATAR', '/avatar2.jpg')
+ }
+ resolve(data)
+ } else {
+ // eslint-disable-next-line no-undef
+ reject(new Error(response.message))
+ }
+ })
+ //鐧诲綍杩囨湡鍚庡墠绔細鍙戠敓楂橀璁块棶鍚庣鐨勯棶棰�
+ //.catch(error => {
+ // reject(error)
+ //})
+ })
+ },
+
+ // 鐧诲嚭
+ Logout ({ commit, state }) {
+ return new Promise((resolve) => {
+ logout(state.token).then(() => {
+ resolve()
+ }).catch(() => {
+ resolve()
+ }).finally(() => {
+ commit('SET_TOKEN', '')
+ commit('SET_ROLES', [])
+ commit('SET_BUTTONS', [])
+ commit('SET_ALL_BUTTONS', [])
+ commit('SET_ADMINTYPE', '')
+ Vue.ls.remove(ACCESS_TOKEN)
+ Vue.ls.remove(ALL_APPS_MENU)
+ Vue.ls.remove(DICT_TYPE_TREE_DATA)
+ Vue.ls.remove('X-Access-Token')
+ })
+ })
+ },
+
+ // 鍔犺浇鎵�鏈夊瓧鍏告暟鎹�
+ dictTypeData () {
+ return new Promise((resolve, reject) => {
+ sysDictTypeTree().then((data) => {
+ if (data.success) {
+ const result = data.data
+ Vue.ls.set(DICT_TYPE_TREE_DATA, result)
+ resolve()
+ } else {
+ // eslint-disable-next-line no-undef
+ reject(new Error(data.message))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+
+ // 鍒囨崲搴旂敤鑿滃崟
+ MenuChange ({ commit }, application) {
+ return new Promise((resolve) => {
+ sysMenuChange({ application: application.code }).then((res) => {
+ const apps = { 'code': '', 'name': '', 'active': '', 'menu': '' }
+ apps.active = true
+ apps.menu = res.data
+ // eslint-disable-next-line camelcase
+ const all_app_menu = Vue.ls.get(ALL_APPS_MENU)
+ // eslint-disable-next-line camelcase
+ const new_false_all_app_menu = []
+ // 鍏堝幓闄ゆ墍鏈夐粯璁ょ殑锛屼互涓烘鏃跺垏鎹㈢殑鍗冲皢鎴愪负鍓嶇缂撳瓨榛樿鐨勫簲鐢�
+ all_app_menu.forEach(item => {
+ if (item.active) {
+ item.active = false
+ }
+ new_false_all_app_menu.push(item)
+ })
+ // 姝ゆ椂缂撳瓨涓叏閮ㄩ兘鏄笉榛樿鐨勫簲鐢�
+ Vue.ls.set(ALL_APPS_MENU, new_false_all_app_menu)
+ apps.name = application.name
+ apps.code = application.code
+ const applocationR = []
+ applocationR.push(apps)
+ Vue.ls.set(ALL_APPS_MENU, applocationR)
+ resolve(res)
+ const antDesignmenus = res.data
+ store.dispatch('GenerateRoutes', { antDesignmenus }).then(() => {
+ router.addRoutes(store.getters.addRouters)
+ })
+ // 鍒囨崲搴旂敤鍒锋柊鏁翠綋鐣岄潰锛屾殏涓斿彇娑�
+ // window.location.reload()
+ }).catch(() => {
+ resolve()
+ })
+ })
+ },
+ // 鑾峰彇鏀跺埌鐨勯�氱煡
+ getNoticReceiveList({
+ commit
+ }) {
+ return new Promise((resolve, reject) => {
+ unReadNotice({
+ pageSize: 6
+ }).then((data) => {
+ if (data.success) {
+ const result = data.data
+ commit('SET_NOTICES', result)
+ resolve()
+ } else {
+ // eslint-disable-next-line no-undef
+ reject(new Error(data.message))
+ }
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ }
+
+ }
+}
+
+export default user
diff --git a/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js b/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js
new file mode 100644
index 0000000..ca372f8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/store/mutation-types.js
@@ -0,0 +1,19 @@
+export const ACCESS_TOKEN = 'Access-Token'
+export const SIDEBAR_TYPE = 'SIDEBAR_TYPE'
+export const ALL_APPS_MENU = 'ALL_APPS_MENU'
+export const DEFAULT_THEME = 'DEFAULT_THEME'
+export const DEFAULT_LAYOUT_MODE = 'DEFAULT_LAYOUT_MODE'
+export const DEFAULT_COLOR = 'DEFAULT_COLOR'
+export const DEFAULT_COLOR_WEAK = 'DEFAULT_COLOR_WEAK'
+export const DEFAULT_FIXED_HEADER = 'DEFAULT_FIXED_HEADER'
+export const DEFAULT_FIXED_SIDEMENU = 'DEFAULT_FIXED_SIDEMENU'
+export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN'
+export const DEFAULT_CONTENT_WIDTH_TYPE = 'DEFAULT_CONTENT_WIDTH_TYPE'
+export const DEFAULT_MULTI_TAB = 'DEFAULT_MULTI_TAB'
+export const DEFAULT_CRUMBS_STATE = 'DEFAULT_CRUMBS_STATE'
+export const DICT_TYPE_TREE_DATA = 'DICT_TYPE_TREE_DATA'
+export const NOTICE_RECEIVED = 'NOTICE_RECEIVED'
+export const CONTENT_WIDTH_TYPE = {
+ Fluid: 'Fluid',
+ Fixed: 'Fixed'
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js b/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js
new file mode 100644
index 0000000..30fdc28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/applocation.js
@@ -0,0 +1,11 @@
+import store from '@/store'
+
+/**
+ * 缂撳瓨涓殑宸查�変腑搴旂敤
+ *
+ * @author yubaoshan
+ * @date 2020/06/27 02:34
+ */
+export function sysApplication () {
+ return store.getters.applocation
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/axios.js b/iWare_RawMaterialWarehouse_Web/src/utils/axios.js
new file mode 100644
index 0000000..3b91f6b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/axios.js
@@ -0,0 +1,35 @@
+const VueAxios = {
+ vm: {},
+ // eslint-disable-next-line no-unused-vars
+ install (Vue, instance) {
+ if (this.installed) {
+ return
+ }
+ this.installed = true
+
+ if (!instance) {
+ // eslint-disable-next-line no-console
+ console.error('You have to install axios')
+ return
+ }
+
+ Vue.axios = instance
+
+ Object.defineProperties(Vue.prototype, {
+ axios: {
+ get: function get () {
+ return instance
+ }
+ },
+ $http: {
+ get: function get () {
+ return instance
+ }
+ }
+ })
+ }
+}
+
+export {
+ VueAxios
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js b/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js
new file mode 100644
index 0000000..4cc32bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/checkVersion.js
@@ -0,0 +1,40 @@
+// checkVersion.js
+function fetchVersion() {
+ // 浣跨敤 fetch API 鏉ヨ幏鍙� index.html 鏂囦欢
+ return fetch('/')
+ .then(response => response.text())
+ .then(html => {
+ // 浣跨敤姝e垯琛ㄨ揪寮忔潵鎻愬彇鐗堟湰鍙�
+ const versionMatch = html.match(/var version = (\d+);/);
+ if (versionMatch && versionMatch.length > 1) {
+ //console.log('鎵惧埌鐨勭増鏈彿鏄�:'+versionMatch[1]);
+ return versionMatch[1]; // 杩斿洖鐗堟湰鍙�
+ }
+ throw new Error('涓嶈兘鎵惧埌鐗堟湰鍙枫��');
+ });
+ }
+
+ function checkVersion() {
+ let currentVersion; // 褰撳墠椤甸潰鐨勭増鏈彿
+
+ // 鍒濆鍖栨椂鑾峰彇涓�娆$増鏈彿
+ fetchVersion().then(version => {
+ currentVersion = version;
+ });
+
+ // 鍒涘缓瀹氭椂鍣紝姣�10绉掓鏌ヤ竴娆�
+ setInterval(() => {
+ fetchVersion().then(newVersion => {
+ // 妫�鏌ョ増鏈彿鏄惁鏈夊彉鍖�
+ if (newVersion !== currentVersion) {
+ // 濡傛灉鐗堟湰鍙峰彉鍖栵紝鎻愮ず鐢ㄦ埛锛屽苟鏇存柊褰撳墠鐗堟湰鍙�
+ if (confirm('妫�娴嬪埌鏂扮増鏈紝鏄惁閲嶆柊鍔犺浇椤甸潰锛熷鏋滀俊鎭繕鏈彁浜ゅ畬锛岃鐐瑰嚮鍙栨秷锛岀户缁~鍐�.')) {
+ window.location.reload(); // 鐢ㄦ埛纭鍚庨噸鏂板姞杞介〉闈�
+ currentVersion = newVersion; // 鏇存柊褰撳墠鐗堟湰鍙凤紝閬垮厤閲嶅鎻愮ず
+ }
+ }
+ }).catch(error => console.error('鑾峰彇鐗堟湰鍙峰け璐ワ細', error));
+ }, 10000); // 璁剧疆鏃堕棿闂撮殧涓� 10000 姣锛�10 绉掞級
+ }
+
+ export default checkVersion;
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/device.js b/iWare_RawMaterialWarehouse_Web/src/utils/device.js
new file mode 100644
index 0000000..0f350f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/device.js
@@ -0,0 +1,33 @@
+import enquireJs from 'enquire.js'
+
+export const DEVICE_TYPE = {
+ DESKTOP: 'desktop',
+ TABLET: 'tablet',
+ MOBILE: 'mobile'
+}
+
+export const deviceEnquire = function (callback) {
+ const matchDesktop = {
+ match: () => {
+ callback && callback(DEVICE_TYPE.DESKTOP)
+ }
+ }
+
+ const matchLablet = {
+ match: () => {
+ callback && callback(DEVICE_TYPE.TABLET)
+ }
+ }
+
+ const matchMobile = {
+ match: () => {
+ callback && callback(DEVICE_TYPE.MOBILE)
+ }
+ }
+
+ // screen and (max-width: 1087.99px)
+ enquireJs
+ .register('screen and (max-width: 576px)', matchMobile)
+ .register('screen and (min-width: 576px) and (max-width: 1199px)', matchLablet)
+ .register('screen and (min-width: 1200px)', matchDesktop)
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js b/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js
new file mode 100644
index 0000000..519b620
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/domUtil.js
@@ -0,0 +1,19 @@
+export const setDocumentTitle = function (title) {
+ document.title = title
+ const ua = navigator.userAgent
+ // eslint-disable-next-line
+ const regex = /\bMicroMessenger\/([\d\.]+)/
+ if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) {
+ const i = document.createElement('iframe')
+ i.src = '/favicon.ico'
+ i.style.display = 'none'
+ i.onload = function () {
+ setTimeout(function () {
+ i.remove()
+ }, 9)
+ }
+ document.body.appendChild(i)
+ }
+}
+
+export const domTitle = '鎴戠殑寮�鍙戞ā鏉�'
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js b/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js
new file mode 100644
index 0000000..1409937
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/exportToExcel.js
@@ -0,0 +1,101 @@
+//@ts-nocheck
+import * as XLSX from 'xlsx';
+export function exportExcel(dataSource, entozh, type = "xlsx", name = "鍏ㄩ儴淇℃伅") {
+ const nowdata = dataSource;
+ if (nowdata != undefined) {
+ let i = 1;
+ const json = nowdata.map((item) => {
+ return Object.keys(item).reduce((newData, key) => {
+ console.log(key,'key')
+ console.log(entozh,'entozh')
+ const newKey = entozh[key] //|| key
+ if (newKey !== undefined) {
+ if (key !== 'key') {
+ //涓嶉渶瑕乲ey
+ if (key === 'id') {
+ newData[newKey] = i //.toString()
+ i++;
+ } else {
+ newData[newKey] = item[key]
+ }
+ }
+ }
+ return newData
+ }, {})
+ });
+ // debugger;
+ const sheet = XLSX.utils.json_to_sheet(json);
+ openDownloadDialog(sheet2blob(sheet, undefined, type), `${name}${getCurrentTime()}.${type}`);
+ } else {
+ this.$message.warning("鏃犳暟鎹�")
+ }
+
+}
+
+export function openDownloadDialog(url, saveName) {
+ if (typeof url == 'object' && url instanceof Blob) {
+ url = URL.createObjectURL(url); // 鍒涘缓blob鍦板潃
+ }
+ var aLink = document.createElement('a');
+ aLink.href = url;
+ aLink.download = saveName || ''; // HTML5鏂板鐨勫睘鎬э紝鎸囧畾淇濆瓨鏂囦欢鍚嶏紝鍙互涓嶈鍚庣紑锛屾敞鎰忥紝file:///妯″紡涓嬩笉浼氱敓鏁�
+ var event;
+ if (window.MouseEvent) event = new MouseEvent('click');
+ else {
+ event = document.createEvent('MouseEvents');
+ event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ }
+ aLink.dispatchEvent(event);
+}
+
+export function sheet2blob(sheet, sheetName, type = "xlsx") {
+ sheetName = sheetName || 'sheet1';
+ var workbook = {
+ SheetNames: [sheetName],
+ Sheets: {}
+ };
+ workbook.Sheets[sheetName] = sheet; // 鐢熸垚excel鐨勯厤缃」
+
+ var wopts = {
+ bookType: `${type}`, // 瑕佺敓鎴愮殑鏂囦欢绫诲瀷
+ bookSST: false, // 鏄惁鐢熸垚Shared String Table锛屽畼鏂硅В閲婃槸锛屽鏋滃紑鍚敓鎴愰�熷害浼氫笅闄嶏紝浣嗗湪浣庣増鏈琁OS璁惧涓婃湁鏇村ソ鐨勫吋瀹规��
+ type: 'binary'
+ };
+
+ var wbout = XLSX.write(workbook, wopts);
+ var blob = new Blob([s2ab(wbout)], {
+ type: "application/octet-stream"
+ }); // 瀛楃涓茶浆ArrayBuffer
+ function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
+ return buf;
+ }
+
+ return blob;
+}
+
+// 鑾峰彇褰撳墠鏃堕棿
+export function getCurrentTime() {
+ let date = new Date();
+ //鑾峰彇骞翠唤
+ let year = date.getFullYear();
+ //鑾峰彇鏈堜唤
+ let month = date.getMonth() + 1;
+ month = month >= 10 ? month : "0" + month;
+ //鑾峰彇澶╂暟
+ let day = date.getDate();
+ day = day >= 10 ? day : "0" + day;
+ //鑾峰彇灏忔椂
+ let hour = date.getHours();
+ hour = hour >= 10 ? hour : "0" + hour;
+ //鑾峰彇鍒嗛挓
+ let min = date.getMinutes();
+ min = min >= 10 ? min : "0" + min;
+ //鑾峰彇绉�
+ let second = date.getSeconds();
+ second = second >= 10 ? second : "0" + second;
+ //鎷兼帴鏃堕棿瀛楃涓�
+ return `${year}-${month}-${day} ${hour}:${min}:${second}`;
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/filter.js b/iWare_RawMaterialWarehouse_Web/src/utils/filter.js
new file mode 100644
index 0000000..e087bae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/filter.js
@@ -0,0 +1,114 @@
+import Vue from 'vue'
+import { DICT_TYPE_TREE_DATA } from '@/store/mutation-types'
+import moment from 'moment'
+import 'moment/locale/zh-cn'
+moment.locale('zh-cn')
+
+Vue.filter('NumberFormat', function (value) {
+ if (!value) {
+ return '0'
+ }
+ const intPartFormat = value.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 鍗冨垎浣嶇 1,100,000.00
+ return intPartFormat
+})
+
+Vue.filter('moment', function (dataStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
+ return moment(dataStr).format(pattern)
+})
+
+/**
+ * 閲戦鏍煎紡鍖� 锛屼娇鐢ㄦ柟娉曪細{{ val | Fmoney }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-15 15:02:20
+ */
+Vue.filter('Fmoney', function (val) {
+ // eslint-disable-next-line no-useless-escape
+ val = val.toString().replace(/\$|\,/g, '')
+ if (isNaN(val)) {
+ val = '0'
+ }
+ // eslint-disable-next-line eqeqeq
+ const sign = (val == (val = Math.abs(val)))
+ val = Math.floor(val * 100 + 0.50000000001)
+ let cents = val % 100
+ val = Math.floor(val / 100).toString()
+ if (cents < 10) {
+ cents = '0' + cents
+ }
+ // eslint-disable-next-line no-undef
+ for (let i = 0; i < Math.floor((val.length - (1 + i)) / 3); i++) {
+ val = val.substring(0, val.length - (4 * i + 3)) + ',' + val.substring(val.length - (4 * i + 3))
+ }
+ return (((sign) ? '' : '-') + val + '.' + cents)
+})
+
+/**
+ * 缈昏瘧浣跨敤鏂规硶锛岀洿鎺ヨ繑鍥炵炕璇戝悗鐨刵ame {{ code | dictType(value) }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-15 15:02:20
+ */
+Vue.filter('dictType', function (code, value) {
+ const dictTypeTree = Vue.ls.get(DICT_TYPE_TREE_DATA)
+ if (dictTypeTree === undefined) {
+ return '闇�閲嶆柊鐧诲綍'
+ }
+ // eslint-disable-next-line eqeqeq
+ const tree = dictTypeTree.filter(item => item.code == code)[0].children
+ if (tree === undefined || tree.length === 0) {
+ return '鏃犳瀛楀吀'
+ }
+ // eslint-disable-next-line eqeqeq
+ const values = tree.filter(item => item.code == value)
+ if (values.length === undefined || values.length === 0) {
+ return '鏃犳瀛楀吀'
+ }
+ return values[0].name
+})
+
+/**
+ * 鑾峰彇鏌愪釜code涓嬪瓧鍏哥殑鍒楄〃锛屽鐢ㄤ簬瀛楀吀涓嬫媺妗嗭紝浣跨敤鏂规硶锛歿{ code | dictData }}
+ *
+ * @author yubaoshan
+ * @date 2020-9-19 22:40:22
+ */
+Vue.filter('dictData', function (code) {
+ const dictTypeTree = Vue.ls.get(DICT_TYPE_TREE_DATA)
+ if (dictTypeTree === undefined) {
+ return []
+ }
+ let tree =[];
+ // eslint-disable-next-line eqeqeq
+ //const tree = dictTypeTree.filter(item => item.code == code)[0].children
+ var arr1 = dictTypeTree.filter(item => item.code == code)
+ if(arr1.length>0){
+ tree = arr1[0].children
+ }
+ if (tree === undefined) {
+ return []
+ }
+ return tree
+})
+
+/**
+ * 鑾峰彇鎵�鏈夊瓧鍏告暟缁�
+ *
+ * @author yubaoshan
+ * @date 2021-2-8 01:13
+ */
+Vue.filter('dictDataAll', function () {
+ return Vue.ls.get(DICT_TYPE_TREE_DATA)
+})
+
+/**
+ * 鑾峰彇鏋氫妇涓搴斿瓧娈电殑鍊�
+ */
+Vue.filter('enumsName',(code,arr,attr,name) => {
+ let str = ''
+ const index = arr.findIndex(item => item[attr] == code)
+ if(index > -1) {
+ str = arr[index][name]
+ }
+ return str
+})
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js b/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js
new file mode 100644
index 0000000..f0f6a32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/helper/permission.js
@@ -0,0 +1,51 @@
+export const PERMISSION_ENUM = {
+ 'add': { key: 'add', label: '鏂板' },
+ 'delete': { key: 'delete', label: '鍒犻櫎' },
+ 'edit': { key: 'edit', label: '淇敼' },
+ 'query': { key: 'query', label: '鏌ヨ' },
+ 'get': { key: 'get', label: '璇︽儏' },
+ 'enable': { key: 'enable', label: '鍚敤' },
+ 'disable': { key: 'disable', label: '绂佺敤' },
+ 'import': { key: 'import', label: '瀵煎叆' },
+ 'export': { key: 'export', label: '瀵煎嚭' }
+}
+
+function plugin (Vue) {
+ if (plugin.installed) {
+ return
+ }
+
+ !Vue.prototype.$auth && Object.defineProperties(Vue.prototype, {
+ $auth: {
+ get () {
+ const _this = this
+ return (permissions) => {
+ const [permission, action] = permissions.split('.')
+ const permissionList = _this.$store.getters.roles.permissions
+ return permissionList.find((val) => {
+ return val.permissionId === permission
+ }).actionList.findIndex((val) => {
+ return val === action
+ }) > -1
+ }
+ }
+ }
+ })
+
+ !Vue.prototype.$enum && Object.defineProperties(Vue.prototype, {
+ $enum: {
+ get () {
+ // const _this = this;
+ return (val) => {
+ let result = PERMISSION_ENUM
+ val && val.split('.').forEach(v => {
+ result = result && result[v] || null
+ })
+ return result
+ }
+ }
+ }
+ })
+}
+
+export default plugin
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js b/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js
new file mode 100644
index 0000000..d041ef2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/messagesend.js
@@ -0,0 +1,31 @@
+import Vue from 'vue'
+
+// signalR 瀹㈡埛绔皟鐢�
+// 鏈嶅姟鍣ㄧ鍙戦�佹秷鎭�
+
+// 缁欐煇涓�涓釜浜�
+export function messagesendtosomeone (parameter) {
+ Vue.socket.invoke('ClientsSendMessage', { userId: parameter.userId, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+ .then(response => {
+ })
+}
+
+// 缁欐墍鏈変汉
+export function messagesendtoAll (parameter) {
+ Vue.socket.invoke('ClientsSendMessagetoAll', { title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+ .then(response => {
+ })
+}
+
+// 缁欐煇浜涗汉
+export function messagesendtouserList (parameter) {
+ Vue.socket.invoke('ClientsSendMessagetoUsers', { userId: parameter.userList, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+ .then(response => {
+ })
+}
+// 闄や簡鍙戦�佷汉 鍙戦�佺粰鍓╀笅鐨勪汉
+export function messagesendtoexsomeone (parameter) {
+ Vue.socket.invoke('ClientsSendMessagetoOther', { userIds: parameter.userIds, title: parameter.title, message: parameter.message, messagetype: parameter.messagetype })
+ .then(response => {
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js b/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js
new file mode 100644
index 0000000..87d6c86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/mixin.js
@@ -0,0 +1,85 @@
+/*
+ * @Author: your name
+ * @Date: 2021-05-18 23:01:55
+ * @LastEditTime: 2021-05-19 00:49:11
+ * @LastEditors: your name
+ * @Description: In User Settings Edit
+ * @FilePath: \frontend\src\utils\mixin.js
+ */
+// import Vue from 'vue'
+import { deviceEnquire, DEVICE_TYPE } from '@/utils/device'
+import { mapState } from 'vuex'
+
+// const mixinsComputed = Vue.config.optionMergeStrategies.computed
+// const mixinsMethods = Vue.config.optionMergeStrategies.methods
+
+const mixin = {
+ computed: {
+ ...mapState({
+ layoutMode: state => state.app.layout,
+ navTheme: state => state.app.theme,
+ primaryColor: state => state.app.color,
+ colorWeak: state => state.app.weak,
+ fixedHeader: state => state.app.fixedHeader,
+ fixSiderbar: state => state.app.fixSiderbar,
+ fixSidebar: state => state.app.fixSiderbar,
+ contentWidth: state => state.app.contentWidth,
+ autoHideHeader: state => state.app.autoHideHeader,
+ sidebarOpened: state => state.app.sidebar,
+ multiTab: state => state.app.multiTab,
+ crumbsState: state => state.app.crumbsState
+ })
+ },
+ methods: {
+ isTopMenu () {
+ return this.layoutMode === 'topmenu'
+ },
+ isSideMenu () {
+ return !this.isTopMenu()
+ }
+ }
+}
+
+const mixinDevice = {
+ computed: {
+ ...mapState({
+ device: state => state.app.device
+ })
+ },
+ methods: {
+ isMobile () {
+ return this.device === DEVICE_TYPE.MOBILE
+ },
+ isDesktop () {
+ return this.device === DEVICE_TYPE.DESKTOP
+ },
+ isTablet () {
+ return this.device === DEVICE_TYPE.TABLET
+ }
+ }
+}
+
+const AppDeviceEnquire = {
+ mounted () {
+ const { $store } = this
+ deviceEnquire(deviceType => {
+ switch (deviceType) {
+ case DEVICE_TYPE.DESKTOP:
+ $store.commit('TOGGLE_DEVICE', 'desktop')
+ $store.dispatch('setSidebar', true)
+ break
+ case DEVICE_TYPE.TABLET:
+ $store.commit('TOGGLE_DEVICE', 'tablet')
+ $store.dispatch('setSidebar', false)
+ break
+ case DEVICE_TYPE.MOBILE:
+ default:
+ $store.commit('TOGGLE_DEVICE', 'mobile')
+ $store.dispatch('setSidebar', true)
+ break
+ }
+ })
+ }
+}
+
+export { mixin, AppDeviceEnquire, mixinDevice }
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js b/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js
new file mode 100644
index 0000000..3b91fe3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/permissions.js
@@ -0,0 +1,27 @@
+import store from '@/store'
+
+export function actionToObject (json) {
+ try {
+ return JSON.parse(json)
+ } catch (e) {
+ }
+ return []
+}
+
+/**
+ * 鎺у埗鎸夐挳鏄惁鏄剧ず
+ *
+ * @author yubaoshan
+ * @date 2020/06/27 02:34
+ */
+export function hasBtnPermission (permission) {
+ const myBtns = store.getters.buttons
+ const allBtns = store.getters.allButtons
+ const admintype = store.getters.admintype
+ // eslint-disable-next-line eqeqeq
+ if (admintype == '1') {
+ return true
+ }
+ // 鎵�鏈夌郴缁熸寜閽腑涓嶅瓨鍦紝鍒欎笉闄愬埗
+ return allBtns.indexOf(permission) === -1 || myBtns.indexOf(permission) > -1
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/request.js b/iWare_RawMaterialWarehouse_Web/src/utils/request.js
new file mode 100644
index 0000000..111a5a9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/request.js
@@ -0,0 +1,167 @@
+import Vue from 'vue'
+import axios from 'axios'
+import store from '@/store'
+// import router from './router'
+import { message, Modal, notification } from 'ant-design-vue' /// es/notification
+import { VueAxios } from './axios'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
+
+// 鍒涘缓 axios 瀹炰緥
+const service = axios.create({
+ // baseURL: process.env.VUE_APP_API_BASE_URL + '/api', // api base_url
+ baseURL: window._CONFIG.baseUrl+'/api',
+ timeout: 6000 // 璇锋眰瓒呮椂鏃堕棿
+})
+
+const err = error => {
+ if (error.response) {
+ const data = error.response.data
+ const token = Vue.ls.get(ACCESS_TOKEN)
+
+ if (error.response.status === 403) {
+ notification.error({
+ message: 'Forbidden',
+ description: data.message
+ })
+ }
+ if (error.response.status === 500) {
+ if (data.message && data.message.length > 0) {
+ message.error(data.message)
+ }
+ }
+ if (error.response.status === 401 && !(data.result && data.result.isLogin)) {
+ notification.error({
+ message: 'Unauthorized',
+ description: 'Authorization verification failed'
+ })
+ if (token) {
+ store.dispatch('Logout').then(() => {
+ setTimeout(() => {
+ window.location.reload()
+ }, 1500)
+ })
+ }
+ }
+ }
+ return Promise.reject(error)
+}
+
+// request interceptor
+service.interceptors.request.use(config => {
+ const token = Vue.ls.get(ACCESS_TOKEN)
+ const refreshToken = Vue.ls.get('X-Access-Token')
+ if (token) {
+ config.headers['Authorization'] = 'Bearer ' + token
+ }
+ if (refreshToken) {
+ config.headers['X-Authorization'] = 'Bearer ' + refreshToken
+ }
+
+ ///-----------------------杩欓噷寮�濮�
+ const params = config.params || {};
+ // get鍙傛暟缂栫爜
+ if (config.method?.toUpperCase() === "GET" && params) {
+ let url = config.url + "?";
+ for (const propName of Object.keys(params)) {
+ const value = params[propName];
+ if (
+ value !== void 0 &&
+ value !== null &&
+ typeof value !== "undefined"
+ ) {
+ if (typeof value === "object") {
+ for (const val of Object.keys(value)) {
+ const params = propName + "[" + val + "]";
+ const subPart = encodeURIComponent(params) + "=";
+ url += subPart + encodeURIComponent(value[val]) + "&";
+ }
+ } else {
+ url += `${propName}=${encodeURIComponent(value)}&`;
+ }
+ }
+ }
+ // 缁� get 璇锋眰鍔犱笂鏃堕棿鎴冲弬鏁帮紝閬垮厤浠庣紦瀛樹腑鎷挎暟鎹�
+ // const now = new Date().getTime()
+ // params = params.substring(0, url.length - 1) + `?_t=${now}`
+ url = url.slice(0, -1);
+ config.params = {};
+ config.url = url;
+ }
+
+ return config
+}, err)
+
+
+const _requestErrAlert = function(msg,callback,oktext='纭') {
+ Modal.error({
+ title: '绯荤粺鎻愮ず锛�',
+ content: msg,
+ keyboard: false,
+ okText: oktext,
+ onOk: () => {
+ callback && callback()
+ }
+ })
+}
+
+const requerstErrMsg = function(msg){
+
+}
+
+/**
+ * response interceptor
+ * 鎵�鏈夎姹傜粺涓�杩斿洖
+ */
+service.interceptors.response.use(response => {
+ // LocalStorage 瀛樺偍鐨� token 鍜� refreshToken锛屼笉璁惧畾杩囨湡鏃堕棿锛岀敱鏈嶅姟绔粺涓�澶勭悊
+ if (response.headers['access-token'] && response.headers['access-token'] !== 'invalid_token') {
+ Vue.ls.set(ACCESS_TOKEN, response.headers['access-token'] /*, 7 * 24 * 60 * 60 * 1000 */)
+ store.commit('SET_TOKEN', response.headers['access-token'])
+ }
+ if (response.headers['x-access-token']) {
+ Vue.ls.set('X-Access-Token', response.headers['x-access-token'] /*, 7 * 24 * 60 * 60 * 1000 */)
+ }
+ if (response.request.responseType === 'blob') {
+ return response
+ }
+
+ if (response.status===200) {
+ const resData = response.data
+ const code = response.data.code
+ if (resData.success && ((code && code === 200)||(response.data.repCode==='0000'))) {
+ return resData
+ } else if (!store.state.app.hasError && code === 401) {
+ _requestErrAlert(resData.message,()=>{
+ store.dispatch('SetHasError', false)
+ window.location.reload()
+ },'閲嶆柊鐧诲綍')
+
+ // 鎺堟潈杩囨湡锛屾竻鐞嗘湰鍦扮紦瀛樼殑璁板綍锛屼笉璁� Modal.error 鐨� onOk 鏄惁纭锛屽厛娓呯悊
+ // 鍚﹀垯浼氬湪娌℃寜 OK 鏃讹紝鍒锋柊缃戦〉鎴栬�呴噸鏂拌闂紝閮戒細寮瑰嚭鈥滄湭鎺堟潈鐨勬彁绀烘鈥�
+ // 杩欐牱鐨勮皟鏁村悗锛孴OKEN 涓虹┖鐩存帴閲嶅畾鍚戯紝SetHasError 鐨勮缃拰鍒ゆ柇鍏跺疄宸茬粡鐢ㄤ笉涓�
+ Vue.ls.remove(ACCESS_TOKEN)
+ Vue.ls.remove('X-Access-Token')
+ store.dispatch('SetHasError', true)
+ return resData
+ } else {
+ let msg = resData.message;
+ if (!msg) msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒';
+ message.error(msg)
+ console.log(response)
+ return Promise.reject(response)
+ }
+ } else {
+ message.error('缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒')
+ console.log(response)
+ return Promise.reject(response)
+ }
+}, err)
+
+const installer = {
+ vm: {},
+ install(Vue) {
+ Vue.use(VueAxios, service)
+ }
+}
+
+export { installer as VueAxios, service as axios }
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js b/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js
new file mode 100644
index 0000000..e88b0d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/routeConvert.js
@@ -0,0 +1,30 @@
+import cloneDeep from 'lodash.clonedeep'
+
+export function convertRoutes (nodes) {
+ if (!nodes) return null
+
+ nodes = cloneDeep(nodes)
+
+ let queue = Array.isArray(nodes) ? nodes.concat() : [nodes]
+
+ while (queue.length) {
+ const levelSize = queue.length
+
+ for (let i = 0; i < levelSize; i++) {
+ const node = queue.shift()
+
+ if (!node.children || !node.children.length) continue
+
+ node.children.forEach(child => {
+ // 杞寲鐩稿璺緞
+ if (child.path[0] !== '/' && !child.path.startsWith('http')) {
+ child.path = node.path.replace(/(\w*)[/]*$/, `$1/${child.path}`)
+ }
+ })
+
+ queue = queue.concat(node.children)
+ }
+ }
+
+ return nodes
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/socket.js b/iWare_RawMaterialWarehouse_Web/src/utils/socket.js
new file mode 100644
index 0000000..0ba4d69
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/socket.js
@@ -0,0 +1,216 @@
+import store from '@/store'
+import { Modal, message } from 'ant-design-vue'
+import * as SignalR from '@microsoft/signalr'
+
+const EventEmitter = require('events')
+
+const defaultOptions = {
+ log: false
+}
+
+class SocketConnection extends EventEmitter {
+ constructor(connection, options = {}) {
+ super()
+ this.connection = connection
+ this.options = Object.assign(defaultOptions, options)
+ this.listened = []
+ this.toSend = []
+ this.offline = false
+ this.socket = undefined
+ }
+
+ /**
+ * 鍚屼竴绉嶆秷鎭彧瀹氫箟涓�娆�
+ *
+ * @param {string| symbol} event
+ * @param {(...args: any[]) => void} listener
+ * @memberof SocketConnection
+ */
+ one(event, listener) {
+ if (this.listeners(event).length === 0) {
+ this.on(event, listener)
+ }
+ }
+
+ async _initialize() {
+ if(this.socket == undefined){
+ return;
+ }
+ try {
+ await this.socket.start()
+ this.emit('onstart')
+ if (this.offline) {
+ this.emit('onrestart')
+ }
+ this.offline = false
+ } catch (error) {
+ setTimeout(async () => {
+ await this._initialize()
+ }, 5000)
+ }
+ }
+
+ async start(token) {
+ // 缁勪欢閲嶆柊鍔犺浇鏃�, 濡傛灉 socket 瀛樺湪, 涓嶉渶瑕佹柊寤�
+ if (!this.socket) {
+ this.socket = new SignalR.HubConnectionBuilder()
+ .configureLogging(SignalR.LogLevel.Information)
+ .withUrl(`${process.env.VUE_APP_SOCKET_BASE_URL}/hubs/chathub`, {
+ accessTokenFactory: () => token,
+ skipNegotiation: true,
+ transport: SignalR.HttpTransportType.WebSockets
+ })
+ .build()
+
+ this.socket.onclose(async () => {
+ this.offline = true
+ this.emit('onclose')
+ await this._initialize()
+ })
+
+ this.socket.on('ForceExist', () => {
+ // 鍏抽棴杩炴帴
+ this.socket.stop()
+ // 蹇呴』
+ this.socket = undefined
+ store
+ .dispatch('Logout')
+ .then(() => {
+ Modal.success({
+ title: '娑堟伅',
+ content: '浣犲凡琚己鍒朵笅绾�',
+ keyboard: false,
+ onOk: () => {
+ window.location.reload()
+ }
+ })
+ })
+ .catch(err => {
+ message.error({
+ title: '閿欒',
+ description: err.message
+ })
+ })
+ })
+
+ this.socket.on('SingleLoginForceExist', () => {
+ // 鍏抽棴杩炴帴
+ this.socket.stop()
+ store
+ .dispatch('Logout')
+ .then(() => {
+ Modal.success({
+ title: '娑堟伅',
+ content: '鎮ㄧ殑璐﹀彿宸插湪鍏朵粬鍦版柟鐧诲綍锛岃寮哄埗涓嬬嚎',
+ keyboard: false,
+ onOk: () => {
+ window.location.reload()
+ }
+ })
+ })
+ .catch(err => {
+ message.error({
+ title: '閿欒',
+ description: err.message
+ })
+ })
+ })
+
+ await this._initialize()
+ }
+ }
+
+ async authenticate(token) {
+ await this.start(token)
+ }
+
+ listen(method) {
+ if (this.offline) return
+
+ if (this.listened.some(v => v === method)) return
+ this.listened.push(method)
+
+ this.one('onstart', () => {
+ this.listened.forEach(method => {
+ this.socket.on(method, data => {
+ if (this.options.log) {
+ }
+
+ this.emit(method, data)
+ })
+ })
+ })
+ }
+
+ send(methodName, ...args) {
+ if (this.options.log) {
+ }
+ if (this.offline) return
+
+ if (this.socket) {
+ this.socket.send(methodName, ...args)
+ return
+ }
+
+ this.one('onstart', () => this.socket.send(methodName, ...args))
+ }
+
+ async invoke(methodName, ...args) {
+ if (this.options.log) {
+ }
+ if (this.offline) return false
+
+ if (this.socket) {
+ return this.socket.invoke(methodName, ...args)
+ }
+
+ // eslint-disable-next-line no-async-promise-executor
+ return new Promise(async resolve => this.one('onstart', () => resolve(this.socket.invoke(methodName, ...args))))
+ }
+}
+
+if (!SignalR) {
+ throw new Error('[Vue-SignalR] Cannot locate signalr-client')
+}
+
+function install(Vue, connection) {
+ if (!connection) {
+ throw new Error('[Vue-SignalR] Cannot locate connection')
+ }
+ connection = process.env.VUE_APP_SOCKET_BASE_URL+connection
+ const Socket = new SocketConnection(connection)
+
+ Vue.socket = Socket
+
+ Object.defineProperties(Vue.prototype, {
+ $socket: {
+ get() {
+ return Socket
+ }
+ }
+ })
+
+ Vue.mixin({
+ created() {
+ if (this.$options.sockets) {
+ const methods = Object.getOwnPropertyNames(this.$options.sockets)
+
+ methods.forEach(method => {
+ Socket.listen(method)
+
+ Socket.one(method, data => this.$options.sockets[method].call(this, data))
+ })
+ }
+
+ if (this.$options.subscribe) {
+ Socket.one('authenticated', () => {
+ this.$options.subscribe.forEach(channel => {
+ Socket.invoke('join', channel)
+ })
+ })
+ }
+ }
+ })
+}
+
+export default install
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/util.js b/iWare_RawMaterialWarehouse_Web/src/utils/util.js
new file mode 100644
index 0000000..ef9bfd7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/util.js
@@ -0,0 +1,256 @@
+export function dateFormat(dateString,fmt) {
+ let date = new Date(dateString);
+ let ret;
+ const opt = {
+ "Y+": date.getFullYear().toString(), // 骞�
+ "m+": (date.getMonth() + 1).toString(), // 鏈�
+ "d+": date.getDate().toString(), // 鏃�
+ "H+": date.getHours().toString(), // 鏃�
+ "M+": date.getMinutes().toString(), // 鍒�
+ "S+": date.getSeconds().toString() // 绉�
+ // 鏈夊叾浠栨牸寮忓寲瀛楃闇�姹傚彲浠ョ户缁坊鍔狅紝蹇呴』杞寲鎴愬瓧绗︿覆
+ };
+ for (let k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
+ };
+ };
+ return fmt;
+}
+
+export function timeFix () {
+ const time = new Date()
+ const hour = time.getHours()
+ return hour < 9 ? '鏃╀笂濂�' : hour <= 11 ? '涓婂崍濂�' : hour <= 13 ? '涓崍濂�' : hour < 20 ? '涓嬪崍濂�' : '鏅氫笂濂�'
+}
+
+export function welcome () {
+ const arr = ['浼戞伅涓�浼氬効鍚�', '鍑嗗鍚冧粈涔堝憿?', '瑕佷笉瑕佹墦涓�鎶� LOL', '鎴戠寽浣犲彲鑳界疮浜�']
+ const index = Math.floor(Math.random() * arr.length)
+ return arr[index]
+}
+
+/**
+ * 瑙﹀彂 window.resize
+ */
+export function triggerWindowResizeEvent () {
+ const event = document.createEvent('HTMLEvents')
+ event.initEvent('resize', true, true)
+ event.eventType = 'message'
+ window.dispatchEvent(event)
+}
+
+export function handleScrollHeader (callback) {
+ let timer = 0
+
+ let beforeScrollTop = window.pageYOffset
+ callback = callback || function () {}
+ window.addEventListener(
+ 'scroll',
+ event => {
+ clearTimeout(timer)
+ timer = setTimeout(() => {
+ let direction = 'up'
+ const afterScrollTop = window.pageYOffset
+ const delta = afterScrollTop - beforeScrollTop
+ if (delta === 0) {
+ return false
+ }
+ direction = delta > 0 ? 'down' : 'up'
+ callback(direction)
+ beforeScrollTop = afterScrollTop
+ }, 50)
+ },
+ false
+ )
+}
+
+export function isIE () {
+ const bw = window.navigator.userAgent
+ const compare = (s) => bw.indexOf(s) >= 0
+ const ie11 = (() => 'ActiveXObject' in window)()
+ return compare('MSIE') || ie11
+}
+
+/**
+ * Remove loading animate
+ * @param id parent element id or class
+ * @param timeout
+ */
+export function removeLoadingAnimate (id = '', timeout = 1500) {
+ if (id === '') {
+ return
+ }
+ setTimeout(() => {
+ document.body.removeChild(document.getElementById(id))
+ }, timeout)
+}
+
+/* 鐢熸垚闅忔満uuid
+* n锛歶uid鐨勯暱搴�
+* type锛氱被鍨嬶紙0-澶у皬鍐欏瓧姣�+鏁板瓧锛�1-灏忓啓瀛楁瘝+鏁板瓧锛�2-绾暟瀛楋紝3-澶у皬鍐欏瓧姣嶏紝4-灏忓啓瀛楁瘝锛�
+*/
+export function uuid(n=6,type=0){
+ let res='', uType=0;
+ const __uuidLetter = function(){
+ const __tempArr = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
+ return __tempArr[Math.floor(Math.random()*26)];
+ }
+ for (let i=0;i<n;i++) {
+ switch(type) {
+ case 1:
+ uType = Math.floor(Math.random()*2);
+ if (uType===0) {
+ res += Math.floor(Math.random()*10).toString()
+ } else {
+ res += __uuidLetter()
+ }
+ break;
+ case 2:
+ res += Math.floor(Math.random()*10).toString()
+ break;
+ case 3:
+ uType = Math.floor(Math.random()*2);
+ if (uType===0) {
+ res += __uuidLetter()
+ } else {
+ res += __uuidLetter().toUpperCase()
+ }
+ break;
+ case 4:
+ res += __uuidLetter()
+ break;
+ default:
+ uType = Math.floor(Math.random()*3);
+ if (uType===0) {
+ res += Math.floor(Math.random()*10).toString()
+ } else if (uType===1) {
+ res += __uuidLetter()
+ } else {
+ res += __uuidLetter().toUpperCase()
+ }
+ break;
+ }
+ }
+ return res;
+}
+
+/**
+ * 妫�楠屼笂浼犳枃浠舵槸鍚﹀悎鏍�
+ * @param fileInfo
+ * @param maxSize
+ * @param typeArr
+ */
+export function checkFile(fileInfo, maxSize, typeArr) {
+ if (fileInfo.size >= maxSize) {
+ fileInfo.status = 'error'
+ return {
+ success: false,
+ msg: "鏂囦欢澶у皬瓒呰繃鏈�澶ч檺搴�"
+ }
+ }
+ if (fileInfo.size <= 0) {
+ fileInfo.status = 'error'
+ return {
+ success: false,
+ msg: "鎵�閫変俊鎭腑瀛樺湪绌烘枃浠舵垨鐩綍"
+ }
+ }
+ const type = fileInfo.name.slice(fileInfo.name.lastIndexOf('.') + 1).toLowerCase()
+ if (!typeArr.includes('.' + type)) {
+ fileInfo.status = 'error'
+ return {
+ success: false,
+ msg: "涓嶆敮鎸佷互 ."+ type + "鎵╁睍绫诲瀷鐨勬枃浠舵垨鍥剧墖涓婁紶!"
+ }
+ }
+ return {
+ success: true,
+ msg: "涓婁紶鎴愬姛!"
+ }
+}
+
+export function parseDemandText() {
+ let text = "1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲�俓n";
+ text += "2.涓轰繚璇佹暟鎹『鍒╁鍏ワ紝璇蜂笅杞絓""+ "<a-button onclick=\"downloadFile()\" " +
+ "style=\"width: 100%;text-align: center;color:#FA541C;cursor:pointer;\">瀵煎叆妯℃澘</a-button>\"\n";
+ text += "3.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻�俓n";
+ text += "4.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��";
+ return text;
+}
+
+/**
+ * 鏍规嵁鍒楅泦鍚堜俊鎭敓鎴愭枃鏈弿杩�
+ * @param columnInfos
+ */
+export function parseExcelFieldText(columnInfos) {
+ let text = "", typeName = {
+ "System.String": "鏂囨湰銆傚: 閽熷瓭鏈�",
+ "System.Int32": "鏁板瓧銆傚: 4377",
+ "System.Int64": "鏁板瓧銆傚: 4377",
+ "System.Decimal": "鏁板瓧銆傚: 43.77",
+ "System.DateTimeOffset": "鏃ユ湡銆� 濡�: 2023/3/1",
+ "System.DateTime": "鏃ユ湡銆� 濡�: 2023/3/1",
+ };
+
+ columnInfos.forEach(x => {
+ text += x.columnComment + "(" + (x.isRequired ? "蹇呭~" : "闈炲繀濉�") + "): ";
+ text += (typeName[x.dataType] ? typeName[x.dataType] : ("鏂囨湰銆� 鍙�夐」涓�: " + x.remark)) + "\n" ;
+ });
+
+ return text;
+}
+
+export function downloadFile(res) {
+ let blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+ let contentDisposition = res.headers['content-disposition']
+ let pattern = new RegExp('filename=([^;]+\\.[^\.;]+);*')
+ let result = pattern.exec(contentDisposition)
+ let filename = result[1];
+ let downloadElement = document.createElement('a')
+ let href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ let reg = /^["](.*)["]$/g
+ downloadElement.style.display = 'none'
+ downloadElement.href = href
+ downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+}
+
+export function getObjectType(obj){
+ if (typeof obj !== 'object') {
+ return null;
+ } else {
+ let objTypeStr = Object.prototype.toString.call(obj).toLowerCase().trim();
+ objTypeStr = objTypeStr.substr(1,objTypeStr.length-2)
+ let tempA = objTypeStr.split(" ");
+ return tempA[1];
+ }
+}
+
+export function getUserDefaultArea($store,arr,valueField='code'){
+ let res = ''
+ const _default = $store.getters['userInfo']['workShopType']
+ for (let i=0;i<arr.length;i++){
+ if (String(arr[i][valueField])===Sring(_default)) {
+ res = _default
+ break;
+ }
+ }
+ return res
+}
+
+export function getUserDefaultLine($store,arr,valueField='productionlineId'){
+ let res = ''
+ const _default = $store.getters['userInfo']['productionlineId']
+ for (let i=0;i<arr.length;i++){
+ if (arr[i][valueField]===_default) {
+ res = _default
+ break;
+ }
+ }
+ return res
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/utils/utils.less b/iWare_RawMaterialWarehouse_Web/src/utils/utils.less
new file mode 100644
index 0000000..ba75a67
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/utils/utils.less
@@ -0,0 +1,50 @@
+.textOverflow() {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ word-break: break-all;
+}
+
+.textOverflowMulti(@line: 3, @bg: #fff) {
+ position: relative;
+ max-height: @line * 1.5em;
+ margin-right: -1em;
+ padding-right: 1em;
+ overflow: hidden;
+ line-height: 1.5em;
+ text-align: justify;
+ &::before {
+ position: absolute;
+ right: 14px;
+ bottom: 0;
+ padding: 0 1px;
+ background: @bg;
+ content: '...';
+ }
+ &::after {
+ position: absolute;
+ right: 14px;
+ width: 1em;
+ height: 1em;
+ margin-top: 0.2em;
+ background: white;
+ content: '';
+ }
+}
+
+// mixins for clearfix
+// ------------------------
+.clearfix() {
+ zoom: 1;
+ &::before,
+ &::after {
+ display: table;
+ content: ' ';
+ }
+ &::after {
+ clear: both;
+ height: 0;
+ font-size: 0;
+ visibility: hidden;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/404.vue b/iWare_RawMaterialWarehouse_Web/src/views/404.vue
new file mode 100644
index 0000000..ed31e84
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/404.vue
@@ -0,0 +1,18 @@
+<template>
+ <div>
+ 404 page
+ </div>
+</template>
+
+<script>
+export default {
+ name: '404'
+}
+</script>
+
+<style scoped>
+
+
+
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/Home.vue b/iWare_RawMaterialWarehouse_Web/src/views/Home.vue
new file mode 100644
index 0000000..ead54e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/Home.vue
@@ -0,0 +1,215 @@
+<template>
+ <div class="home">
+ <div class="banner">
+ <img alt="Vue logo" style="width: 64px; height: 64px" src="../assets/logo.jpg">
+ <h3 style="margin-top: 1rem">Welcome to Your Vue.js App</h3>
+ </div>
+
+ <br/>
+
+ <h2># Trend 缁勪欢 </h2>
+
+ <a-divider> 姝e父 </a-divider>
+
+ <a-card>
+
+ <trend flag="up" style="margin-right: 16px;">
+ <span slot="term">宸ヨ祫</span>
+ 5%
+ </trend>
+ <trend flag="up" style="margin-right: 16px;">
+ <span slot="term">宸ヤ綔閲�</span>
+ 50%
+ </trend>
+ <trend flag="down">
+ <span slot="term">韬綋鐘舵��</span>
+ 50%
+ </trend>
+
+ </a-card>
+
+ <a-divider> 棰滆壊鍙嶈浆 </a-divider>
+
+ <a-card style="margin-bottom: 3rem">
+
+ <trend flag="up" :reverse-color="true" style="margin-right: 16px;">
+ <span slot="term">宸ヨ祫</span>
+ 5%
+ </trend>
+ <trend flag="down" :reverse-color="true" style="margin-right: 16px;">
+ <span slot="term">宸ヤ綔閲�</span>
+ 50%
+ </trend>
+
+ </a-card>
+
+ <h2># AvatarList 缁勪欢 </h2>
+
+ <a-divider> AvatarList </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <avatar-list :max-length="3">
+ <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+ <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+
+ </avatar-list>
+
+ <a-divider type="vertical" style="margin: 0 16px" />
+
+ <avatar-list size="mini">
+ <avatar-list-item tips="Jake" src="https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png" />
+ <avatar-list-item tips="Andy" src="https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png" />
+ <avatar-list-item tips="Niko" src="https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png" />
+ </avatar-list>
+ </a-card>
+
+ <h2># CountDown 缁勪欢 </h2>
+
+ <a-divider> CountDown </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <count-down
+ style="font-size: 2rem"
+ :target="new Date().getTime() + 3000000"
+ :on-end="onEndHandle">
+ </count-down>
+
+ <a-divider type="vertical" style="margin: 0 16px" />
+
+ <count-down
+ style="font-size: 2rem"
+ :target="new Date().getTime() + 10000"
+ :on-end="onEndHandle2">
+ </count-down>
+ </a-card>
+
+ <h2># Ellipsis 缁勪欢 </h2>
+
+ <a-divider> Ellipsis </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <ellipsis :length="100" tooltip>
+ There were injuries alleged in three cases in 2015, and a
+ fourth incident in September, according to the safety recall report. After meeting with US regulators in October, the firm decided to issue a voluntary recall.
+ </ellipsis>
+ </a-card>
+
+ <h2># NumberInfo 缁勪欢 </h2>
+
+ <a-divider> NumberInfo </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <number-info
+ :sub-title="() => { return 'Visits this week' }"
+ :total="12321"
+ status="up"
+ :sub-total="17.1"></number-info>
+ </a-card>
+
+ <h2># TagSelect 缁勪欢 </h2>
+
+ <a-divider> TagSelect </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <tag-select>
+ <tag-select-option value="cat1">绫荤洰1</tag-select-option>
+ <tag-select-option value="cat2">绫荤洰2</tag-select-option>
+ <tag-select-option value="cat3">绫荤洰3</tag-select-option>
+ <tag-select-option value="cat4">绫荤洰4</tag-select-option>
+ <tag-select-option value="cat5">绫荤洰5</tag-select-option>
+ <tag-select-option value="cat6">绫荤洰6</tag-select-option>
+ <tag-select-option value="cat7">绫荤洰7</tag-select-option>
+ </tag-select>
+ </a-card>
+
+ <h2># DescriptionList 缁勪欢 </h2>
+
+ <a-divider> DescriptionList </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <description-list title="缁勫悕绉�" size="small">
+ <description-list-item term="璐熻矗浜�">鏋椾笢涓�</description-list-item>
+ <description-list-item term="瑙掕壊鐮�">1234567</description-list-item>
+ <description-list-item term="鎵�灞為儴闂�">XX鍏徃-YY閮�</description-list-item>
+ <description-list-item term="杩囨湡鏃堕棿">2018-08-08</description-list-item>
+ <description-list-item term="鎻忚堪">杩欐鎻忚堪寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱寰堥暱...</description-list-item>
+ </description-list>
+ </a-card>
+
+ <a-divider> TagCloud </a-divider>
+ <a-card style="margin-bottom: 3rem">
+ <tag-cloud :tag-list="tagCloudData"></tag-cloud>
+ </a-card>
+ </div>
+</template>
+
+<script>
+// @ is an alias to /src
+
+import Trend from '@/components/Trend'
+import AvatarList from '@/components/AvatarList'
+import CountDown from '@/components/CountDown/CountDown'
+import Ellipsis from '@/components/Ellipsis'
+import NumberInfo from '@/components/NumberInfo'
+import TagSelect from '@/components/TagSelect'
+import { DescriptionList, TagCloud } from '@/components/'
+
+const AvatarListItem = AvatarList.AvatarItem
+const TagSelectOption = TagSelect.Option
+
+const DescriptionListItem = DescriptionList.Item
+
+export default {
+ name: 'Home',
+ components: {
+ NumberInfo,
+ Ellipsis,
+ CountDown,
+ Trend,
+ AvatarList,
+ AvatarListItem,
+ TagSelect,
+ TagSelectOption,
+ TagCloud,
+ DescriptionList,
+ DescriptionListItem
+ },
+ data () {
+ return {
+ targetTime: new Date().getTime() + 3900000,
+ tagCloudData: []
+ }
+ },
+ created () {
+ this.getTagCloudData()
+ },
+ methods: {
+ onEndHandle () {
+ this.$message.success('CountDown callback!!!')
+ },
+ onEndHandle2 () {
+ this.$notification.open({
+ message: 'Notification Title',
+ description: 'This is the content of the notification. This is the content of the notification. This is the content of the notification.'
+ })
+ },
+ getTagCloudData () {
+ this.$http.get('/data/antv/tag-cloud').then(res => {
+ this.tagCloudData = res.result
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+ .home {
+ width: 900px;
+ margin: 0 auto;
+ padding: 25px 0;
+ }
+ .home > .banner {
+ text-align: center;
+ padding: 25px 0;
+ margin: 25px 0;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue
new file mode 100644
index 0000000..17ed35b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/addForm.vue
@@ -0,0 +1,416 @@
+<template>
+ <a-modal
+ title="鏂板浠g爜鐢熸垚閰嶇疆"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴�"
+ v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+ <a-select-option
+ v-for="(item,index) in databaseNameData"
+ :key="index"
+ :value="item.databaseName"
+ @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚琛�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+ v-decorator="['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in tableNameData"
+ :key="index"
+ :value="item.tableName"
+ @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ笟鍔″悕"
+ v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <!--<a-col :md="12" :sm="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="绉婚櫎鍓嶇紑"
+ >
+ <a-radio-group v-decorator="['tablePrefix',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绉婚櫎鍓嶇紑锛�' }]}]" >
+ <a-radio v-for="(item,index) in tablePrefixData" :key="index" :value="item.code" @click="tablePrefixRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col> -->
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ唬鐮佸寘鍚�"
+ v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+ v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <!--<a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ label="鍔熻兘鍚�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ姛鑳藉悕" v-decorator="['tableComment', {rules: [{required: true, message: '璇疯緭鍏ュ姛鑳藉悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ label="绫诲悕"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ョ被鍚�" v-decorator="['className', {rules: [{required: true, message: '璇疯緭鍏ョ被鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+ <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in generateTypeData"
+ :key="index"
+ :value="item.code"
+ @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="妯″潡璺緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ユā鍧楄矾寰�"
+ v-decorator="['moduleName', {rules: [{required: true, message: '璇疯緭鍏ユā鍧楄矾寰勶紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍓嶇椤圭洰鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ墠绔」鐩悕"
+ v-decorator="['frontProName', {rules: [{required: true, message: '璇疯緭鍏ュ墠绔」鐩悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鏄惁鍙槸鏌ヨ" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isOnlyQuery', { valuePropName: 'checked' }]" />
+ <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鏄惁鏀寔瀵煎叆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isWhetherImport', { valuePropName: 'checked' }]" />
+
+ <!-- <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag> -->
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree
+ } from '@/api/modular/system/menuManage'
+ import {
+ codeGenerateDatabaseList,
+ codeGenerateInformationList,
+ codeGenerateAdd
+ } from '@/api/modular/gen/codeGenerateManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ appData: [],
+ menuTreeData: [],
+ databaseNameData:[],
+ tableNameData: [],
+ // tablePrefixData: [],
+ generateTypeData: [],
+ confirmLoading: false,
+ // tablePrefixValue: 'N',
+ databaseNameValue:'',
+ tableNameValue: '',
+ moduleName:'',
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add() {
+ this.visible = true
+ this.codeGenerateDatabaseList()
+ // 澶氬簱榛樿闇�瑕侀�夋嫨鍚庤皟鐢�
+ // this.codeGenerateInformationList()
+ this.dataTypeItem()
+ this.selectedByDefault()
+
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ },
+ /**
+ * 榛樿閫変腑椤�
+ */
+ selectedByDefault() {
+ this.form.getFieldDecorator('nameSpace', {
+ initialValue: 'Admin.NET.Application'
+ })
+ this.form.getFieldDecorator('frontProName', {
+ initialValue: 'My_Admin.NET_Template_Web'
+ })
+ // this.form.getFieldDecorator('tablePrefix', { valuePropName: 'checked', initialValue: 'N' })
+ this.form.getFieldDecorator('generateType', {
+ valuePropName: 'checked',
+ initialValue: '2'
+ })
+
+ // 鍒濆鍖栬彍鍗曢粯璁ら�夋嫨
+ this.form.getFieldDecorator('menuApplication', {
+ initialValue: 'busiapp'
+ })
+ this.changeApplication('busiapp')
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱
+ */
+ codeGenerateDatabaseList() {
+ codeGenerateDatabaseList().then((res) => {
+ this.databaseNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+ */
+ codeGenerateInformationList(parameter) {
+ codeGenerateInformationList(parameter).then((res) => {
+ this.tableNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+ */
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ dataTypeItem() {
+ this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+ this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+ this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ codeGenerateAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ // 娓呯┖浠栦滑涓変釜
+ this.form.getFieldDecorator('className', {
+ initialValue: ''
+ })
+ this.form.getFieldDecorator('busName', {
+ initialValue: ''
+ })
+ // this.form.getFieldDecorator('tableComment', { initialValue: '' })
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴�
+ */
+ databaseNameSele(item) {
+ this.databaseNameValue = item.databaseName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ //this.form.getFieldDecorator('busName', {
+ // initialValue: item.databaseComment
+ //})
+ // this.settingDefaultValue()
+ // this.form.getFieldDecorator('tableName', {
+ // //X initialValue: ''
+ // //X defaultValue:''
+ // //X value:''
+ // }) 杩欎釜鏂规硶涓嶈捣浣滅敤
+ this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+ this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴撳垪琛�
+ */
+ tableNameSele(item) {
+ this.tableNameValue = item.tableName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ this.form.getFieldDecorator('busName', {
+ initialValue: item.tableComment
+ })
+ this.settingDefaultValue()
+ },
+ /**
+ * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+ */
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ this.form.getFieldDecorator('menuPid', {
+ initialValue: '0'
+ })
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ // /**
+ // * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+ // */
+ // tablePrefixRadio (tablePrefixType) {
+ // this.tablePrefixValue = tablePrefixType
+ // this.settingDefaultValue()
+ // },
+ /**
+ * 璁剧疆榛樿鍊�
+ */
+ settingDefaultValue() {
+ // const tableName = this.classNameToHump()
+ // this.form.getFieldDecorator('className', { initialValue: tableName })
+ // this.form.getFieldDecorator('busName', { initialValue: tableName + "涓氬姟"})
+ },
+ /**
+ * 閫夋嫨鐢熸垚鏂瑰紡
+ */
+ generateTypeRadio(generateType) {
+ // if (generateType === '1') {
+ // this.packageNameShow = true
+ // } else {
+ // this.packageNameShow = false
+ // this.form.setFieldsValue({ nameSpace: 'iWare.Wms.Application' })
+ // }
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue
new file mode 100644
index 0000000..eabb7e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/assembly.vue
@@ -0,0 +1,16 @@
+<template>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+export default {
+ components: {},
+ data(){
+ return {}
+ },
+ methods:{
+
+ }
+}
+</script>
+<style lang="less">
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue
new file mode 100644
index 0000000..245239c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/editForm.vue
@@ -0,0 +1,422 @@
+<template>
+ <a-modal
+ title="缂栬緫浠g爜鐢熸垚閰嶇疆"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴�"
+ v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+ <a-select-option
+ v-for="(item,index) in databaseNameData"
+ :key="index"
+ :value="item.databaseName"
+ @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚琛�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+ v-decorator="['tableName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in tableNameData"
+ :key="index"
+ :value="item.tableName"
+ @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ笟鍔″悕"
+ v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="12" :sm="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="绉婚櫎鍓嶇紑"
+ >
+ <a-radio-group v-decorator="['tablePrefix',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁绉婚櫎鍓嶇紑锛�' }]}]" >
+ <a-radio v-for="(item,index) in tablePrefixData" :key="index" :value="item.code" @click="tablePrefixRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col> -->
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+ <!-- <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ label="鍔熻兘鍚�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ姛鑳藉悕" v-decorator="['tableComment', {rules: [{required: true, message: '璇疯緭鍏ュ姛鑳藉悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ label="绫诲悕"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ョ被鍚�" v-decorator="['className', {rules: [{required: true, message: '璇疯緭鍏ョ被鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ懡鍚嶇┖闂�"
+ v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+ v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+ <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in generateTypeData"
+ :key="index"
+ :value="item.code"
+ @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="妯″潡璺緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ユā鍧楄矾寰�"
+ v-decorator="['moduleName', {rules: [{required: true, message: '璇疯緭鍏ユā鍧楄矾寰勶紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍓嶇椤圭洰鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ墠绔」鐩悕"
+ v-decorator="['frontProName', {rules: [{required: true, message: '璇疯緭鍏ュ墠绔」鐩悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鏄惁鍙槸鏌ヨ" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isOnlyQuery', { valuePropName: 'checked' }]" />
+ <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鏄惁鏀寔瀵煎叆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isWhetherImport', { valuePropName: 'checked' }]" />
+
+ <!-- <a-tag color="cyan">濡傛灉鍙槸鏌ヨ,鍒欏彧浼氱敓鎴愭煡璇㈠拰瀵煎嚭鍔熻兘</a-tag> -->
+ </a-form-item>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree
+ } from '@/api/modular/system/menuManage'
+ import {
+ codeGenerateDatabaseList,
+ codeGenerateInformationList,
+ codeGenerateEdit
+ } from '@/api/modular/gen/codeGenerateManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ databaseNameData:[],
+ tableNameData: [],
+ appData: [],
+ menuTreeData: [],
+ // tablePrefixData: [],
+ generateTypeData: [],
+ confirmLoading: false,
+ // tablePrefixValue: 'N',
+ databaseNameValue:'',
+ tableNameValue: '',
+ moduleName:'',
+ // packageNameShow: true,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.codeGenerateDatabaseList()
+ this.codeGenerateInformationList()
+ this.dataTypeItem()
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ databaseName:record.databaseName,
+ tableName: record.tableName,
+ // tablePrefix: record.tablePrefix,
+ // tableComment: record.tableComment,
+ // className: record.className,
+ busName: record.busName,
+ generateType: record.generateType,
+ authorName: record.authorName,
+ frontProName:record.frontProName,
+ moduleName:record.moduleName,
+ nameSpace: record.nameSpace,
+ menuApplication: record.menuApplication,
+ menuPid: record.menuPid,
+ isOnlyQuery:record.isOnlyQuery,
+ isWhetherImport:record.isWhetherImport
+ })
+ }, 100)
+ this.databaseNameValue = record.databaseName
+ this.tableNameValue = record.tableName
+ // this.tablePrefixValue = record.tablePrefix
+
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ this.changeApplication(record.menuApplication)
+ },
+ /**
+ * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+ */
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱
+ */
+ codeGenerateDatabaseList() {
+ codeGenerateDatabaseList().then((res) => {
+ this.databaseNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+ */
+ codeGenerateInformationList(parameter) {
+ codeGenerateInformationList(parameter).then((res) => {
+ this.tableNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ dataTypeItem() {
+ this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+ this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+ this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ codeGenerateEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴�
+ */
+ databaseNameSele(item) {
+ this.databaseNameValue = item.databaseName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ //this.form.getFieldDecorator('busName', {
+ // initialValue: item.databaseComment
+ //})
+ this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+ this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+ //this.settingDefaultValue()
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴撳垪琛�
+ */
+ tableNameSele(item) {
+ this.tableNameValue = item.tableName
+ this.form.setFieldsValue({
+ className: item.tableComment
+ })
+ this.settingDefaultValue()
+ },
+ /**
+ * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+ */
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ // /**
+ // * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+ // */
+ // tablePrefixRadio (tablePrefixType) {
+ // this.tablePrefixValue = tablePrefixType
+ // this.settingDefaultValue()
+ // },
+ // /**
+ // * 璁剧疆榛樿鍊�
+ // */
+ settingDefaultValue () {
+ // const tableName = this.classNameToHump()
+ // this.form.setFieldsValue(
+ // {
+ // className: tableName,
+ // busName: tableName.toLowerCase()
+ // }
+ // )
+ },
+ // /**
+ // * 璁剧疆绫诲悕涓烘暟鎹簱琛ㄧ殑椹煎嘲鍛藉悕
+ // */
+ // classNameToHump () {
+ // const arr = this.tableNameValue.toLowerCase().split('_')
+ // if (this.tablePrefixValue === 'Y') {
+ // arr.splice(0, 1)
+ // }
+ // for (let i = 0; i < arr.length; i++) {
+ // // charAt()鏂规硶寰楀埌绗竴涓瓧姣嶏紝slice()寰楀埌绗簩涓瓧姣嶄互鍚庣殑瀛楃涓�
+ // arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1)
+ // }
+ // return arr.join('')
+ // },
+ /**
+ * 閫夋嫨鐢熸垚鏂瑰紡
+ */
+ generateTypeRadio(generateType) {
+ // if (generateType === '1') {
+ // this.packageNameShow = true
+ // } else {
+ // this.packageNameShow = false
+ // this.form.setFieldsValue({ packageName: 'com.cn.xiaonuo' })
+ // }
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue
new file mode 100644
index 0000000..43f4ff9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/fkModal.vue
@@ -0,0 +1,184 @@
+<template>
+ <a-modal
+ title="閫夋嫨澶栭敭鍏崇郴"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶栭敭搴�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴�"
+ v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+ <a-select-option
+ v-for="(item,index) in databaseNameData"
+ :key="index"
+ :value="item.databaseName"
+ @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶栭敭琛�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴撹〃"
+ v-decorator="['tableName', { rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴撹〃锛�' }] }]">
+ <a-select-option
+ v-for="(item, index) in tableNameData"
+ :key="index"
+ :value="item.tableName"
+ @click="tableNameSele(item)">{{ item.tableName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄剧ず瀛楁" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏄剧ず瀛楁"
+ v-decorator="['columnName', { rules: [{ required: true, message: '璇烽�夋嫨鏄剧ず瀛楁锛�' }] }]">
+ <a-select-option v-for="(item, index) in cloumnNameData" :key="index" :value="item.columnName">{{
+ item.columnName
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ codeGenerateDatabaseList,
+ codeGenerateInformationList,
+ codeGenerateColumnList
+ } from '@/api/modular/gen/codeGenerateManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ databaseNameData: [],
+ tableNameData: [],
+ cloumnNameData: [],
+ row: undefined,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ show(row) {
+ this.row = row
+ this.visible = true
+ this.codeGenerateDatabaseList()
+ //this.codeGenerateInformationList()
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ databaseName:row.codeGen.databaseName,
+ tableName: row.fkEntityName,
+ columnName: row.fkColumnName
+ })
+ }, 100)
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱
+ */
+ codeGenerateDatabaseList() {
+ codeGenerateDatabaseList().then((res) => {
+ this.databaseNameData = res.data;
+ let tdatabaseName = this.form.getFieldValue('databaseName');
+ //鐪嬫槸鍚﹁兘鑾峰彇鍒板��,鑾峰彇涓嶅埌鐨勮瘽榛樿璧嬪�肩涓�涓畾浣嶅櫒
+ if(!tdatabaseName)
+ {
+ tdatabaseName = this.databaseNameData[0].databaseName;
+ this.form.setFieldsValue({databaseName:tdatabaseName}); //璧嬪��
+ }
+ this.codeGenerateInformationList({ dbContextLocatorName:tdatabaseName});
+ })
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱鐨勮〃
+ */
+ codeGenerateInformationList(parameter) {
+ codeGenerateInformationList(parameter).then(res => {
+ this.confirmLoading = true
+ this.tableNameData = res.data
+ this.confirmLoading = false
+ })
+ },
+ /**
+ * 鑾峰緱琛ㄤ笅鐨勬墍鏈夊垪
+ */
+ codeGenerateColumnList(databaseName,tableName) {
+ codeGenerateColumnList(databaseName,tableName).then(res => {
+ this.confirmLoading = true
+ this.cloumnNameData = res.data
+ this.confirmLoading = false
+ })
+ },
+
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.row.fkEntityName = values.tableName
+ this.row.fkColumnName = values.columnName
+ this.row.fkColumnNetType = this.cloumnNameData.find(e => e.columnName === values.columnName).netType
+
+ this.handleCancel()
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴�
+ */
+ databaseNameSele(item) {
+ this.databaseNameValue = item.databaseName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+ this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴撳垪琛�
+ */
+ tableNameSele(item) {
+ this.codeGenerateColumnList(item.databaseName,item.tableName)
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue
new file mode 100644
index 0000000..872d08b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/index.vue
@@ -0,0 +1,499 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" v-show="indexOpenShow" :bodyStyle="tstyle">
+ <a-spin :spinning="Loading">
+ <div class="table-page-search-wrapper" v-if="hasPerm('codeGenerate:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="琛ㄥ悕绉�">
+ <a-input v-model="queryParam.tableName" allow-clear placeholder="璇疯緭鍏ヨ〃鍚嶇О" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓氬姟鍚�">
+ <a-input v-model="queryParam.busName" allow-clear placeholder="璇疯緭鍏ヤ笟鍔″悕" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-spin>
+ </a-card>
+ </div>
+ <a-card :bordered="false" v-show="indexOpenShow">
+ <a-spin :spinning="Loading">
+ <s-table
+ ref="table"
+ :scroll="{ x: true, y: tableHeight }"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="record => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <div slot="operator" v-if="hasPerm('codeGenerate:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button type="primary" v-if="hasPerm('codeGenerate:add')" icon="plus" @click="$refs.addForm.add()"
+ >鏂板</a-button
+ >
+ </div>
+ </div>
+ <span slot="isOnlyQueryscopedSlots" slot-scope="text">
+ <div v-if="text === true">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text == false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="databaseName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="tableName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="busName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="nameSpace" slot-scope="text">
+ <ellipsis :length="25" tooltip>{{ text }}</ellipsis>
+ </span>
+ <!--<span slot="className" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span> -->
+ <!--<span slot="tableComment" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span> -->
+ <!-- <span slot="tablePrefix" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ 'yes_or_no' | dictType(text) }}</ellipsis>
+ </span> -->
+ <span slot="generateType" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ 'code_gen_create_type' | dictType(text) }}</ellipsis>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <span v-if="record.generateType === '1'">
+ <a v-if="hasPerm('codeGenerate:runDown')" @click="runDownCodeGenerate(record)">寮�濮嬬敓鎴�</a>
+ </span>
+ <span v-else>
+ <a-popconfirm
+ v-if="hasPerm('codeGenerate:runLocal')"
+ placement="topRight"
+ title="纭畾鐢熸垚浠g爜鍒皕ip鍖咃紵"
+ @confirm="() => runDownCodeGenerate(record)"
+ >
+ <a> 鐢熸垚鍒皕ip鍖�</a>
+ </a-popconfirm>
+ <a-divider type="vertical" />
+ <a-popconfirm
+ v-if="hasPerm('codeGenerate:runLocal')"
+ placement="topRight"
+ title="纭畾鐢熸垚浠g爜鍒版湰椤圭洰锛�"
+ @confirm="() => runLocalCodeGenerate(record)"
+ >
+ <a> 鐢熸垚鍒版湰椤圭洰</a>
+ </a-popconfirm>
+ </span>
+ <a-divider
+ type="vertical"
+ v-if="
+ hasPerm('codeGenerate:config') & hasPerm('codeGenerate:runLocal') || hasPerm('codeGenerate:runDown')
+ "
+ />
+ <a style="color:green" v-if="hasPerm('codeGenerate:config')" @click="indexConfigOpen(record)">閰嶇疆</a>
+ <a-divider type="vertical" v-if="hasPerm('codeGenerate:config') & hasPerm('codeGenerate:edit')" />
+ <a-popconfirm
+ v-if="hasPerm('codeGenerate:resetconfig')"
+ placement="topRight"
+ title="閲嶇疆浼氭竻闄ゆ偍宸茬粡閰嶇疆鐨勫唴瀹�,纭瑕侀噸缃厤缃悧锛�"
+ @confirm="() => resetConfig(record)"
+ >
+ <a style="color:green">閲嶇疆閰嶇疆</a>
+ </a-popconfirm>
+
+ <a-divider type="vertical" v-if="hasPerm('codeGenerate:config') & hasPerm('codeGenerate:edit')" />
+ <a style="color:blue" v-if="hasPerm('codeGenerate:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('codeGenerate:edit') & hasPerm('codeGenerate:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('codeGenerate:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => codeGenerateDelete(record)"
+ >
+ <a style="color:blue">鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('codeGenerate:add')" />
+ <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('codeGenerate:edit')" />
+ </a-spin>
+ </a-card>
+ <index-config ref="indexConfig" @ok="handleResetOpen" v-if="hasPerm('codeGenerate:config')" />
+ </div>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import {
+ codeGeneratePage,
+ codeGenerateDelete,
+ codeGenerateRunDown,
+ codeGenerateRunLocal,
+ codeGenerateRefresh
+} from '@/api/modular/gen/codeGenerateManage'
+import addForm from './addForm'
+import editForm from './editForm'
+import indexConfig from './indexConfig'
+
+export default {
+ mixins: [setTableHtMixin],
+ components: {
+ indexConfig,
+ STable,
+ Ellipsis,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '搴撳悕绉�',
+ dataIndex: 'databaseName',
+ scopedSlots: { customRender: 'databaseName' },
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '160px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '160px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ }
+ },
+ {
+ title: '琛ㄥ悕绉�',
+ dataIndex: 'tableName',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ scopedSlots: { customRender: 'tableName' }
+ },
+ {
+ title: '涓氬姟鍚�',
+ dataIndex: 'busName',
+ scopedSlots: { customRender: 'busName' },
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ }
+ },
+ {
+ title: '鍛藉悕绌洪棿',
+ dataIndex: 'nameSpace',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ scopedSlots: { customRender: 'nameSpace' }
+ },
+ {
+ title: '妯″潡璺緞',
+ dataIndex: 'moduleName',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ scopedSlots: { customRender: 'moduleName' }
+ },
+ {
+ title: '鍓嶇椤圭洰鍚�',
+ dataIndex: 'frontProName',
+ customHeaderCell: () => {
+ return {
+ style: {
+ width: '120px', //鏈�灏忓垪瀹借缃�
+ display: 'inline-block'
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ width: '120px', //鏈�灏忓垪瀹借缃�
+ display: 'inline-block'
+ }
+ }
+ },
+ scopedSlots: { customRender: 'frontProName' }
+ },
+ // {
+ // title: '绫诲悕',
+ // dataIndex: 'className',
+ // scopedSlots: { customRender: 'className' }
+ // },
+ // {
+ // title: '鍔熻兘鍚�',
+ // dataIndex: 'tableComment',
+ // scopedSlots: { customRender: 'tableComment' }
+ // },
+ {
+ title: '浣滆�呭鍚�',
+ dataIndex: 'authorName',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '100px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '100px' //鏈�灏忓垪瀹借缃�
+ }
+ }
+ }
+ },
+ // {
+ // title: '琛ㄥ墠缂�绉婚櫎',
+ // dataIndex: 'tablePrefix',
+ // scopedSlots: { customRender: 'tablePrefix' }
+ // },
+ // {
+ // title: '鐢熸垚鏂瑰紡',
+ // dataIndex: 'generateType',
+ // scopedSlots: { customRender: 'generateType' },
+ // },
+ {
+ title: '鏄惁鍙槸鏌ヨ',
+ align: 'center',
+ width: '120px',
+ sorter: true,
+ dataIndex: 'isOnlyQuery',
+ scopedSlots: { customRender: 'isOnlyQueryscopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ loadData: parameter => {
+ return codeGeneratePage(Object.assign(parameter, this.queryParam)).then(res => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ Loading: false,
+ jdbcDriverList: [],
+ indexOpenShow: true
+ }
+ },
+ created() {
+ if (this.hasPerm('codeGenerate:edit') || this.hasPerm('codeGenerate:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '220px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+ methods: {
+ /**
+ * 寮�濮嬬敓鎴愪唬鐮侊紙鐢熸垚鍘嬬缉鍖咃級
+ */
+ runDownCodeGenerate(record) {
+ this.Loading = true
+ codeGenerateRunDown({ id: record.id })
+ .then(res => {
+ this.Loading = false
+
+ this.downloadfile(res)
+ })
+ .catch(err => {
+ debugger
+ this.Loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒-' + err.message)
+ })
+ },
+ downloadfile(res) {
+ var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+ var contentDisposition = res.headers['content-disposition']
+ var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+ var result = patt.exec(contentDisposition)
+ var filename = result[1]
+ var downloadElement = document.createElement('a')
+ var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ var reg = /^["](.*)["]$/g
+ downloadElement.style.display = 'none'
+ downloadElement.href = href
+ downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+ },
+ /**
+ * 寮�濮嬬敓鎴愪唬鐮侊紙鏈湴椤圭洰锛�
+ */
+ runLocalCodeGenerate(record) {
+ codeGenerateRunLocal(record).then(res => {
+ if (res.success) {
+ this.$message.success('鐢熸垚鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鐢熸垚澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鍒犻櫎
+ */
+ codeGenerateDelete(record) {
+ this.Loading = true
+ codeGenerateDelete([{ id: record.id }])
+ .then(res => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ })
+ .catch(err => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ .finally(res => {
+ this.Loading = false
+ })
+ },
+ /**
+ * 閲嶇疆閰嶇疆
+ */
+ resetConfig(record) {
+ this.Loading = true
+ codeGenerateRefresh(record.id)
+ .then(res => {
+ if (res.success) {
+ this.$message.success('閲嶇疆閰嶇疆鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('閲嶇疆閰嶇疆澶辫触锛�' + res.message)
+ }
+ })
+ .catch(err => {
+ this.$message.error('閲嶇疆閰嶇疆閿欒锛�' + err.message)
+ })
+ .finally(res => {
+ this.Loading = false
+ })
+ },
+ /**
+ * 鎵撳紑閰嶇疆鐣岄潰
+ */
+ indexConfigOpen(record) {
+ this.indexOpenShow = false
+ this.$refs.indexConfig.open(record)
+ //涓嶅啀璋冪敤璇ユ柟娉�,鐢ㄤ簬澶勭悊淇濆瓨閰嶇疆鐨刡ug 銆怑ditby shaocx,2024-04-11銆�
+ /*
+ codeGenerateRefresh(record.id).then((res) => {
+ this.$refs.indexConfig.open(record)
+ })
+ //*/
+ },
+ /**
+ * 璇︾粏閰嶇疆鐣岄潰杩斿洖
+ */
+ handleResetOpen() {
+ this.indexOpenShow = true
+ this.$refs.table.refresh()
+ },
+ /**
+ * 鍏朵粬鐣岄潰杩斿洖
+ */
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue
new file mode 100644
index 0000000..bf954d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/codeGenerate/indexConfig.vue
@@ -0,0 +1,367 @@
+<template>
+ <a-card :bordered="false" v-show="indexConfigShow">
+ <div class="table-operator">
+ <a-button class="but_item" type="dashed" @click="handleCancel" icon="rollback">杩斿洖</a-button>
+ <a-button type="primary" icon="plus" @click="handleSubmit">淇濆瓨</a-button>
+ </div>
+ <a-table
+ ref="table"
+ size="middle"
+ :columns="columns"
+ :dataSource="loadData"
+ :pagination="false"
+ :alert="true"
+ :loading="tableLoading"
+ :scroll="{x: true,y:410}"
+ :rowKey="(record) => record.id">
+ <template slot="columnComment" slot-scope="text, record">
+ <a-input v-model="record.columnComment" />
+ </template>
+
+ <template slot="showTitleMinWidth" slot-scope="text, record">
+ <a-input v-model="record.showTitleMinWidth" />
+ </template>
+
+ <!--<template slot="netType" slot-scope="text, record">
+ <a-select style="width: 120px" v-model="record.netType" :disabled="judgeColumns(record)">
+ <a-select-option v-for="(item,index) in netTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </template> -->
+ <template slot="effectType" slot-scope="text, record">
+ <a-select
+ style="width: 100%"
+ v-model="record.effectType"
+ :disabled="judgeColumns(record)"
+ @change="effectTypeChange(record, $event)">
+ <a-select-option v-for="(item, index) in effectTypeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </template>
+ <template slot="dictTypeCode" slot-scope="text, record">
+ <a-select
+ style="width: 100%"
+ v-model="record.dictTypeCode"
+ :disabled="
+ record.effectType !== 'radio' && record.effectType !== 'select' && record.effectType !== 'checkbox'
+ ">
+ <a-select-option v-for="(item, index) in dictDataAll" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </template>
+ <template slot="whetherTable" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherTable" />
+ </template>
+ <template slot="whetherOrderBy" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherOrderBy" />
+ </template>
+ <template slot="whetherRetract" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherRetract" />
+ </template>
+ <template slot="whetherAddUpdate" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherAddUpdate" :disabled="judgeColumns(record)" />
+ </template>
+ <template slot="whetherUnionKey" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherUnionKey" :disabled="judgeColumns(record)" />
+ </template>
+
+ <template slot="whetherRequired" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherRequired" :disabled="judgeColumns(record)" />
+ </template>
+ <template slot="queryWhether" slot-scope="text, record">
+ <a-switch v-model="record.queryWhether">
+ <a-icon slot="checkedChildren" type="check" />
+ <a-icon slot="unCheckedChildren" type="close" />
+ </a-switch>
+ </template>
+ <template slot="queryType" slot-scope="text, record">
+ <a-select style="width: 100px" v-model="record.queryType" :disabled="!record.queryWhether">
+ <a-select-option v-for="(item, index) in codeGenQueryTypeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </template>
+ </a-table>
+ <fk-modal ref="fkModal" />
+ </a-card>
+</template>
+<script>
+ import {
+ sysCodeGenerateConfigList,
+ sysCodeGenerateConfigEdit
+ } from '@/api/modular/gen/sysCodeGenerateConfigManage'
+ import fkModal from './fkModal'
+ export default {
+ components: {
+ fkModal
+ },
+ data() {
+ return {
+ // 琛ㄥご
+ columns: [{
+ title: '瀛楁',
+ width:"120px",
+ dataIndex: 'columnName'
+ },
+ {
+ title: '鎻忚堪',
+ width:"120px",
+ dataIndex: 'columnComment',
+ scopedSlots: {
+ customRender: 'columnComment'
+ }
+ },
+ {
+ title: '绫诲瀷',
+ width:"120px",
+ dataIndex: 'netType'
+ },
+ // {
+ // title: 'net绫诲瀷',
+ // dataIndex: 'netType',
+ // scopedSlots: { customRender: 'netType' }
+ // },
+ {
+ title: '浣滅敤绫诲瀷',
+ width:"120px",
+ dataIndex: 'effectType',
+ scopedSlots: {
+ customRender: 'effectType'
+ }
+ },
+ {
+ title: '瀛楀吀',
+ width: '200px',
+ width:"120px",
+ dataIndex: 'dictTypeCode',
+ scopedSlots: {
+ customRender: 'dictTypeCode'
+ }
+ },
+
+ {
+ title: '鏈�灏忓瓧娈靛垪瀹�',
+ align: 'center',
+ width:"100px",
+ dataIndex: 'showTitleMinWidth',
+ scopedSlots: {
+ customRender: 'showTitleMinWidth'
+ }
+ },
+
+
+ {
+ title: '鍒楄〃鏄剧ず',
+ align: 'center',
+ width:"80px",
+ dataIndex: 'whetherTable',
+ scopedSlots: {
+ customRender: 'whetherTable'
+ }
+ },
+ {
+ title: '鎺掑簭',
+ align: 'center',
+ width:"70px",
+ dataIndex: 'whetherOrderBy',
+ scopedSlots: {
+ customRender: 'whetherOrderBy'
+ }
+ },
+ // {
+ // title: '鍒楀瓧娈电渷鐣�',
+ // align: 'center',
+ // dataIndex: 'whetherRetract',
+ // scopedSlots: { customRender: 'whetherRetract' }
+ // },
+ {
+ title: '澧炴敼',
+ align: 'center',
+ width:"70px",
+ dataIndex: 'whetherAddUpdate',
+ scopedSlots: {
+ customRender: 'whetherAddUpdate'
+ }
+ },
+ {
+ title: '鑱斿悎涓婚敭',
+ align: 'center',
+ width:"120px",
+ dataIndex: 'whetherUnionKey',
+ scopedSlots: {
+ customRender: 'whetherUnionKey'
+ }
+ },
+ {
+ title: '蹇呭~',
+ align: 'center',
+ width:"70px",
+ dataIndex: 'whetherRequired',
+ scopedSlots: {
+ customRender: 'whetherRequired'
+ }
+ },
+ {
+ title: '鏄惁鏄煡璇�',
+ align: 'center',
+ width:"100px",
+ dataIndex: 'queryWhether',
+ scopedSlots: {
+ customRender: 'queryWhether'
+ }
+ },
+ {
+ title: '鏌ヨ鏂瑰紡',
+ width:"120px",
+ dataIndex: 'queryType',
+ scopedSlots: {
+ customRender: 'queryType'
+ }
+ }
+ ],
+ indexConfigShow: false,
+ tableLoading: false,
+ visible: false,
+ loadData: [],
+ netTypeData: [],
+ effectTypeData: [],
+ dictDataAll: [],
+ codeGenQueryTypeData: [],
+ yesOrNoData: []
+ }
+ },
+ methods: {
+ /**
+ * 鎵撳紑鐣岄潰
+ */
+ open(data) {
+ this.indexConfigShow = true
+ this.tableLoading = true
+ const dictOption = this.$options
+ this.netTypeData = dictOption.filters['dictData']('code_gen_net_type')
+ this.effectTypeData = dictOption.filters['dictData']('code_gen_effect_type')
+ this.dictDataAll = dictOption.filters['dictDataAll']()
+ this.yesOrNoData = dictOption.filters['dictData']('yes_or_no')
+ this.codeGenQueryTypeData = dictOption.filters['dictData']('code_gen_query_type')
+ const params = {
+ codeGenId: data.id
+ }
+ sysCodeGenerateConfigList(params).then((res) => {
+ this.loadData = res.data
+ this.loadData.forEach(item => {
+ for (const key in item) {
+ if (item[key] === 'Y') {
+ item[key] = true
+ }
+ if (item[key] === 'N') {
+ item[key] = false
+ }
+ }
+
+ // 鏋氫妇绫诲瀷榛樿鍊间负涓嬫媺妗�
+ if(item["netType"].indexOf("Admin.NET.Core.") != -1){
+ item.effectType ='select'
+ }
+
+ //璁剧疆琛ㄦ牸鍒楀搴�
+ if(item.showTitleMinWidth==null || item.showTitleMinWidth==""){
+ if(item["netType"]=='int'){
+ item.showTitleMinWidth ='80px'
+ }else{
+ item.showTitleMinWidth ='120px'
+ }
+ }
+
+ // 绉熸埛id鍒楅粯璁ゅ叏閮ㄤ笉鍕鹃��
+ if (item.columnName === 'tenantId') {
+ item.whetherTable = false
+ item.whetherOrderBy = false
+ item.whetherAddUpdate = false
+ item.queryWhether = false
+ item.whetherUnionKey=false
+ }
+ })
+ this.tableLoading = false
+ })
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+
+ // 鍋氭暟缁勫睘鎬ц浆鎹�, 鍜卞厛鏉ヤ竴涓垏鏂弻鍚戠粦瀹氾紝瀛︿範鐨勭闉嬩笅鍥炶涓嬪晩
+ // eslint-disable-next-line prefer-const
+ var inx1 = this.loadData.findIndex(
+ (u) => u.showTitleMinWidth == '' || u.showTitleMinWidth == null
+ )
+ if(inx1>-1){
+ this.$message.warning("鍒楀瀛楁鍚嶅繀濉�")
+ return
+ }
+ var inx2 = this.loadData.findIndex(
+ (u) => u.showTitleMinWidth.indexOf("px") == -1
+ )
+ if(inx2>-1){
+ this.$message.warning("鍒楀瀛楁鍚嶅寘鍚玴x")
+ return
+ }
+ this.tableLoading = true
+ let loadDatas = JSON.parse(JSON.stringify(this.loadData))
+ loadDatas.forEach(item => {
+ // 蹇呭~閭d竴椤硅浆鎹�
+ for (const key in item) {
+ if (item[key] === true) {
+ item[key] = 'Y'
+ }
+ if (item[key] === false) {
+ item[key] = 'N'
+ }
+ }
+ })
+ // const param = {
+ // sysCodeGenerateConfigParamList: loadDatas
+ // }
+ sysCodeGenerateConfigEdit(loadDatas).then((res) => {
+ this.tableLoading = false
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res)=>{this.tableLoading = false})
+ },
+ /**
+ * 鍒ゆ柇鏄惁锛堢敤浜庢槸鍚﹁兘閫夋嫨鎴栬緭鍏ョ瓑锛�
+ */
+ judgeColumns(data) {
+ if (
+
+ data.columnName.indexOf('createdUserName') > -1 ||
+ data.columnName.indexOf('createdTime') > -1 ||
+ data.columnName.indexOf('updatedUserName') > -1 ||
+ data.columnName.indexOf('updatedTime') > -1 ||
+ data.columnKey === 'True'
+ ) {
+ return true
+ }
+ return false
+ },
+ /**
+ * 浣滅敤绫诲瀷鏀瑰彉
+ */
+ effectTypeChange(data, value) {
+ if (value === 'fk') {
+ //鎵撳紑澶栭敭璁剧疆妯℃�佹
+ this.$refs.fkModal.show(data)
+ }
+ },
+ handleCancel() {
+ this.$emit('ok')
+ this.loadData = []
+ this.indexConfigShow = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue
new file mode 100644
index 0000000..4d1b1ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/addForm.vue
@@ -0,0 +1,314 @@
+<template>
+ <a-modal
+ title="鏂板浠g爜鐢熸垚閰嶇疆"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴�"
+ v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+ <a-select-option
+ v-for="(item,index) in databaseNameData"
+ :key="index"
+ :value="item.databaseName"
+ @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ笟鍔″悕"
+ v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ唬鐮佸寘鍚�"
+ v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+ v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+ <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in generateTypeData"
+ :key="index"
+ :value="item.code"
+ @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree
+ } from '@/api/modular/system/menuManage'
+ import { codeGenerateDatabaseList } from '@/api/modular/gen/codeGenerateManage'
+ import { lowCodeAdd } from '@/api/modular/gen/lowCodeManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ appData: [],
+ menuTreeData: [],
+ databaseNameData:[],
+ // tablePrefixData: [],
+ generateTypeData: [],
+ confirmLoading: false,
+ // tablePrefixValue: 'N',
+ databaseNameValue:'',
+ tableNameValue: '',
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add() {
+ this.visible = true
+ this.codeGenerateDatabaseList()
+ // 澶氬簱榛樿闇�瑕侀�夋嫨鍚庤皟鐢�
+ // this.codeGenerateInformationList()
+ this.dataTypeItem()
+ this.selectedByDefault()
+
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ },
+ /**
+ * 榛樿閫変腑椤�
+ */
+ selectedByDefault() {
+ this.form.getFieldDecorator('nameSpace', {
+ initialValue: 'iWare.Wms.Application'
+ })
+ // this.form.getFieldDecorator('tablePrefix', { valuePropName: 'checked', initialValue: 'N' })
+ this.form.getFieldDecorator('generateType', {
+ valuePropName: 'checked',
+ initialValue: '2'
+ })
+
+ // 鍒濆鍖栬彍鍗曢粯璁ら�夋嫨
+ this.form.getFieldDecorator('menuApplication', {
+ initialValue: 'busiapp'
+ })
+ this.changeApplication('busiapp')
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱
+ */
+ codeGenerateDatabaseList() {
+ codeGenerateDatabaseList().then((res) => {
+ this.databaseNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+ */
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ dataTypeItem() {
+ this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+ this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+ this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ lowCodeAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ // 娓呯┖浠栦滑涓変釜
+ this.form.getFieldDecorator('className', {
+ initialValue: ''
+ })
+ this.form.getFieldDecorator('busName', {
+ initialValue: ''
+ })
+ // this.form.getFieldDecorator('tableComment', { initialValue: '' })
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴�
+ */
+ databaseNameSele(item) {
+ this.databaseNameValue = item.databaseName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ //this.form.getFieldDecorator('busName', {
+ // initialValue: item.databaseComment
+ //})
+ // this.settingDefaultValue()
+ // this.form.getFieldDecorator('tableName', {
+ // //X initialValue: ''
+ // //X defaultValue:''
+ // //X value:''
+ // }) 杩欎釜鏂规硶涓嶈捣浣滅敤
+ this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+ //this.codeGenerateInformationList({ dbContextLocatorName:this.databaseNameValue});
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴撳垪琛�
+ */
+ tableNameSele(item) {
+ this.tableNameValue = item.tableName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ this.form.getFieldDecorator('busName', {
+ initialValue: item.tableComment
+ })
+ this.settingDefaultValue()
+ },
+ /**
+ * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+ */
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ this.form.getFieldDecorator('menuPid', {
+ initialValue: '0'
+ })
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ // /**
+ // * 閫夋嫨鏄惁绉婚櫎鍓嶇紑瑙﹀彂
+ // */
+ // tablePrefixRadio (tablePrefixType) {
+ // this.tablePrefixValue = tablePrefixType
+ // this.settingDefaultValue()
+ // },
+ /**
+ * 璁剧疆榛樿鍊�
+ */
+ settingDefaultValue() {
+ // const tableName = this.classNameToHump()
+ // this.form.getFieldDecorator('className', { initialValue: tableName })
+ // this.form.getFieldDecorator('busName', { initialValue: tableName + "涓氬姟"})
+ },
+ /**
+ * 閫夋嫨鐢熸垚鏂瑰紡
+ */
+ generateTypeRadio(generateType) {
+ // if (generateType === '1') {
+ // this.packageNameShow = true
+ // } else {
+ // this.packageNameShow = false
+ // this.form.setFieldsValue({ nameSpace: 'Admin.NET.Application' })
+ // }
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue
new file mode 100644
index 0000000..4590af2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/editForm.vue
@@ -0,0 +1,640 @@
+<template>
+ <a-modal
+ title="缂栬緫浠g爜鐢熸垚閰嶇疆"
+ :width="1200"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-tabs v-model="activeKey" @change="tabsChange">
+ <a-tab-pane key="1" tab="鍩虹淇℃伅">
+ <a-form :form="form">
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚搴�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鏁版嵁搴�"
+ v-decorator="['databaseName', {rules: [{ required: true, message: '璇烽�夋嫨鏁版嵁搴擄紒' }]}]">
+ <a-select-option
+ v-for="(item,index) in databaseNameData"
+ :key="index"
+ :value="item.databaseName"
+ @click="databaseNameSele(item)">{{ item.databaseName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="12" :sm="24">
+ <a-form-item label="涓氬姟鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ笟鍔″悕"
+ v-decorator="['busName', {rules: [{required: true, message: '璇疯緭鍏ヤ笟鍔″悕锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟鍒嗙被" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['menuApplication', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['menuPid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ </a-col>
+
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍛藉悕绌洪棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ懡鍚嶇┖闂�"
+ v-decorator="['nameSpace', {rules: [{required: true, message: '璇疯緭鍏ュ懡鍚嶇┖闂达紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="浣滆�呭鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ヤ綔鑰呭鍚�"
+ v-decorator="['authorName', {rules: [{required: true, message: '璇疯緭鍏ヤ綔鑰呭鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐢熸垚鏂瑰紡">
+ <a-radio-group v-decorator="['generateType',{rules: [{ required: true, message: '璇烽�夋嫨鐢熸垚鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in generateTypeData"
+ :key="index"
+ :value="item.code"
+ @click="generateTypeRadio(item.code)">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-tab-pane>
+ <a-tab-pane key="2" tab="琛ㄥ崟閰嶇疆" force-render>
+ <k-form-design
+ :showHead="false"
+ ref='kfd'
+ style="background-color: white;"
+ @save="kFormHandleSave"
+ :value="kFormDesignData" />
+ </a-tab-pane>
+ <a-tab-pane key="3" tab="鍔ㄦ�佹暟鎹�" force-render>
+ <dictIndex></dictIndex>
+ </a-tab-pane>
+ <a-tab-pane key="4" tab="鏁版嵁琛ㄩ厤缃�">
+ <a-button type="primary" @click="addTableModal">娣诲姞琛�</a-button>
+
+ <span v-for="(table, index) in Tables" :key="index">
+ <a-tag :closable="true" @close="tableHandleClose(table)">
+ {{ table.tableDesc }}
+ </a-tag>
+ </span>
+
+ <a-table
+ ref="table"
+ :dataSource="databases"
+ :columns="databases_columns"
+ :pagination="false"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <span slot="dbParam" slot-scope="text, record">
+ <a-input v-model="record.dbParam" />
+ </span>
+ <span slot="fieldName" slot-scope="text, record">
+ <a-input v-model="record.fieldName" />
+ </span>
+ <span slot="tableName" slot-scope="text, record">
+ <a-select v-model="record.tableName" @change="handleChangeTable(record)">
+ <a-select-option v-for="d in Tables" :key="d.tableName">
+ {{ d.tableDesc }}
+ </a-select-option>
+ </a-select>
+ </span>
+ <span slot="isRequired" slot-scope="text, record">
+ <a-checkbox v-model="record.isRequired"></a-checkbox>
+ </span>
+ <span slot="key" slot-scope="text, record">
+ {{record.control_Key}} <br />
+ {{record.control_Label}} ({{record.control_Model}})
+ </span>
+ <template slot="whetherTable" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherTable" />
+ </template>
+ <template slot="whetherOrderBy" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherOrderBy" />
+ </template>
+ <template slot="whetherAddUpdate" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherAddUpdate" />
+ </template>
+ <template slot="whetherUnionKey" slot-scope="text, record">
+ <a-checkbox v-model="record.whetherUnionKey" />
+ </template>
+ <template slot="queryWhether" slot-scope="text, record">
+ <a-checkbox v-model="record.queryWhether" />
+ </template>
+ <template slot="queryType" slot-scope="text, record">
+ <a-select style="width: 100px" v-model="record.queryType" :disabled="!record.queryWhether">
+ <a-select-option v-for="(item, index) in codeGenQueryTypeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </template>
+ </a-table>
+ </a-tab-pane>
+ </a-tabs>
+ <a-modal :visible="visible" v-if="addTableShow" title="娣诲姞琛�" @ok="addTable_handleOk" @cancel="addTable_handleCancel">
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item label="绫诲悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-model="addTable.className" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="24" :sm="24">
+ <a-form-item label="琛ㄥ悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-model="addTable.tableName" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="24" :sm="24">
+ <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-model="addTable.tableDesc" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-modal>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree
+ } from '@/api/modular/system/menuManage'
+ import {
+ codeGenerateDatabaseList
+ } from '@/api/modular/gen/codeGenerateManage'
+ import { lowCodeEdit,lowCodeContrast, lowCodeInfo } from '@/api/modular/gen/lowCodeManage'
+ import { CheckOutlined, EditOutlined } from '@ant-design/icons-vue';
+ import 'k-form-design/styles/k-form-design.less'
+import { setFormDesignConfig } from 'k-form-design'
+ import { STable, Ellipsis } from '@/components'
+ import dictIndex from '../../system/dict/index.vue'
+ import Vue from 'vue'
+ import { ACCESS_TOKEN } from '@/store/mutation-types'
+import { map } from 'leaflet'
+
+ export default{
+ components: {
+ STable, Ellipsis,dictIndex
+ },
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ addTable:{
+ className: '',
+ tableName: '',
+ tableDesc: ''
+ },
+ Tables:[],
+ addTableShow: false,
+ databaseNameData:[],
+ tableNameData: [],
+ appData: [],
+ menuTreeData: [],
+ generateTypeData: [],
+ confirmLoading: false,
+ databaseNameValue:'',
+ tableNameValue: '',
+ activeKey: '1',
+ kFormDesignData: {},
+ databases: [],
+ editableData: {},
+ databases_columns: [{
+ title: 'key',
+ dataIndex: 'control_Key',
+ key: 'control_Key',
+ scopedSlots: { customRender: 'key' }
+ },{
+ title: '琛ㄥ崟绫诲瀷',
+ dataIndex: 'control_Type',
+ key: 'control_Type',
+ },{
+ title: '闈炵┖瀛楁',
+ dataIndex: 'isRequired',
+ key: 'isRequired',
+ width: '70px',
+ scopedSlots: { customRender: 'isRequired' }
+ },{
+ title: '琛ㄥ悕',
+ dataIndex: 'tableName',
+ key: 'tableName',
+ scopedSlots: { customRender: 'tableName' }
+ },{
+ title: '瀛楁鍚�',
+ dataIndex: 'fieldName',
+ key: 'fieldName',
+ width: '150px',
+ },{
+ title: '鏁版嵁绫诲瀷',
+ dataIndex: 'dbTypeName',
+ key: 'dbTypeName',
+ },{
+ title: '鏁版嵁搴撶被鍨�',
+ dataIndex: 'dbParam',
+ key: 'dbParam',
+ width: '150px',
+ scopedSlots: { customRender: 'dbParam' }
+ },
+ {
+ title: '鍒楄〃鏄剧ず',
+ align: 'center',
+ dataIndex: 'whetherTable',
+ scopedSlots: {
+ customRender: 'whetherTable'
+ }
+ },
+ {
+ title: '鎺掑簭',
+ align: 'center',
+ dataIndex: 'whetherOrderBy',
+ scopedSlots: {
+ customRender: 'whetherOrderBy'
+ }
+ },
+ {
+ title: '澧炴敼',
+ align: 'center',
+ dataIndex: 'whetherAddUpdate',
+ scopedSlots: {
+ customRender: 'whetherAddUpdate'
+ }
+ },
+ {
+ title: '鑱斿悎涓婚敭',
+ align: 'center',
+ width:"70px",
+ dataIndex: 'whetherUnionKey',
+ scopedSlots: {
+ customRender: 'whetherUnionKey'
+ }
+ },
+ {
+ title: '鏄惁鏄煡璇�',
+ align: 'center',
+ dataIndex: 'queryWhether',
+ scopedSlots: {
+ customRender: 'queryWhether'
+ }
+ },
+ {
+ title: '鏌ヨ鏂瑰紡',
+ dataIndex: 'queryType',
+ scopedSlots: {
+ customRender: 'queryType'
+ }
+ }],
+ codeGenQueryTypeData: [],
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ const dictOption = this.$options
+ this.visible = true
+ this.codeGenerateDatabaseList()
+ this.dataTypeItem()
+ this.loadData(record)
+ this.databaseNameValue = record.databaseName
+ this.tableNameValue = record.tableName
+ this.databases = [];
+ this.codeGenQueryTypeData = dictOption.filters['dictData']('code_gen_query_type')
+
+ let formDesign = record.formDesign || '';
+
+ if(formDesign.length > 0){
+ this.kFormDesignData = JSON.parse(record.formDesign);
+ }else{
+ this.kFormDesignData = {
+ "list": [
+ ],
+ "config": {
+ "layout": "horizontal",
+ "labelCol": {
+ "xs": 4,
+ "sm": 4,
+ "md": 4,
+ "lg": 4,
+ "xl": 4,
+ "xxl": 4
+ },
+ "labelWidth": 100,
+ "labelLayout": "flex",
+ "wrapperCol": {
+ "xs": 18,
+ "sm": 18,
+ "md": 18,
+ "lg": 18,
+ "xl": 18,
+ "xxl": 18
+ },
+ "hideRequiredMark": false,
+ "customStyle": ""
+ }
+ }
+ }
+
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ this.changeApplication(record.menuApplication)
+
+ let uploadHeaders = {};
+
+ const token = Vue.ls.get(ACCESS_TOKEN)
+ const refreshToken = Vue.ls.get('X-Access-Token')
+ if (token) {
+ uploadHeaders['Authorization'] = 'Bearer ' + token
+ }
+ if (refreshToken) {
+ uploadHeaders['X-Authorization'] = 'Bearer ' + refreshToken
+ }
+
+ let kformConfig = {
+ uploadFile: "/api/sysFileInfo/kformormupload", // 涓婁紶鏂囦欢鍦板潃
+ uploadImage: "/api/sysFileInfo/kformormupload", // 涓婁紶鍥剧墖鍦板潃
+ uploadFileName: "file", // 涓婁紶鏂囦欢name
+ uploadImageName: "file", // 涓婁紶鍥剧墖name
+ uploadFileData: { key: "UploadFile:Default" }, // 涓婁紶鏂囦欢棰濆鍙傛暟
+ uploadImageData: { key: "UploadFile:Default" }, // 涓婁紶鍥剧墖棰濆鍙傛暟
+ uploadFileHeaders: uploadHeaders, // 涓婁紶鏂囦欢璇锋眰澶撮儴
+ uploadImageHeaders: uploadHeaders // 涓婁紶鍥剧墖璇锋眰澶撮儴
+ };
+
+ setFormDesignConfig(kformConfig);
+
+ this.$nextTick(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ databaseName:record.databaseName,
+ tableName: record.tableName,
+ // tablePrefix: record.tablePrefix,
+ // tableComment: record.tableComment,
+ // className: record.className,
+ busName: record.busName,
+ generateType: record.generateType,
+ authorName: record.authorName,
+ nameSpace: record.nameSpace,
+ menuApplication: record.menuApplication,
+ menuPid: record.menuPid
+ })
+
+ this.importKFormDesignData();
+ });
+
+ },
+ /**
+ * 鍔犺浇鏁版嵁
+ */
+ loadData(record){
+ lowCodeInfo(record.id).then((res) => {
+ if (res.success) {
+ this.databases = [];
+ this.Tables = [];
+ (res.data.databases || []).forEach(element => {
+ this.databases.push(element);
+ });
+ (res.data.tables || []).forEach(element => {
+ this.Tables.push(element);
+ });
+ } else {
+ this.$message.error('鑾峰彇澶辫触' + res.message)
+ }
+ })
+ },
+ /**
+ * 鑾峰緱鑿滃崟鎵�灞炲簲鐢�
+ */
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ /**
+ * 鑾峰緱鎵�鏈夋暟鎹簱
+ */
+ codeGenerateDatabaseList() {
+ codeGenerateDatabaseList().then((res) => {
+ this.databaseNameData = res.data
+ })
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ dataTypeItem() {
+ this.tablePrefixData = this.$options.filters['dictData']('yes_or_no')
+ this.generateTypeData = this.$options.filters['dictData']('code_gen_create_type')
+ this.generateTypeData.splice(0, 1) // 榛樿鍘绘帀浠庡帇缂╁寘涓嬭浇
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+
+ this.$refs.kfd.handleSave();
+ values.formDesign = this.form.formDesign;
+ values.formDesignType = 1;
+ values.Databases = this.databases;
+
+ lowCodeEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴�
+ */
+ databaseNameSele(item) {
+ this.databaseNameValue = item.databaseName
+ // this.form.getFieldDecorator('tableComment', { initialValue: item.tableComment })
+ //this.form.getFieldDecorator('busName', {
+ // initialValue: item.databaseComment
+ //})
+ this.form.setFieldsValue({'tableName':''}); //杩欎釜OK
+ //this.settingDefaultValue()
+ },
+ /**
+ * 閫夋嫨鏁版嵁搴撳垪琛�
+ */
+ tableNameSele(item) {
+ this.tableNameValue = item.tableName
+ this.form.setFieldsValue({
+ className: item.tableComment
+ })
+ },
+ /**
+ * 鑿滃崟鎵�灞炲簲鐢╟hange浜嬩欢
+ */
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ /**
+ * 閫夋嫨鐢熸垚鏂瑰紡
+ */
+ generateTypeRadio(generateType) {
+ // if (generateType === '1') {
+ // this.packageNameShow = true
+ // } else {
+ // this.packageNameShow = false
+ // this.form.setFieldsValue({ packageName: 'com.cn.xiaonuo' })
+ // }
+ },
+ kFormHandleSave(values) {
+ this.form.formDesign = values
+ },
+ tabsChange(values){
+ if(values == "4"){
+ var Fields = this.$refs.kfd.getValue();
+
+ lowCodeContrast({Controls: JSON.stringify(Fields) , Databases: this.databases}).then((res) => {
+ if (res.success) {
+ for(var i = 0;i < (res.data.del || []).length;i++){
+ this.databases.forEach((item,index) => {
+ if(item.control_Key === res.data.del[i].control_Key){
+ this.databases.splice(index,1)
+ }
+ })
+ }
+ for(var i = 0;i < (res.data.add || []).length;i++){
+ this.databases.push(res.data.add[i]);
+ }
+ } else {
+ this.$message.error('鍔犺浇澶辫触' + res.message)
+ }
+ }).finally((res) => {
+ //this.confirmLoading = false
+ //缁撴潫鍔犺浇
+ })
+ }
+ },
+ addTable_handleOk(){
+ var dataTable = {...this.addTable};
+ this.Tables.push(dataTable);
+ this.databases.forEach((item,index) => {
+ this.$set(item,'className',dataTable.className);
+ this.$set(item,'tableName',dataTable.tableName);
+ this.$set(item,'tableDesc',dataTable.tableDesc);
+ });
+ this.addTableShow = false;
+ },
+ addTable_handleCancel(){
+ this.addTableShow = false;
+ },
+ addTableModal(){
+ this.addTableShow = true;
+ this.addTable.className = '';
+ this.addTable.tableName = '';
+ this.addTable.tableDesc = '';
+ },
+ importKFormDesignData () {
+ this.$refs.kfd.handleSetData(this.kFormDesignData)
+ },
+ tableHandleClose(item){
+ this.Tables = this.Tables.filter(table => table.className !== item.className);
+ },
+ handleChangeTable(a){
+ let selectTable = this.Tables.filter(table => table.tableName === a.tableName)
+
+ if(selectTable.length > 0){
+ let item = { ...selectTable[0] };
+ a.className = item.className;
+ a.tableDesc = item.tableDesc;
+ }
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue
new file mode 100644
index 0000000..27d8b96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/gen/lowCode/index.vue
@@ -0,0 +1,283 @@
+<template>
+ <div>
+ <a-card :bordered="false" v-show="indexOpenShow" :bodyStyle="tstyle">
+ <a-spin :spinning="Loading">
+ <div class="table-page-search-wrapper" v-if="hasPerm('lowCode:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撳悕绉�">
+ <a-input v-model="queryParam.databaseName" allow-clear placeholder="璇疯緭鍏ュ簱鍚嶇О" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-spin>
+ </a-card>
+ <a-card :bordered="false" v-show="indexOpenShow">
+ <a-spin :spinning="Loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <div slot="operator" v-if="hasPerm('lowCode:add')">
+ <a-button type="primary" v-if="hasPerm('lowCode:add')" icon="plus" @click="$refs.addForm.add()"
+ >鏂板</a-button
+ >
+ </div>
+ <span slot="databaseName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="tableName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="busName" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="nameSpace" slot-scope="text">
+ <ellipsis :length="25" tooltip>{{ text }}</ellipsis>
+ </span>
+ <!--<span slot="className" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span> -->
+ <!--<span slot="tableComment" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span> -->
+ <!-- <span slot="tablePrefix" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ 'yes_or_no' | dictType(text) }}</ellipsis>
+ </span> -->
+ <span slot="generateType" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ 'code_gen_create_type' | dictType(text) }}</ellipsis>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <span v-if="record.generateType === '1'">
+ <a v-if="hasPerm('lowCode:runDown')" @click="runDownCodeGenerate(record)">寮�濮嬬敓鎴�</a>
+ </span>
+ <span v-else>
+ <a-popconfirm
+ v-if="hasPerm('lowCode:runLocal')"
+ placement="topRight"
+ title="纭畾鐢熸垚浠g爜鍒版湰椤圭洰锛�"
+ @confirm="() => runLocalCodeGenerate(record)"
+ >
+ <a>寮�濮嬬敓鎴�</a>
+ </a-popconfirm>
+ </span>
+ <a-divider
+ type="vertical"
+ v-if="
+ hasPerm('lowCode:config') & hasPerm('lowCode:runLocal') || hasPerm('lowCode:runDown')
+ "
+ />
+ <a-divider type="vertical" v-if="hasPerm('lowCode:config') & hasPerm('lowCode:edit')" />
+ <a v-if="hasPerm('lowCode:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('lowCode:edit') & hasPerm('lowCode:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('lowCode:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => codeGenerateDelete(record)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('lowCode:add')" />
+ <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('lowCode:edit')" />
+ </a-spin>
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable, Ellipsis } from '@/components'
+import {
+ lowCodePage,
+ lowCodeRunLocal,
+ lowCodeEdit,
+ lowCodeDelete,
+} from '@/api/modular/gen/lowCodeManage'
+import addForm from './addForm'
+import editForm from './editForm'
+
+export default {
+ components: {
+ STable,
+ Ellipsis,
+ addForm,
+ editForm,
+ },
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴撳悕绉�',
+ dataIndex: 'databaseName',
+ scopedSlots: { customRender: 'databaseName' },
+ },
+ {
+ title: '涓氬姟鍚�',
+ dataIndex: 'busName',
+ scopedSlots: { customRender: 'busName' },
+ },
+ {
+ title: '鍛藉悕绌洪棿',
+ dataIndex: 'nameSpace',
+ scopedSlots: { customRender: 'nameSpace' },
+ },
+ // {
+ // title: '绫诲悕',
+ // dataIndex: 'className',
+ // scopedSlots: { customRender: 'className' }
+ // },
+ // {
+ // title: '鍔熻兘鍚�',
+ // dataIndex: 'tableComment',
+ // scopedSlots: { customRender: 'tableComment' }
+ // },
+ {
+ title: '浣滆�呭鍚�',
+ dataIndex: 'authorName',
+ },
+ // {
+ // title: '琛ㄥ墠缂�绉婚櫎',
+ // dataIndex: 'tablePrefix',
+ // scopedSlots: { customRender: 'tablePrefix' }
+ // },
+ {
+ title: '鐢熸垚鏂瑰紡',
+ dataIndex: 'generateType',
+ scopedSlots: { customRender: 'generateType' },
+ },
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ loadData: (parameter) => {
+ return lowCodePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ Loading: false,
+ jdbcDriverList: [],
+ indexOpenShow: true,
+ }
+ },
+ created() {
+ if (this.hasPerm('lowCode:edit') || this.hasPerm('lowCode:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '230px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' },
+ })
+ }
+ },
+ methods: {
+ /**
+ * 寮�濮嬬敓鎴愪唬鐮侊紙鐢熸垚鍘嬬缉鍖咃級
+ */
+ runDownCodeGenerate(record) {
+ console.log(record.id)
+ // this.Loading = true
+ // codeGenerateRunDown({ id: record.id })
+ // .then((res) => {
+ // this.Loading = false
+ // this.downloadfile(res)
+ // // eslint-disable-next-line handle-callback-err
+ // })
+ // .catch((err) => {
+ // this.Loading = false
+ // this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒')
+ // })
+ },
+ downloadfile(res) {
+ var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+ var contentDisposition = res.headers['content-disposition']
+ var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+ var result = patt.exec(contentDisposition)
+ var filename = result[1]
+ var downloadElement = document.createElement('a')
+ var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ var reg = /^["](.*)["]$/g
+ downloadElement.style.display = 'none'
+ downloadElement.href = href
+ downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+ },
+ /**
+ * 寮�濮嬬敓鎴愪唬鐮侊紙鏈湴椤圭洰锛�
+ */
+ runLocalCodeGenerate(record) {
+ lowCodeRunLocal(record.id).then((res) => {
+ if (res.success) {
+ this.$message.success('鐢熸垚鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鐢熸垚澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鍒犻櫎
+ */
+ codeGenerateDelete(record) {
+ this.Loading = true
+ lowCodeDelete([{ id: record.id }])
+ .then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ })
+ .catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ .finally((res) => {
+ this.Loading = false
+ })
+ },
+ /**
+ * 璇︾粏閰嶇疆鐣岄潰杩斿洖
+ */
+ handleResetOpen() {
+ this.indexOpenShow = true
+ this.$refs.table.refresh()
+ },
+ /**
+ * 鍏朵粬鐣岄潰杩斿洖
+ */
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ },
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue
new file mode 100644
index 0000000..e27e5e1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/editForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+ <!-- 202311 -->
+ <a-modal
+ :title="title"
+ width="600px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="bind-entrance-edit-modal-content">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-form-item label="鐗╂枡缂栫爜">
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" allow-clear v-decorator="['materialNo',{rules:[{required:true,message:'鐗╂枡缂栫爜涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="MaterialName">
+ <a-input placeholder="璇疯緭鍏�" allow-clear v-decorator="['MaterialName',{rules:[{required:true,message:'涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="MaterialDensity">
+ <a-input placeholder="璇疯緭鍏aterialDensity" allow-clear v-decorator="['MaterialDensity',{rules:[{required:true,message:'MaterialDensity涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="MaterialBatch">
+ <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['MaterialBatch',{rules:[{required:true,message:'涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+
+ <!-- <a-row :gutter="16">
+ <a-col :span="8">
+ <a-form-item label="闀�">
+ <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['long',{rules:[{required:true,message:'闀夸笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="瀹�">
+ <a-input-number placeholder="璇疯緭鍏ュ" allow-clear style="width: 100%" v-decorator="['wide',{rules:[{required:true,message:'瀹戒笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="楂�">
+ <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['high',{rules:[{required:true,message:'楂樹笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+
+ </a-form>
+ </div>
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ export default {
+ emits:['callback'],
+ data () {
+ return {
+ labelCol: {
+ span:24
+ },
+ wrapperCol: {
+ span:24
+ },
+ visible: false,
+ confirmLoading: false,
+ title:'鏂板涓绘澘鐗╂枡',
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init () {
+ let _initForm = {materialNo:''}
+ this.visible = true
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ },
+ numberValidate(rule, value, callback){
+ if (value<=0){
+ callback('蹇呴』澶т簬0');
+ } else {
+ callback();
+ }
+ },
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.handleCancel()
+ this.$emit('callback',values)
+ }
+ })
+ },
+ handleCancel () {
+ this.visible = false
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.bind-entrance-edit-modal-content{
+ padding: 20px 16px 0 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue
new file mode 100644
index 0000000..d075c39
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/index.vue
@@ -0,0 +1,514 @@
+<template>
+ <!-- 202311 -->
+ <a-spin :spinning="loading">
+ <div class="wms-in-bound-page">
+ <!-- <div class="in-bound-page-block block-three">
+ <div style="width:580px;margin:0 auto">
+ 鍏ュ簱绫诲瀷锛�
+ <a-radio-group v-model="receiptType" @change="onChange">
+ <a-radio v-for="(item, index) in taskModelData" :value="item.code" :key="'destination-sel-' + index">
+ {{ item.name }}
+ </a-radio>
+ </a-radio-group>
+ </div>
+ </div> -->
+
+ <div class="in-bound-page-block block-one">
+ <search-box label="鎵樼洏鍙�" v-model="containterTph" :msg-type="msgType.containter" :msg="msg.containter"
+ :label-width="labelWidth" placeholder="璇疯緭鍏�..." @search="onContainterSearch" @reset="onContainterReset" />
+ </div>
+
+
+ <div class="in-bound-page-block block-one">
+ <search-box label="鐗╂枡鍙�" v-model="materialNoSaoma" :msg-type="msgType.materialNoSaoma" :msg="msg.materialNoSaoma"
+ :label-width="labelWidth" placeholder="璇疯緭鍏�..." @search="onMaterialSearch" @reset="onmaterialReset" />
+ </div>
+
+
+
+ <div class="in-bound-page-block block-two">
+ <div class="table-top-box">
+ <!-- v-if="receiptType == 2" -->
+ <!-- <a-button type="primary" @click="onAddMaterial" >娣诲姞鐗╂枡</a-button> -->
+ </div>
+ <!-- v-if="receiptType == 2" -->
+ <div class="table-box">
+ <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <template slot="specSlots" slot-scope="text, record">
+ {{ record.long }}*{{ record.wide }}*{{ record.high }}
+ </template>
+ <template slot="action" slot-scope="text, record, index">
+ <a-button type="danger" @click.stop="onDel(record, index)">鍒� 闄�</a-button>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ <div class="in-bound-page-block block-three">
+ <div class="block-three-input-box">
+ <a-row :gutter="32">
+ <a-col :md="12" :sm="24">
+ <input-layout label="鍏ュ簱鍙�" :label-width="labelWidth">
+ <a-select v-model="sourcePlace" placeholder="璇烽�夋嫨..." style="width:100%;" allowClear>
+ <a-select-option v-for="(item, index) in selectList.entrances" :value="item"
+ :key="'entrance-sel-' + index">{{ item }}</a-select-option>
+ </a-select>
+ </input-layout>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <input-layout label="搴撲綅鍙�" :label-width="labelWidth">
+ <a-input placeholder="璇疯緭鍏�..." v-model.trim="placecode" />
+ </input-layout>
+ </a-col>
+ </a-row>
+ </div>
+ </div>
+ <div class="bottom-btns-view">
+ <!-- <a-button type="primary" :disabled="bindBtnDisabled" @click="onBind">缁勭洏</a-button> -->
+ <!-- <a-button type="primary" @click="onAutoIntrance">鑷姩鍏ュ簱</a-button> -->
+
+ <a-button type="primary" @click="onRk(1)">缁勭洏</a-button>
+ <a-button type="primary" :disabled="sourcePlace==''" @click="onRk(2)">鑷姩鍏ュ簱</a-button>
+ <a-button type="primary" :disabled="placecode==''" @click="onRk(3)">浜哄伐鍏ュ簱</a-button>
+ <a-button @click="onReset">閲� 缃�</a-button>
+ </div>
+
+ <edit-form ref="form" @callback="handleOk" />
+ </div>
+ </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import editForm from './editForm.vue'
+import StationSelect from '@/components/StationSelect.vue'
+import {
+ BindEntranceGetContainer,
+ BindAction,
+ BindEntranceAutoWare,
+ AutoWare, // 1109
+ automaticWarehousing, // 1109
+ manualWarehousing, // 1109
+ MaterialRukuPage, // 1109
+} from '@/api/modular/main/BindEntranceManage'
+
+export default {
+ name: 'wmsBindEntrancePage',
+ components: { SearchBox, InputLayout, editForm, StationSelect },
+ data() {
+ return {
+ loading: false,
+ labelWidth: '75px',
+ containter: null,
+ receiptType: "", //1 绌烘墭 2 鐗╂枡
+ msg: {
+ containter: '',
+ materialNoSaoma:''
+ },
+ msgType: {
+ containter: '',
+ materialNoSaoma:''
+ },
+ containterTph: '',
+ sufFrom: {
+ stationArr: []
+ },
+ selectList: {
+ entrances: ['鍏ュ簱鍙�'],
+ destinations: []
+ },
+ tableKey: 'materialNo',
+ list: [
+ // {
+ // "materialName": "88888888888888888888",
+ // "materialNo": 1111111,
+ // "materialId": 0,
+ // "materialBatch": "3333333",
+ // "materialType": 1,
+ // "inspectionMethod": 1,
+ // "materialSpec": "444",
+ // "materialDensity": "5",
+ // "materialUnit": "6",
+ // "lesWorkshopSection": 1
+ // }
+ ],
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' }
+ },
+ {
+ dataIndex: 'materialNo',
+ title: '鐗╂枡缂栧彿'
+ },
+ {
+ dataIndex: 'materialName',
+ title: '鐗╂枡鍚嶇О'
+ },
+ {
+ dataIndex: 'materialBatch',
+ title: '鐗╂枡鎵规'
+ },
+ // {
+ // dataIndex:'MaterialDensity',
+ // title:'MaterialDensity'
+ // },
+
+ // {
+ // dataIndex:'materialspec',
+ // title:'灏哄',
+ // scopedSlots: { customRender: 'specSlots' }
+ // },
+ {
+ dataIndex: 'action',
+ title: '鎿嶄綔',
+ fixed: 'right',
+ width: '70',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ taskModelData: [
+
+ ],
+ containter: {
+ "containerCode": ""
+ },
+ materialNoSaoma:"",
+ sourcePlace:"",
+ bindBtnDisabled:true,
+ placecode:""
+ }
+ },
+ computed: {
+ // bindBtnDisabled() {
+ // let res = true;
+ // if (this.containter && (this.containter.containerStatus === 1 || this.containter.containerStatus === 2) && this.list.length > 0) {
+ // res = false;
+ // }
+ // return res;
+ // },
+ // autoIntranceBtnDisabled() {
+ // let res = true;
+ // if (this.containter && (this.containter.containerStatus === 1 || this.containter.containerStatus === 2) && this.list.length > 0 && this.sufFrom.stationArr.length === 2) {
+ // res = false;
+ // }
+ // return res;
+ // }
+ },
+ created() {
+ const taskModelOption = this.$options
+ this.taskModelData = taskModelOption.filters['dictData']('ruku_type')
+ // this.$nextTick(() => {
+ // // this.columns = this.columnone;
+ // })
+ },
+ methods: {
+ onContainterReset() {
+ this.resetContainter()
+ },
+
+
+ onContainterSearch() {
+ if (!this.containterTph) {
+ this.msgType.containter = 'error'
+ this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+ return false;
+ }
+
+ this.msg.containter = ''
+ this.loading = true;
+ this.getContainterInfo((f) => {
+ this.loading = false;
+ })
+
+ },
+
+ // 鎵墿鏂欏彿
+ onMaterialSearch() {
+ if (this.materialNoSaoma=='') {
+ this.$message.warning(`璇疯緭鍏ョ墿鏂欏彿锛乣);
+ return
+ }
+
+ // this.msg.materialNoSaoma = ''
+ this.loading = true;
+ let params = {
+ MaterialNo:this.materialNoSaoma
+ }
+ MaterialRukuPage(params).then((res) => {
+ this.loading = false;
+ if(res.data){
+ let arr1 = this.list.filter((v)=> v.materialNo == res.data.materialNo );
+ if(arr1.length>0){
+ this.$message.warning(`姝ょ墿鏂欏凡缁忓湪鍒楄〃涓瓨鍦紒`);
+ return
+ }
+ this.list.unshift(res.data)
+ this.msgType.materialNoSaoma = ''
+ this.msg.materialNoSaoma = '';
+ }else{
+ this.msgType.materialNoSaoma = 'error'
+ this.msg.materialNoSaoma = '鐗╂枡涓嶅瓨鍦紒';
+ // this.$message.warning(`鐗╂枡涓嶅瓨鍦紒`);
+ }
+ }).catch(err => {
+ //this.$message.error(err);
+ })
+
+ },
+ onmaterialReset() {
+ this.materialNoSaoma = ""
+ },
+
+ resetContainter() {
+ this.clearContainter()
+ this.clearBackContainer()
+ },
+ // 娓呯┖鎵樼洏鍙�
+ clearContainter() {
+ this.containterTph = ''
+ this.msg.container = ''
+ this.msgType.containter = ''
+
+ },
+ clearBackContainer() {
+ this.containter = null
+ },
+ resetSufFrom() {
+ this.sufFrom.stationArr = []
+ },
+ getContainterInfo(callback) {
+ let params = { Containercode: this.containterTph }
+ const __setErrMessage = function (__msg) {
+ if (!__msg) {
+ __msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒'
+ }
+ this.msgType.containter = 'error'
+ this.msg.containter = "鎵樼洏涓嶅瓨鍦紒";
+ }.bind(this)
+ BindEntranceGetContainer(params).then((d) => {
+ if (d.data) {
+ if (d.data.containerCode) {
+ this.containter = d.data.wmsContainer
+ let _arr = d.data.wmsMaterials || []
+ if (_arr.length > 0) {
+ this.list = _arr
+ }
+ this.msgType.containter = 'info'
+ this.msg.containter = `灏哄锛�${this.containter.specLength}*${this.containter.specWidth}`;
+ this.containterTph = d.data.containerCode
+ callback && callback(true)
+ } else {
+ this.clearBackContainer()
+ __setErrMessage(d.message)
+ callback && callback(false)
+ }
+ } else {
+ this.clearBackContainer()
+ __setErrMessage(d.message)
+ callback && callback(false)
+ }
+ }).catch((err) => {
+ this.clearBackContainer()
+ __setErrMessage()
+ callback && callback(false)
+ })
+
+ },
+ onAddMaterial() {
+ this.$refs.form.init()
+ },
+ handleOk(obj) {
+ this.addToList(obj)
+ },
+ addToList(obj) {
+ let f = false, _no = "";
+ for (let i = 0; i < this.list.length; i++) {
+ if (this.list[i][this.tableKey] === obj[this.tableKey]) {
+ f = true
+ _no = this.list[i][this.tableKey]
+ break;
+ }
+ }
+ if (!f) {
+ this.list.unshift(obj)
+ } else {
+ this.$message.warning(`鐗╂枡${_no}宸插瓨鍦紒`);
+ }
+ },
+ onDel(obj, index) {
+ this.list.splice(index, 1)
+ },
+ onAutoIntrance() {
+ this.loading = true;
+ this.dealAutoIntrance((f) => {
+ this.loading = false;
+ if (f) {
+ this.$message.success('鍏ュ簱鎴愬姛锛�');
+ this.resetContainter()
+ this.resetSufFrom()
+ this.list = [];
+ }
+ })
+ },
+ onBind() {
+ this.loading = true;
+ this.dealBind((f) => {
+ if (f) {
+
+ this.getContainterInfo((f1) => {
+ this.loading = false;
+ this.$message.success('缁勭洏鎴愬姛锛�');
+ })
+ } else {
+ this.loading = false;
+ }
+ })
+ },
+ onReset() {
+ this.receiptType = ''
+ this.sourcePlace = ''
+ this.placecode = ''
+ this.containterTph = ''
+ this.msg.containter = ''
+ this.materialNoSaoma =''
+ this.resetContainter()
+ this.resetSufFrom()
+ this.list = [];
+ },
+ dealBind(callback) {
+ let params = {
+ containerCode: this.containter.containerCode,
+ wmsMaterials: this.list
+ }
+ BindAction(params).then(() => {
+ callback && callback(true)
+ }).catch(() => {
+ callback && callback(false)
+ })
+ },
+ dealAutoIntrance(callback) {
+ let params = {
+ containerCode: this.containter.containerCode,
+ wmsMaterials: this.list
+ // stationCode:this.sufFrom.stationArr[1]
+ }
+ BindEntranceAutoWare(params).then(() => {
+ callback && callback(true)
+ }).catch(() => {
+ callback && callback(false)
+ })
+ },
+ onChange() {
+
+ },
+ //鍏ュ簱
+ onRk(param) {
+ // if (this.receiptType == '') {
+ // this.$message.warning(`璇烽�夋嫨鍏ュ簱绫诲瀷锛乣);
+ // return;
+ // }
+
+ if (this.containterTph == '' || this.containterTph== null || this.containterTph == undefined) {
+ this.$message.warning(`璇疯緭鍏ユ墭鐩樺彿锛乣);
+ return;
+ }
+
+
+
+ let params = {
+ containerCode: this.containterTph || '',
+ source: 1, //this.receiptType
+ placeCode: this.placecode, //搴撲綅鍙�
+ sourcePlace: this.sourcePlace, //鍏ュ簱鍙�
+ wmsMaterials: this.list
+ }
+
+ // 缁勭洏
+ if (param == 1) {
+ AutoWare(params).then(() => {
+ this.loading = false;
+ this.$message.success('缁勭洏鎴愬姛锛�');
+ this.onReset()
+ }).catch(err => {
+ // this.$message.error(err);
+ })
+ }
+
+ // 鑷姩鍏ュ簱
+ if (param == 2) {
+ automaticWarehousing(params).then(() => {
+ this.loading = false;
+ this.$message.success('鑷姩鍏ュ簱鎴愬姛锛�');
+ this.onReset()
+ }).catch(err => {
+ // this.$message.error(err);
+ })
+ }
+
+ // 浜哄伐鍏ュ簱
+ if (param == 3) {
+ manualWarehousing(params).then(() => {
+ this.loading = false;
+ this.$message.success('浜哄伐鍏ュ簱鎴愬姛锛�');
+ this.onReset()
+ }).catch(err => {
+ //this.$message.error(err);
+ })
+ }
+ }
+ }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound-page {
+ border-radius: 6px 6px 0 0;
+ background-color: #fff;
+}
+
+.in-bound-page-block {
+ border-bottom: 2px solid #dcdcdc;
+ overflow: auto;
+ padding-top: 16px;
+ padding-bottom: 16px;
+
+ &.block-two {
+ padding-top: 12px;
+
+ .table-box {
+ padding-top: 20px;
+ min-height: 241px;
+ }
+ }
+
+ &.block-three {
+ overflow: hidden;
+ padding-left: 8px;
+ padding-right: 8px;
+ }
+}
+
+.bottom-btns-view {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ padding: 16px 8px;
+
+ .ant-btn+.ant-btn {
+ margin-left: 20px;
+ }
+}
+
+.block-three-input-box {
+ margin: 0 auto;
+ width: 600px;
+}
+
+.table-top-box {
+ padding-left: 20px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue
new file mode 100644
index 0000000..37f3f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+ <div class="wms-in-bound-input-layout">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <slot></slot>
+ <div v-if="msg">
+ <a-alert :message="msg" type="error" show-icon />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBoundInputLayout',
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ }
+ },
+ mounted(){
+ console.log(this.$scopedSlots.err)
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-input-layout{
+ width:100%;
+ display:flex;
+ margin:0 auto;
+ .label-view{
+ flex-shrink: 0;
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .input-view{
+ flex-grow:1;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue
new file mode 100644
index 0000000..91a37f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrance/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+ <div class="wms-in-bound-search-box">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+ <div v-if="msg && innerValue" class="msg-row">
+ <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+ <a-alert v-else :message="msg" type="info" show-icon />
+ </div>
+ </div>
+ <div class="btns-view">
+ <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+ <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBoundSearchBox',
+ emits:['input','search','reset'],
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ placeholder:{
+ type:String,
+ default:''
+ },
+ msgType:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ },
+ value:{
+ type:[String,null],
+ default:''
+ },
+ btnDisabled:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerValue:''
+ }
+ },
+ created(){
+ this.innerValue = this.value
+ },
+ watch:{
+ innerValue(newVal,oldVal){
+ if (newVal!==this.value) {
+ this.$emit('input',newVal)
+ }
+ },
+ value(newVal,oldVal){
+ if (newVal!==this.innerValue) {
+ this.innerValue = newVal;
+ }
+ }
+ },
+ methods:{
+ onSearch(){
+ this.$emit('search',this.innerValue)
+ },
+ onReset(){
+ this.innerValue = ''
+ this.$emit('reset')
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-search-box{
+ width:600px;
+ display:flex;
+ margin:0 auto;
+ .label-view,.btns-view{
+ flex-shrink: 0;
+ }
+ .label-view{
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .btns-view{
+ padding-left: 16px;
+ .ant-btn + .ant-btn {
+ margin-left:10px;
+ }
+ }
+ .input-view{
+ flex-grow:1;
+ .msg-row{
+ padding-top:4px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue
new file mode 100644
index 0000000..fd60b36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/index.vue
@@ -0,0 +1,549 @@
+<template>
+ <a-spin :spinning="loading">
+ <div class="wms-in-bound-page">
+ <div class="in-bound-page-block block-one">
+ <search-box
+ label="鎵樼洏鍙�"
+ v-model="prevFrom.containter"
+ :msg-type="msgType.containter"
+ :msg="msg.containter"
+ :label-width="labelWidth"
+ placeholder="璇疯緭鍏�..."
+ @search="onContainterSearch"
+ @reset="onContainterReset"
+ />
+ </div>
+ <div class="in-bound-page-block block-two">
+ <div class="radios-box">
+ <div class="label" :style="{width:labelWidth}">宸ユ锛�</div>
+ <div class="content">
+ <div class="radio-group">
+ <a-radio-group v-model="prevFrom.workType">
+ <a-radio v-for="(item,index) in selectList.workTypes" :value="item.code" :key="'work-type-radio-'+index">{{item.name}}</a-radio>
+ </a-radio-group>
+ </div>
+ <div v-if="msg.workType" class="msg-row">
+ <a-alert :message="msg.workType" type="error" show-icon />
+ </div>
+ </div>
+ </div>
+ <search-box
+ label="鐗╂枡鐮�"
+ v-model="prevFrom.material"
+ :msg-type="msgType.material"
+ :msg="msg.material"
+ :label-width="labelWidth"
+ placeholder="璇疯緭鍏�..."
+ :btn-disabled="materialDisabled"
+ @search="onMaterialSearch"
+ @reset="onMaterialReset"
+ />
+ <div class="table-box">
+ <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+ <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+ <template slot="input" slot-scope="text, record">
+ <a-input-number v-model="record.bindquantity" :min="0" />
+ </template>
+ <template slot="action" slot-scope="text, record, index">
+ <a-button type="danger" @click.stop="onDel(record,index)" :disabled="materialDisabled">鍒� 闄�</a-button>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ <div class="in-bound-page-block block-three">
+ <a-row :gutter="16">
+ <a-col :md="8" :sm="24">
+ <input-layout label="璧峰浣嶇疆" :label-width="labelWidth">
+ <a-input placeholder="璇疯緭鍏�..." v-model.trim="sufFrom.entrance" allowClear />
+ </input-layout>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <input-layout label="鐩爣浠撳簱" :label-width="labelWidth">
+ <a-select v-model="sufFrom.areaId" placeholder="璇烽�夋嫨..." style="width:100%;" allowClear>
+ <a-select-option v-for="(item,index) in selectList.areas" :value="item.areaId" :key="'area-sel-'+index">{{item.areaName}}</a-select-option>
+ </a-select>
+ </input-layout>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <input-layout label="鐩爣搴撲綅鍙�/宸ヤ綅" :label-width="labelWidth2">
+ <a-input placeholder="璇疯緭鍏�..." v-model.trim="sufFrom.placecode" allowClear />
+ </input-layout>
+ </a-col>
+ </a-row>
+ </div>
+ <div class="bottom-btns-view">
+ <a-button type="primary" :disabled="bindBtnDisabled" @click="onBind">缁勭洏</a-button>
+ <a-button type="danger" :disabled="manualIntranceBtnDisabled" @click="onManualIntrance">浜哄伐鍏ュ簱</a-button>
+ <a-button type="primary" :disabled="autoIntranceBtnDisabled" @click="onAutoIntrance">鑷姩鍏ュ簱</a-button>
+ <a-button type="danger" :disabled="moveBtnDisabled" @click="onTransfer">绉诲簱</a-button>
+ <a-button @click="onReset">閲� 缃�</a-button>
+ </div>
+ </div>
+ </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import {
+ BindEntranceGetContainer,
+ BindEntranceGetMaterial,
+ BindAction,
+ BindEntranceGetSelects,
+ BindEntranceManualWare,
+ BindEntranceAutoWare,
+ BindEntranceTransfer
+} from '@/api/modular/main/BindEntranceManage'
+export default {
+ name:'wmsBindEntrancePage',
+ components:{SearchBox,InputLayout},
+ data(){
+ return {
+ loading:false,
+ labelWidth:'75px',
+ labelWidth2:'120px',
+ containter:null,
+ materialDisabled:false,
+ msg:{
+ containter:'',
+ material:'',
+ workType:''
+ },
+ msgType:{
+ containter:'info',
+ material:'error'
+ },
+ prevFrom:{
+ containter:'',
+ material:'',
+ workType:''
+ },
+ sufFrom:{
+ entrance:'',
+ areaId:undefined,
+ placecode:''
+ },
+ selectList:{
+ workTypes:[],
+ areas:[]
+ },
+ tableKey:'tableKey',
+ list:[],
+ columns:[
+ {
+ dataIndex:'index',
+ title:'搴忓彿',
+ fixed:'left',
+ width:'60',
+ scopedSlots: { customRender: 'index' }
+ },
+ {
+ dataIndex:'materialno',
+ title:'鐗╂枡缂栧彿'
+ },
+ {
+ dataIndex:'materialname',
+ title:'鐗╂枡鍚嶇О'
+ },
+ {
+ dataIndex:'materialspec',
+ title:'灏哄'
+ },
+ {
+ dataIndex:'materialDensity',
+ title:'瀵嗗害'
+ },
+ {
+ dataIndex:'materialbatch',
+ title:'鎵规'
+ },
+ {
+ dataIndex:'bindquantity',
+ title:'鏁伴噺',
+ scopedSlots: { customRender: 'input' }
+ },
+ {
+ dataIndex:'action',
+ title:'鎿嶄綔',
+ fixed:'right',
+ width:'70',
+ scopedSlots: { customRender: 'action' }
+ }
+ ]
+ }
+ },
+ computed:{
+ bindBtnDisabled(){
+ let res = true;
+ if (this.containter && this.containter.containerstatus!==3 && this.list.length>0) {
+ res = false;
+ }
+ return res;
+ },
+ manualIntranceBtnDisabled(){
+ let res = true;
+ //鍙湁鎵樼洏琛ㄧず绌烘墭鍏ュ簱 锛� 鍙湁鐗╂枡琛ㄧず鏃犳墭鐗╂枡鍏ュ簱
+ if ((this.containter || this.list.length>0) && (this.sufFrom.placecode || this.sufFrom.areaId)) {
+ res = false;
+ }
+ return res;
+ },
+ autoIntranceBtnDisabled(){
+ let res = true;
+ //鍙湁鎵樼洏琛ㄧず绌烘墭鍏ュ簱 锛� 鍙湁鐗╂枡琛ㄧず鏃犳墭鐗╂枡鍏ュ簱
+ if ((this.containter || this.list.length>0) && this.sufFrom.entrance && (this.sufFrom.placecode || this.sufFrom.areaId)) {
+ res = false;
+ }
+ return res;
+ },
+ moveBtnDisabled(){
+ let res = true;
+ if (this.sufFrom.placecode && this.materialDisabled) {
+ res = false;
+ }
+ return res;
+ }
+ },
+ methods:{
+ getSelectList(){
+ this.loading = true;
+ BindEntranceGetSelects().then((d)=>{
+ this.selectList.areas = d.data
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ onContainterReset(){
+ this.resetContainter()
+ },
+ onContainterSearch(){
+ if (!this.prevFrom.containter) {
+ this.msgType.containter = 'error'
+ this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+ return false;
+ }
+
+ this.msg.containter = ''
+ this.loading = true;
+ this.getContainterInfo((f)=>{
+ this.loading = false;
+ })
+ },
+ onMaterialReset(){
+ this.resetMaterial()
+ },
+ resetContainter(){
+ this.msg.containter = '';
+ this.prevFrom.containter = ''
+ this.containter = null;
+ this.materialDisabled = false;
+ },
+ resetMaterial(){
+ this.msg.material = '';
+ this.prevFrom.material = ''
+ },
+ resetSufFrom(){
+ this.sufFrom.entrance = ''
+ this.sufFrom.placecode = ''
+ },
+ onMaterialSearch(){
+ if (!this.prevFrom.workType) {
+ this.msg.workType = '璇烽�夋嫨宸ユ锛�';
+ return false;
+ }
+ this.msg.workType = ''
+ if (!this.prevFrom.material) {
+ this.msg.material = '璇疯緭鍏ョ墿鏂欑紪鍙凤紒';
+ return false;
+ }
+ this.msg.material = ''
+ this.loading = true;
+ this.getMaterialInfo((f)=>{
+ this.loading = false;
+ })
+ },
+ getContainterInfo(callback){
+ let params = {Containercode:this.prevFrom.containter}
+ BindEntranceGetContainer(params).then((d)=>{
+ if (d.data) {
+ let _temp1 = this.$options.filters['dictType']('container_type',d.data.wmsContainer.containertype)
+ let _temp2 = this.$options.filters['dictType']('container_status',d.data.wmsContainer.containerstatus)
+ this.msgType.containter = 'info'
+ this.msg.containter = `鏉愯川锛�${_temp1}锛岀姸鎬侊細${_temp2}`;
+ this.containter = d.data.wmsContainer
+ this.list = (d.data.wmsMaterials || []).map((mapItem)=>{
+ return this.createTableKey(mapItem)
+ })
+ if (d.data.wmsContainer.containerstatus===3) {
+ this.materialDisabled = true;
+ }
+ callback && callback(true)
+ } else {
+ this.msgType.containter = 'error'
+ this.msg.containter = d.message || '鏌ユ棤淇℃伅锛�';
+ this.containter = null;
+ this.list = []
+ callback && callback(false)
+ }
+ }).catch((err)=>{
+ this.containter = null;
+ this.list = []
+ callback && callback(false)
+ })
+ },
+ getMaterialInfo(callback){
+ let params = {Materialno:this.prevFrom.material,LesWorkshopSection:this.prevFrom.workType}
+ BindEntranceGetMaterial(params).then((d)=>{
+ if (d.data) {
+ let arr = (d.data || []).map((mapItem)=>{
+ return this.createTableKey(mapItem)
+ })
+ this.checkInList(arr)
+ callback && callback(true)
+ } else {
+ this.msg.material = d.message || '鏌ユ棤淇℃伅锛�';
+ callback && callback(false)
+ }
+ }).catch((err)=>{
+ callback && callback(false)
+ })
+ },
+ /* 鍒涘缓鍞竴閿紝鏍规嵁涓氬姟閫昏緫锛堝垽鏂悓绉嶇墿鏂欑殑瑙勫垯锛夋敼鍔� */
+ createTableKey(obj){
+ obj[this.tableKey] = obj.materialno
+ return obj
+ },
+ checkInList(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(this.list,newArr)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ getContainterMaterials(callback){
+ let params = {ContainerName:this.prevFrom.containter}
+ WmsGetContainterList(params).then(d=>{
+ this.list = d.data || []
+ callback && callback(true)
+ }).catch(err=>{
+ this.list = []
+ callback && callback(false)
+ })
+ },
+ onDel(obj,index){
+ this.list.splice(index,1)
+ },
+ onManualIntrance(){
+ let cf = this.checkBeforeSubmit();
+ if (!cf) return false;
+ this.loading = true;
+ this.dealManualIntrance((f)=>{
+ this.loading = false;
+ if (f) {
+ this.$message.success('鍏ュ簱鎴愬姛锛�');
+ this.resetContainter()
+ this.resetMaterial()
+ this.resetSufFrom()
+ this.list = [];
+ }
+ })
+ },
+ onAutoIntrance(){
+ let cf = this.checkBeforeSubmit();
+ if (!cf) return false;
+ this.loading = true;
+ this.dealAutoIntrance((f)=>{
+ this.loading = false;
+ if (f) {
+ this.$message.success('鍏ュ簱鎴愬姛锛�');
+ this.resetContainter()
+ this.resetMaterial()
+ this.resetSufFrom()
+ this.list = [];
+ }
+ })
+ },
+ onBind(){
+ let cf = this.checkBeforeSubmit('bind');
+ if (!cf) return false;
+ this.loading = true;
+ this.dealBind((f)=>{
+ if (f) {
+ this.getContainterInfo((f1)=>{
+ this.loading = false;
+ this.$message.success('缁勭洏鎴愬姛锛�');
+ })
+ } else {
+ this.loading = false;
+ }
+ })
+ },
+ onTransfer(){
+ this.loading = true;
+ this.dealTransfer((f)=>{
+ this.loading = false;
+ if (f) {
+ this.$message.success('绉诲簱鎴愬姛锛�');
+ this.resetContainter()
+ this.resetMaterial()
+ this.resetSufFrom()
+ this.list = [];
+ }
+ })
+ },
+ onReset(){
+ this.resetContainter()
+ this.resetMaterial()
+ this.list = [];
+ },
+ checkBeforeSubmit(type){
+ let flag=true, msg="";
+
+ if (this.list.length>0) {
+ for (let i=0;i<this.list.length;i++) {
+ if (!this.list[i].bindquantity) {
+ msg = `璇风‘璁ょ${i+1}绗旂墿鏂欑殑鏁伴噺锛乣
+ flag = false;
+ }
+ if (flag && this.list[i].bindquantity!==parseInt(this.list[i].bindquantity)) {
+ msg = `绗�${i+1}绗旂墿鏂�,鏁伴噺鍙兘鏄鏁存暟锛乣
+ flag = false;
+ }
+ }
+ } else {
+ if (type==='bind') {
+ msg = '娌℃湁鐗╂枡淇℃伅锛�'
+ flag = false;
+ }
+ }
+
+ if (!flag && msg) {
+ this.$error({
+ title: '绯荤粺鎻愮ず',
+ content: msg,
+ });
+ }
+
+ return flag;
+ },
+ dealBind(callback){
+ let params = {
+ containercode:this.containter.containercode,
+ wmsMaterials:this.list
+ }
+ BindAction(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ dealManualIntrance(callback){
+ let params = {
+ containercode:this.containter?this.containter.containercode:null,
+ wmsMaterials:this.list,
+ placecode:this.sufFrom.placecode,
+ areaId:this.sufFrom.areaId
+ }
+ BindEntranceManualWare(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ dealAutoIntrance(callback){
+ let params = {
+ containercode:this.containter?this.containter.containercode:null,
+ wmsMaterials:this.list,
+ placecode:this.sufFrom.placecode,
+ areaId:this.sufFrom.areaId,
+ entrance:this.sufFrom.entrance
+ }
+ BindEntranceAutoWare(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ dealTransfer(callback){
+ let params = {
+ containercode:this.containter.containercode,
+ placecode:this.sufFrom.placecode
+ }
+ BindEntranceTransfer(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ }
+ },
+ created(){
+ this.selectList.workTypes = this.$options.filters['dictData']('lesworkshop_section')
+ },
+ mounted(){
+ this.getSelectList()
+ }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound-page{
+ border-radius: 6px 6px 0 0;
+ background-color: #fff;
+}
+.in-bound-page-block{
+ border-bottom:2px solid #dcdcdc;
+ overflow: auto;
+ padding-top: 16px;
+ padding-bottom: 16px;
+ &.block-two{
+ padding-top:12px;
+ .table-box{
+ padding-top:20px;
+ min-height: 241px;
+ }
+ }
+ &.block-three{
+ overflow: hidden;
+ padding-left:8px;
+ padding-right:8px;
+ }
+}
+.bottom-btns-view{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ padding:16px 8px;
+ .ant-btn + .ant-btn {
+ margin-left:20px;
+ }
+}
+.radios-box{
+ width:600px;
+ display:flex;
+ margin:0 auto;
+ padding-bottom: 12px;
+ &>.label{
+ flex-shrink: 0;
+ text-align: right;
+ }
+ &>.content{
+ flex-grow:1;
+ .msg-row{
+ padding-top:4px;
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue
new file mode 100644
index 0000000..37f3f0f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+ <div class="wms-in-bound-input-layout">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <slot></slot>
+ <div v-if="msg">
+ <a-alert :message="msg" type="error" show-icon />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBoundInputLayout',
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ }
+ },
+ mounted(){
+ console.log(this.$scopedSlots.err)
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-input-layout{
+ width:100%;
+ display:flex;
+ margin:0 auto;
+ .label-view{
+ flex-shrink: 0;
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .input-view{
+ flex-grow:1;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue
new file mode 100644
index 0000000..e0b7800
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/BindEntrancex/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+ <div class="wms-in-bound-search-box">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+ <div v-if="msg" class="msg-row">
+ <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+ <a-alert v-else :message="msg" type="info" show-icon />
+ </div>
+ </div>
+ <div class="btns-view">
+ <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+ <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBoundSearchBox',
+ emits:['input','search','reset'],
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ placeholder:{
+ type:String,
+ default:''
+ },
+ msgType:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ },
+ value:{
+ type:[String,null],
+ default:''
+ },
+ btnDisabled:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerValue:''
+ }
+ },
+ created(){
+ this.innerValue = this.value
+ },
+ watch:{
+ innerValue(newVal,oldVal){
+ if (newVal!==this.value) {
+ this.$emit('input',newVal)
+ }
+ },
+ value(newVal,oldVal){
+ if (newVal!==this.innerValue) {
+ this.innerValue = newVal;
+ }
+ }
+ },
+ methods:{
+ onSearch(){
+ this.$emit('search',this.innerValue)
+ },
+ onReset(){
+ this.innerValue = ''
+ this.$emit('reset')
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound-search-box{
+ width:600px;
+ display:flex;
+ margin:0 auto;
+ .label-view,.btns-view{
+ flex-shrink: 0;
+ }
+ .label-view{
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .btns-view{
+ padding-left: 16px;
+ .ant-btn + .ant-btn {
+ margin-left:10px;
+ }
+ }
+ .input-view{
+ flex-grow:1;
+ .msg-row{
+ padding-top:4px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue
new file mode 100644
index 0000000..8cda209
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/addForm.vue
@@ -0,0 +1,122 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍙戣揣鍑哄簱"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鎵瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ彂璐ф壒鍙�" style="width: 100%" v-decorator="['dispatchedBatch']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐т汉" v-decorator="['dispatchedWorker']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍙戣揣鏃堕棿" v-decorator="['dispatchedTime']" @change="onChangedispatchedTime"/>
+ </a-form-item>
+ <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['customer']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ DispatchedOutboundOrderAdd
+ } from '@/api/modular/main/DispatchedOutboundOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ dispatchedTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.dispatchedTime = this.dispatchedTimeDateString
+ DispatchedOutboundOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangedispatchedTime(date, dateString) {
+ this.dispatchedTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue
new file mode 100644
index 0000000..8b3fcfd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/editForm.vue
@@ -0,0 +1,149 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍙戣揣鍑哄簱"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鎵瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ彂璐ф壒鍙�" style="width: 100%" v-decorator="['dispatchedBatch']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐т汉" v-decorator="['dispatchedWorker']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍙戣揣鏃堕棿" v-decorator="['dispatchedTime']" @change="onChangedispatchedTime"/>
+ </a-form-item>
+ <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['customer']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ DispatchedOutboundOrderEdit
+ } from '@/api/modular/main/DispatchedOutboundOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ dispatchedTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ orderQuantity: record.orderQuantity,
+ dispatchedBatch: record.dispatchedBatch,
+ areaName: record.areaName,
+ dispatchedWorker: record.dispatchedWorker,
+ shippingAddress: record.shippingAddress,
+ customer: record.customer
+ }
+ )
+ })
+ this.form.getFieldDecorator('dispatchedTime', { initialValue: moment(record.dispatchedTime, 'YYYY-MM-DD') })
+ this.dispatchedTimeDateString = moment(record.dispatchedTime).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.dispatchedTime = this.dispatchedTimeDateString
+ this.record.dispatchedTime = this.dispatchedTimeDateString
+ DispatchedOutboundOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangedispatchedTime(date, dateString) {
+ this.dispatchedTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue
new file mode 100644
index 0000000..12f8662
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/index.vue
@@ -0,0 +1,296 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣鍗曞彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ彂璐у崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣浜�">
+ <a-input v-model="queryParam.dispatchedWorker" allow-clear placeholder="璇疯緭鍏ュ彂璐т汉"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣鍦板潃">
+ <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈡埛">
+ <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ュ鎴�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板鍙戣揣鍑哄簱</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => DispatchedOutboundOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ DispatchedOutboundOrderPage,
+ DispatchedOutboundOrderDelete ,
+ DispatchedOutboundOrderLargeCategories,
+ DispatchedOutboundOrderSubclass
+ } from '@/api/modular/main/DispatchedOutboundOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍙戣揣鍗曞彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鍙戣揣鎵瑰彿',
+ align: 'center',
+ dataIndex: 'dispatchedBatch'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍙戣揣浜�',
+ align: 'center',
+ dataIndex: 'dispatchedWorker'
+ },
+ {
+ title: '鍙戣揣鏃堕棿',
+ align: 'center',
+ dataIndex: 'dispatchedTime'
+ },
+ {
+ title: '鏀惰揣鍦板潃',
+ align: 'center',
+ dataIndex: 'shippingAddress'
+ },
+ {
+ title: '瀹㈡埛',
+ align: 'center',
+ dataIndex: 'customer'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return DispatchedOutboundOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ DispatchedOutboundOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ DispatchedOutboundOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ DispatchedOutboundOrderDelete (record) {
+ DispatchedOutboundOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue
new file mode 100644
index 0000000..a7af495
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedOutboundOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+ <div class="dispatched-out-bound-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { DispatchedOutboundOrderDetailPage } from '@/api/modular/main/DispatchedOutboundOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'dispatchedOutBoundOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return DispatchedOutboundOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.dispatched-out-bound-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue
new file mode 100644
index 0000000..f0c4728
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/addForm.vue
@@ -0,0 +1,136 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍙戣揣浣滀笟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="浜よ揣鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨浜よ揣鏃ユ湡" v-decorator="['deliveryGoodsTime']" @change="onChangedeliveryGoodsTime"/>
+ </a-form-item>
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+ </a-form-item>
+ <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+ </a-form-item>
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+ </a-form-item>
+ <a-form-item label="鍒嗛厤鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垎閰嶇姸鎬�" v-decorator="['assignmentStatus']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['custom']" />
+ </a-form-item>
+ <a-form-item label="鐢佃瘽鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇濊仈绯讳汉" v-decorator="['phoneNumber']" />
+ </a-form-item>
+ <a-form-item label="鏀惰幏鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹鑾峰湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="杩愯緭鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ繍杈撳叕鍙�" v-decorator="['transportationCompany']" />
+ </a-form-item>
+ <a-form-item label="杩愯緭鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ繍杈撳崟鍙�" v-decorator="['transportationOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鍙栨秷鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彇娑堝師鍥�" v-decorator="['reasonForCancellation']" />
+ </a-form-item>
+ <a-form-item label="鏁村崟鏀惰揣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ暣鍗曟敹璐�" v-decorator="['isFullOrder']" />
+ </a-form-item>
+ <a-form-item label="璐т富缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ揣涓荤紪鍙�" v-decorator="['shipperOrder']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ DispatchedWorkAdd
+ } from '@/api/modular/main/DispatchedWorkManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ deliveryGoodsTimeDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+ DispatchedWorkAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangedeliveryGoodsTime(date, dateString) {
+ this.deliveryGoodsTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue
new file mode 100644
index 0000000..1ec931b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/editForm.vue
@@ -0,0 +1,170 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍙戣揣浣滀笟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="浜よ揣鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨浜よ揣鏃ユ湡" v-decorator="['deliveryGoodsTime']" @change="onChangedeliveryGoodsTime"/>
+ </a-form-item>
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+ </a-form-item>
+ <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+ </a-form-item>
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+ </a-form-item>
+ <a-form-item label="鍒嗛厤鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垎閰嶇姸鎬�" v-decorator="['assignmentStatus']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['custom']" />
+ </a-form-item>
+ <a-form-item label="鐢佃瘽鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇濊仈绯讳汉" v-decorator="['phoneNumber']" />
+ </a-form-item>
+ <a-form-item label="鏀惰幏鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹鑾峰湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="杩愯緭鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ繍杈撳叕鍙�" v-decorator="['transportationCompany']" />
+ </a-form-item>
+ <a-form-item label="杩愯緭鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ繍杈撳崟鍙�" v-decorator="['transportationOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鍙栨秷鍘熷洜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彇娑堝師鍥�" v-decorator="['reasonForCancellation']" />
+ </a-form-item>
+ <a-form-item label="鏁村崟鏀惰揣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ暣鍗曟敹璐�" v-decorator="['isFullOrder']" />
+ </a-form-item>
+ <a-form-item label="璐т富缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ揣涓荤紪鍙�" v-decorator="['shipperOrder']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ DispatchedWorkEdit
+ } from '@/api/modular/main/DispatchedWorkManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ deliveryGoodsTimeDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ priority: record.priority,
+ areaName: record.areaName,
+ planNo: record.planNo,
+ shipNo: record.shipNo,
+ projectNo: record.projectNo,
+ assignmentStatus: record.assignmentStatus,
+ custom: record.custom,
+ phoneNumber: record.phoneNumber,
+ address: record.address,
+ transportationCompany: record.transportationCompany,
+ transportationOrderNo: record.transportationOrderNo,
+ reasonForCancellation: record.reasonForCancellation,
+ isFullOrder: record.isFullOrder,
+ shipperOrder: record.shipperOrder,
+ remarks: record.remarks
+ }
+ )
+ })
+ this.form.getFieldDecorator('deliveryGoodsTime', { initialValue: moment(record.deliveryGoodsTime, 'YYYY-MM-DD') })
+ this.deliveryGoodsTimeDateString = moment(record.deliveryGoodsTime).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+ this.record.deliveryGoodsTime = this.deliveryGoodsTimeDateString
+ DispatchedWorkEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangedeliveryGoodsTime(date, dateString) {
+ this.deliveryGoodsTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue
new file mode 100644
index 0000000..b1cc0d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/index.vue
@@ -0,0 +1,309 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璁㈠崟鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.deliveryOrderStatusEnum" placeholder="璇疯緭鍏ヨ鍗曠姸鎬�">
+ <a-select-option v-for="(item,index) in deliveryOrderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣浠撳簱鍚嶇О">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ彂璐т粨搴撳悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="澶囨敞">
+ <a-input v-model="queryParam.remarks" allow-clear placeholder="璇疯緭鍏ュ娉�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板鍙戣揣浣滀笟</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => DispatchedWorkDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { DispatchedWorkPage, DispatchedWorkDelete } from '@/api/modular/main/DispatchedWorkManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '璁㈠崟鐘舵��',
+ align: 'center',
+sorter: true,
+ dataIndex: 'deliveryOrderStatusEnum',
+ scopedSlots: { customRender: 'deliveryOrderStatusEnumscopedSlots' }
+ },
+ {
+ title: '浼樺厛绾�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'priority'
+ },
+ {
+ title: '鍗曟嵁澶х被',
+ align: 'center',
+sorter: true,
+ dataIndex: 'orderLargeCategory'
+ },
+ {
+ title: '鍗曟嵁灏忕被',
+ align: 'center',
+sorter: true,
+ dataIndex: 'orderSubclass'
+ },
+ {
+ title: '鍙戣揣浠撳簱鍚嶇О',
+ align: 'center',
+sorter: true,
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+sorter: true,
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '浜よ揣鏃ユ湡',
+ align: 'center',
+sorter: true,
+ dataIndex: 'deliveryGoodsTime'
+ },
+ {
+ title: '璁″垝鍙�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'planNo'
+ },
+ {
+ title: '鑸瑰彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'shipNo'
+ },
+ {
+ title: '宸ョ▼鍙�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'projectNo'
+ },
+ {
+ title: '鍒嗛厤鐘舵��',
+ align: 'center',
+sorter: true,
+ dataIndex: 'assignmentStatus'
+ },
+ {
+ title: '瀹㈡埛',
+ align: 'center',
+sorter: true,
+ dataIndex: 'custom'
+ },
+ {
+ title: '鐢佃瘽鑱旂郴浜�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'phoneNumber'
+ },
+ {
+ title: '鏀惰幏鍦板潃',
+ align: 'center',
+sorter: true,
+ dataIndex: 'address'
+ },
+ {
+ title: '杩愯緭鍏徃',
+ align: 'center',
+sorter: true,
+ dataIndex: 'transportationCompany'
+ },
+ {
+ title: '杩愯緭鍗曞彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'transportationOrderNo'
+ },
+ {
+ title: '鍙栨秷鍘熷洜',
+ align: 'center',
+sorter: true,
+ dataIndex: 'reasonForCancellation'
+ },
+ {
+ title: '鏁村崟鏀惰揣',
+ align: 'center',
+sorter: true,
+ dataIndex: 'isFullOrder'
+ },
+ {
+ title: '璐т富缂栧彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'shipperOrder'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+sorter: true,
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return DispatchedWorkPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData:[],
+ deliveryOrderStatusEnumData:[],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ this.deliveryOrderStatusEnumData = orderStatusEnumOption.filters['dictData']('purchase_receive_status')
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ DispatchedWorkDelete (record) {
+ DispatchedWorkDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue
new file mode 100644
index 0000000..f7a5249
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/DispatchedWork/infoBlock.vue
@@ -0,0 +1,114 @@
+<template>
+ <div class="dispatched-work-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { DispatchedWorkDetailPage } from '@/api/modular/main/DispatchedWorkManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'deliveryWorkInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return DispatchedWorkDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.dispatched-work-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue
new file mode 100644
index 0000000..4d744a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse/index.vue
@@ -0,0 +1,283 @@
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <!-- 鍑哄簱绠$悊202311 -->
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialno" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialtype" placeholder="璇烽�夋嫨鐗╂枡绫诲埆">
+ <a-select-option v-for="(item,index) in materialtypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialbatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialname" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡灏哄">
+ <a-input v-model="queryParam.materialspec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="妫�楠屾柟寮�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.inspectionmethod" placeholder="璇烽�夋嫨妫�楠屾柟寮�">
+ <a-select-option v-for="(item,index) in inspectionmethodData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曚綅绫诲埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.unittype" placeholder="璇烽�夋嫨鍗曚綅绫诲埆">
+ <a-select-option v-for="(item,index) in unittypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曚綅缂栧彿">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.unitno" placeholder="璇烽�夋嫨鍗曚綅缂栧彿">
+ <a-select-option v-for="(item,index) in unitnoData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栫爜">
+ <a-input v-model="queryParam.placecode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栫爜">
+ <a-input v-model="queryParam.containercode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.placeCode"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsMaterialStock:add')" >
+ <a-button icon="export" type="primary" :disabled="selectedRows.length==0" @click="onOpenSite">鑷姩鍑哄簱</a-button>
+ <a-button icon="export" type="danger" :disabled="selectedRows.length==0" @click="onManualOut">浜哄伐鍑哄簱</a-button>
+ <a-button icon="vertical-align-bottom">瀵煎嚭</a-button>
+ </template>
+ <span slot="materialtypescopedSlots" slot-scope="text">
+ {{ 'material_type' | dictType(text) }}
+ </span>
+ <span slot="inspectionmethodscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':'#108ee9'">{{ 'material_inspection' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="unittypescopedSlots" slot-scope="text">
+ {{ 'unit_type' | dictType(text) }}
+ </span>
+ <span slot="unitnoscopedSlots" slot-scope="text">
+ {{ 'unitno_type' | dictType(text) }}
+ </span>
+ </s-table>
+ </a-card>
+
+ <site-modal :visible.sync="siteVisible" type="out" @confirm="onSiteBack" />
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsMaterialStockPage, IexwarehouseManual, IexwarehouseAuto } from '@/api/modular/main/ExWarehouseManage'
+ import SiteModal from '@/components/ChooseSiteModal.vue'
+ export default {
+ components: {
+ STable,
+ SiteModal
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡绫诲埆',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'materialType',
+ scopedSlots: { customRender: 'materialtypescopedSlots' }
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'materialSpec'
+ },
+ {
+ title: '妫�楠屾柟寮�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'inspectionMethod',
+ scopedSlots: { customRender: 'inspectionmethodscopedSlots' }
+ },
+ {
+ title: '鍗曚綅绫诲埆',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'unitType',
+ scopedSlots: { customRender: 'unittypescopedSlots' }
+ },
+ {
+ title: '鍗曚綅缂栧彿',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'unitNo',
+ scopedSlots: { customRender: 'unitnoscopedSlots' }
+ },
+ {
+ title: '搴撳瓨鏁�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'stockNumber'
+ },
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'placeCode'
+ },
+ {
+ title: '鎵樼洏缂栫爜',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'containerCode'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsMaterialStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ res.data.rows = res.data.rows.map((_obj)=>{
+ _obj.materialType= _obj.materialType.toString()
+ _obj.inspectionMethod= _obj.inspectionMethod.toString()
+ _obj.unitType= _obj.unitType.toString()
+ _obj.unitNo= _obj.unitNo.toString()
+ return _obj;
+ })
+ // console.log(res.data)
+ return res.data
+ })
+ },
+ materialtypeData: [],
+ inspectionmethodData: [],
+ unittypeData: [],
+ unitnoData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ siteVisible:false
+ }
+ },
+ created () {
+ const materialtypeOption = this.$options
+ this.materialtypeData = materialtypeOption.filters['dictData']('material_type')
+ const inspectionmethodOption = this.$options
+ this.inspectionmethodData = inspectionmethodOption.filters['dictData']('material_inspection')
+ const unittypeOption = this.$options
+ this.unittypeData = unittypeOption.filters['dictData']('unit_type')
+ const unitnoOption = this.$options
+ this.unitnoData = unitnoOption.filters['dictData']('unit_type')
+ },
+ methods: {
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ onOpenSite(){
+ this.siteVisible = true
+ },
+ onSiteBack(res){
+ let params = {containercode:this.selectedRows[0].containercode,placecode:this.selectedRows[0].placecode,entranceId:res}
+ this.dealOut(params,'auto')
+ },
+ onManualOut(){
+ this.$confirm({
+ title: '鎿嶄綔纭',
+ content: '纭畾瑕佽繘琛屼汉宸ュ叆搴撴搷浣滃悧锛�',
+ cancelText:'鍙栨秷',
+ okText:'纭',
+ onOk:()=> {
+ // let params = {containercode:this.selectedRows[0].containercode,placecode:this.selectedRows[0].placecode}
+ this.dealOut(this.selectedRows)
+ }
+ });
+ },
+ dealOut(params,type){
+ let _methodName = 'manualAjax';
+ if (type==='auto') _methodName = 'autoAjax';
+ this[_methodName](params).then(()=>{
+ this.$message.success('鎿嶄綔鎴愬姛');
+ this.$refs.table.refresh()
+ }).catch(()=>{})
+ },
+ autoAjax(params){
+ console.log(this.selectedRows)
+ // return IexwarehouseAuto(params)
+ return IexwarehouseAuto(this.selectedRows);
+ },
+ manualAjax(params){
+ return IexwarehouseManual(params)
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue
new file mode 100644
index 0000000..b321801
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/addForm.vue
@@ -0,0 +1,206 @@
+<template>
+ <a-modal
+ title="鏂板鍙枡"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="ex-warehouse1-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['OrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['engineeringNo',{rules:[{required:true,message:'璇疯緭鍏ュ伐绋嬪彿锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['planNo',{rules:[{required:true,message:'璇疯緭鍏ヨ鍒掑彿锛�'}]}]" />
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙枡绔欑偣" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-show="false" v-decorator="['takeMaterialsSiteId',{rules:[{required:true,message:'璇烽�夋嫨鍙枡绔欑偣锛�'}]}]" />
+ <station-select v-model="stationArr" :get-lines="getLines" :get-stations="getStations" @change="onChangeStation" />
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input allowClear placeholder="璇疯緭鍏�..." v-decorator="['teamName',{rules:[{required:true,message:'璇疯緭鍏ョ彮缁勶紒'}]}]" />
+ </a-form-item>
+ </a-col> -->
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" @click="openChoose">
+ 娣诲姞鐗╂枡
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <a-table v-if="th" :data-source="list" :columns="columns" rowKey="id" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import ChooseModal from './chooseMaterials.vue'
+ import { CncTakeMaterialsAdd,GetBillNumber,GetLines,GetStations } from '@/api/modular/main/ExWarehouseManage1'
+ import StationSelect from '@/components/StationSelect.vue'
+ export default {
+ components:{ChooseModal,StationSelect},
+ data () {
+ return {
+ getLines:GetLines,
+ getStations:GetStations,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ lines:[],
+ stations:[],
+ stationArr:[],
+ th:0,
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+ { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+ { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+ { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+ { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+ { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber', width: 100 },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ chooseVisible:false
+ }
+ },
+ beforeCreate(){
+ this.form = this.$form.createForm(this)
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ this.getInitData()
+ });
+ },
+ getInitData(){
+ this.confirmLoading = true;
+ GetBillNumber().then((d1)=>{
+ this.form.setFieldsValue({OrderNo:(d1.data.takeMaterialsNo || '')})
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ onChangeStation(arr){
+ this.form.setFieldsValue({takeMaterialsSiteId:arr[1]})
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i].id === item.id) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(this.list,newArr)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ let params = {...values,...{WmsAssembleOrderDetails:this.list}}
+ CncTakeMaterialsAdd(params).then(()=>{
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ }).catch(()=>{
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ this.th = 0
+ this.list = []
+ this.chooseVisible = false
+ },
+ openChoose(){
+ this.chooseVisible = true
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.ex-warehouse1-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue
new file mode 100644
index 0000000..30fa193
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/chooseMaterials.vue
@@ -0,0 +1,335 @@
+<template>
+ <a-modal
+ title="鐗╂枡閫夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="ex-warehouse1-choose-modal-content">
+ <div class="choose-bar">
+ <div class="choose-form-view">
+ <a-form layout="inline">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.ContainerCode" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+ <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="灏哄" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.Specifications" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.Density" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="choose-btns-view">
+ <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+ <a-button @click.stop="onReset">閲嶇疆</a-button>
+ </div>
+ </div>
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ rowKey="id" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{x:1300,y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" rowKey="id" :pagination="false" :scroll="{x:1300,y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { QueryMaterials } from '@/api/modular/main/ExWarehouseManage1'
+const defaultQuery = {
+ MaterialType:undefined,
+ MaterialName:'',
+ Specifications:'',
+ MaterialBatch:'',
+ Density:'',
+ ContainerCode:''
+}
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ types:[],
+ query:{...defaultQuery},
+ queried:{...pagination},
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+ { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+ { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+ { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+ { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+ { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber', width: 100 }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo', width: 150 },
+ { title: '鍥惧彿', dataIndex: 'drawingNo', key: 'drawingNo' },
+ { title: '灏哄', dataIndex: 'materialSpec', key: 'materialSpec', width: 150 },
+ { title: '搴撳尯', dataIndex: 'areaName', key: 'areaName', width: 120 },
+ { title: '搴撲綅', dataIndex: 'placeCode', key: 'placeCode', width: 150 },
+ { title: '鎵樼洏鍙�', dataIndex: 'containerCode', key: 'containerCode', width: 120 },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ this.types = this.$options.filters['dictData']('material_type')
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.resetQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.query = {...defaultQuery}
+ this.queried = {...pagination}
+ },
+ onQuery(){
+ this.newQuery()
+ },
+ onReset(){
+ this.resetQuery()
+ },
+ resetQuery(){
+ this.query = {...defaultQuery}
+ this.newQuery()
+ },
+ newQuery(){
+ this.queried = {...this.query,...pagination}
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ QueryMaterials(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i].id === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i].id === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i].id === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i].id === item.id) {
+ arr.push(item.id)
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.ex-warehouse1-choose-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .choose-bar{
+ flex-shrink: 0;
+ padding: 8px 4px;
+ display: flex;
+ .choose-form-view{
+ flex-grow: 1;
+ }
+ .choose-btns-view{
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+ }
+ .table-box{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+ .ant-form-inline{
+ .ant-form-item {
+ margin-right: 0;
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue
new file mode 100644
index 0000000..0a4f60d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/index.vue
@@ -0,0 +1,265 @@
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�">
+ <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+ </a-form-item>
+ </a-col> -->
+ <!-- <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙枡绔欑偣">
+ <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐝粍">
+ <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="灏哄">
+ <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏鍙�">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template> -->
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a> -->
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('LesTakematerials:add')" >
+ <a-button type="primary" v-if="hasPerm('LesTakematerials:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍙枡</a-button>
+ </template>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+ <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+
+ <add-form ref="addForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { CncTakeMaterialsPage, CncTakeMaterialsDelete, Distribute } from '@/api/modular/main/ExWarehouseManage1'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantityTotal'
+ },
+ {
+ title: '鍙枡绔欑偣',
+ align: 'center',
+ dataIndex: 'stationName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '120px',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return CncTakeMaterialsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ materialTypeData: [],
+ statusData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const statusOption = this.$options
+ this.statusData = statusOption.filters['dictData']('order_status')
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onEdit(){
+
+ },
+ onDistribute(obj){
+ if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ this.dealDistribute([obj.id],(f)=>{
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onDel(){
+
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ dealDistribute(ids,callback){
+ this.$loading.show()
+ Distribute(ids).then(()=>{
+ this.$loading.hide()
+ this.$refs.table.refresh()
+ callback && callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback && callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue
new file mode 100644
index 0000000..3300202
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ExWarehouse1/infoBlock.vue
@@ -0,0 +1,142 @@
+<template>
+ <div class="ex-warehouse1-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ <template slot="action" slot-scope="text, record">
+ <a @click="onDistribute(record)">涓嬪彂</a>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { CncTakeMaterialsDetailPage,DetailDistribute } from '@/api/modular/main/ExWarehouseManage1'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'exWarehouse1InfoBlock',
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鍥惧彿', align:'center', dataIndex: 'drawingNo', key: 'drawingNo' },
+ { title: '鍏ュ簱鏃堕棿', align: 'center', dataIndex: 'createdTime', width: 170},
+ { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 },
+ { title: '鎿嶄綔', width: '80px', align: 'center', dataIndex: 'action', scopedSlots: { customRender: 'action' } }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.OrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return CncTakeMaterialsDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ onDistribute(obj){
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戠殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ this.dealDistribute(obj.id,(f)=>{
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealDistribute(id,callback){
+ this.$loading.show()
+ DetailDistribute(id).then(()=>{
+ this.$loading.hide()
+ callback && callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback && callback(false)
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.ex-warehouse1-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue
new file mode 100644
index 0000000..bfa139c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAccessDetails/index.vue
@@ -0,0 +1,275 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('View_AccessDetails:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规">
+ <a-input v-model="queryParam.MaterialBatch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.MaterialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鍙�">
+ <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+ <a-select-option v-for="(item,index) in taskmodelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+ <a-select-option v-for="(item,index) in tasktypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璧峰鐐�">
+ <a-input v-model="queryParam.SourcePlace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬬偣"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣鐐�">
+ <a-input v-model="queryParam.ToPlace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囩偣"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ row-key="id"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('View_AccessDetails:add')" >
+ <!-- <a-button type="primary" v-if="hasPerm('View_AccessDetails:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍑哄叆搴撹褰�</a-button> -->
+ </template>
+ <span slot="taskmodelscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':'#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="tasktypescopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':(text===2?'#87d068':'#108ee9')">{{ 'task_type' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskstatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':(text===2?'#108ee9':'#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+ </span>
+ <!-- <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('FoamingAccessDetails:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('FoamingAccessDetails:edit') & hasPerm('View_AccessDetails:delete')"/>
+ <a-popconfirm v-if="hasPerm('FoamingAccessDetails:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => FoamingAccessDetailsDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span> -->
+ <template class="table-operator" slot="operator" v-if="hasPerm('FoamingAccessDetails:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('FoamingAccessDetails:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+ 瀵煎嚭
+ </a-button>
+ </template>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { FoamingAccessDetailsPage, FoamingAccessDetailsDelete } from '@/api/modular/main/FoamingAccessDetailsManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '浠诲姟鍙�',
+ align: 'center',
+ dataIndex: 'taskNo'
+ },
+ {
+ title: '浠诲姟鏂瑰紡',
+ align: 'center',
+ dataIndex: 'taskModel',
+ scopedSlots: { customRender: 'taskmodelscopedSlots' }
+ },
+ {
+ title: '浠诲姟绫诲瀷',
+ align: 'center',
+ dataIndex: 'taskType',
+ scopedSlots: { customRender: 'tasktypescopedSlots' }
+ },
+ {
+ title: '浠诲姟鐘舵��',
+ align: 'center',
+ dataIndex: 'taskStatus',
+ scopedSlots: { customRender: 'taskstatusscopedSlots' }
+ },
+ {
+ title: '浠诲姟浼樺厛绾�',
+ align: 'center',
+ dataIndex: 'taskLevel'
+ },
+ {
+ title: '璧峰鐐�',
+ align: 'center',
+ dataIndex: 'sourcePlace'
+ },
+ {
+ title: '鐩爣鐐�',
+ align: 'center',
+ dataIndex: 'toPlace'
+ },
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'batch'
+ },
+ {
+ title: '瀵嗗害',
+ align: 'center',
+ dataIndex: 'materialDensity'
+ },
+ {
+ title: '闀�',
+ align: 'center',
+ dataIndex: 'long'
+ },
+ {
+ title: '楂�',
+ align: 'center',
+ dataIndex: 'high'
+ },
+ {
+ title: '瀹�',
+ align: 'center',
+ dataIndex: 'wide'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ dataIndex: 'updatedTime'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+ params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.SearchBeginTime
+ delete params.SearchEndTime
+ }
+ return FoamingAccessDetailsPage(Object.assign(parameter, params)).then((res) => {
+ return res.data
+ })
+ },
+ taskmodelData: [],
+ tasktypeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ // if (this.hasPerm('View_AccessDetails:edit') || this.hasPerm('View_AccessDetails:delete')) {
+ // this.columns.push({
+ // title: '鎿嶄綔',
+ // width: '150px',
+ // dataIndex: 'action',
+ // scopedSlots: { customRender: 'action' }
+ // })
+ // }
+ const __Option = this.$options
+ this.taskmodelData = __Option.filters['dictData']('task_model')
+ this.tasktypeData = __Option.filters['dictData']('task_type')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ FoamingAccessDetailsDelete (record) {
+ FoamingAccessDetailsDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue
new file mode 100644
index 0000000..2cd06c6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingAgvTask/index.vue
@@ -0,0 +1,186 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('FoamingAgvTask:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+ <a-select-option v-for="(item,index) in agvTaskTypeList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.agvState" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in agvTaskStatusList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="褰撳墠鎵ц鐨勪换鍔�">
+ <a-input v-model="queryParam.transportOrder" allow-clear placeholder="璇疯緭鍏ュ綋鍓嶆墽琛岀殑浠诲姟"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓讳换鍔″彿">
+ <a-input v-model="queryParam.taskNo" allow-clear placeholder="璇疯緭鍏ヤ富浠诲姟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="瀹瑰櫒缂栧彿">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ紪鍙�"/>
+ </a-form-item>
+ </a-col> -->
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ >
+ <span slot="action" slot-scope="text, record">
+ <a :class="[record.agvState==='瀹屾垚'?'disabled':'']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a>
+ </span>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { FoamingAgvTaskPage, FoamingAgvTaskDelete, FoamingAgvTaskForceComplete } from '@/api/modular/main/FoamingAgvTaskManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '浠诲姟绫诲瀷',
+ align: 'center',
+ dataIndex: 'taskType'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'agvState'
+ },
+ {
+ title: '璧峰浣嶇疆',
+ align: 'center',
+ dataIndex: 'startPlace'
+ },
+ {
+ title: '缁撴潫浣嶇疆',
+ align: 'center',
+ dataIndex: 'endPlace'
+ },
+ {
+ title: '褰撳墠鎵ц鐨勪换鍔�',
+ align: 'center',
+ dataIndex: 'transportOrder'
+ },
+ {
+ title: '涓讳换鍔″彿',
+ align: 'center',
+ dataIndex: 'taskNo'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '60px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return FoamingAgvTaskPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ taskTypeData: [],
+ agvStateData: [],
+ //workShopTypeData: [],
+ agvTaskTypeList: [],
+ agvTaskStatusList: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const _agvTaskTypeOption = this.$options
+ this.agvTaskTypeList = _agvTaskTypeOption.filters['dictData']('agv_task_type')
+ const _agvTaskStatusOption = this.$options
+ this.agvTaskStatusList = _agvTaskStatusOption.filters['dictData']('agv_task_status')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onForceComplete(obj){
+ if (obj.agvState==='瀹屾垚') return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleForceComplete(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleForceComplete(id,callback){
+ this.$loading.show()
+ FoamingAgvTaskForceComplete(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue
new file mode 100644
index 0000000..ff1350f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/chooseMaterialsModal.vue
@@ -0,0 +1,427 @@
+<template>
+ <a-modal
+ title="鍑哄簱鐗╂枡閫夋嫨"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ :zIndex="1001"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="shk-issues-choose-materials-modal">
+ <div class="search-bar">
+ <div class="search-form-item">
+ <div class="label">鎵规锛�</div>
+ <div class="content">
+ <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.Batch" />
+ </div>
+ </div>
+ <div class="search-form-item">
+ <div class="label">宸烽亾锛�</div>
+ <div class="content">
+ <a-select style="width: 100%" mode="multiple" placeholder="璇烽�夋嫨..." allow-clear v-model="query.aisles">
+ <a-select-option v-for="(item,index) in selectOptions.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </div>
+ </div>
+ <div class="search-form-item">
+ <div class="label">鍏ュ簱鏃堕棿锛�</div>
+ <div class="content">
+ <a-range-picker v-model="query.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </div>
+ </div>
+ <div class="search-form-item">
+ <div class="label">鐗╂枡缂栧彿锛�</div>
+ <div class="content">
+ <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.MaterialNo" />
+ </div>
+ </div>
+ <div class="search-form-item">
+ <div class="label">瀵嗗害锛�</div>
+ <div class="content">
+ <a-input placeholder="璇疯緭鍏�..." allow-clear v-model="query.MaterialDensity" />
+ </div>
+ </div>
+ <div class="bar-btns">
+ <a-button type="primary" @click="onQuery">鏌ヨ</a-button>
+ <a-button @click="onReset" style="margin-right:0;">閲嶇疆</a-button>
+ </div>
+ </div>
+
+ <div class="result-table-view">
+ <div class="more-list-head">
+ <div class="more-list-padding">
+ <div class="more-list-row">
+ <div class="more-list-cell" v-for="(item,index) in columns" :key="'more-list-head-cell-'+index" :style="{
+ width:item.grow?'1px':(item.width?item.width:'auto'),
+ flexGrow:item.grow?item.grow:'initial',
+ flexShrink:item.grow?'initial':'0',
+ justifyContent:item.align?item.align:'center',
+ cursor:(typeof item.sort === 'number')?'pointer':'auto'
+ }" @click.stop="changeTableSort(item,index)">
+ <a-checkbox v-if="item.type==='checkbox'" :indeterminate="indeterminate" :checked="checkAll" @change="onChangeAllChecked" />
+ <template v-else>
+ {{item.name}}<up-down-sort style="margin-left:8px;" :sort="item.sort" v-if="typeof item.sort === 'number'" />
+ </template>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="more-list-body" @scroll="handleScroll" :key="listKey">
+ <div class="more-list-padding">
+ <div class="more-list-row" v-for="(itema,indexa) in list" :key="'more-list-row-'+indexa">
+ <div class="more-list-cell" v-for="(itemb,indexb) in columns" :key="'more-list-body-cell-'+indexb" :style="{
+ width:itemb.grow?'1px':(itemb.width?itemb.width:'auto'),
+ flexGrow:itemb.grow?itemb.grow:'initial',
+ flexShrink:itemb.grow?'initial':'0',
+ justifyContent:itemb.align?itemb.align:'center'
+ }">
+ <a-checkbox v-if="itemb.type==='checkbox'" :checked="itema.checked" @change="onChangeChecked($event,itema,indexa)" />
+ <template v-else-if="itemb.type==='index'">{{indexa+1}}</template>
+ <template v-else-if="itemb.type==='spec'">{{`${itema.long}*${itema.wide}*${itema.high}`}}</template>
+ <template v-else>{{itema[itemb.key]}}</template>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" @click="handleSubmit" :disabled="choosen.length<=0">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { FoamingChuKuOrderStockPage } from '@/api/modular/main/FoamingChuKuOrderManage'
+import { WmsPlaceGetFAisles } from '@/api/modular/main/WmsPlaceManage'
+import UpDownSort from '@/components/UpDownSort'
+const defaultQuery = {
+ MaterialNo:'',
+ Batch:'',
+ Aisle:'',
+ MaterialDensity:'',
+ dateRange:[],
+ aisles:[],
+}
+const pagination = {PageNo:1,PageSize:20}
+export default {
+ name:'shkIssuesChooseMaterialsModal',
+ emits:['update:visible','callback'],
+ components:{UpDownSort},
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ selectOptions:{
+ aisles:[]
+ },
+ list:[],
+ query:{...defaultQuery},
+ queried:{...pagination},
+ columns:[
+ { type:'checkbox', width:'50px' },
+ { type:'index', name:'搴忓彿', width:'50px' },
+ { name:'宸烽亾', key:'aisle', width:'80px', sort:2, sortName:'AisleSort' },
+ { name:'鐗╂枡缂栧彿', key:'materialNo', grow:2, sort:2, sortName:'MaterialNoSort' },
+ { name:'鎵规', key:'batch', grow:1, sort:2, sortName:'BatchSort' },
+ { name:'瀵嗗害', key:'materialDensity', grow:1, sort:2, sortName:'MaterialDensitySort' },
+ { type:'spec', name:'灏哄', grow:2, sort:2, sortName:'LongSort' },
+ { name:'搴撲綅鍙�', key:'placeCode', width:'140px', sort:2, sortName:'PlaceCodeSort' },
+ { name:'鍏ュ簱鏃堕棿', key:'createdTime', width:'170px', sort:2, sortName:'TimeSort' }
+ ],
+ sortColumnIndexs:[2,3,4,5,6,7,8], //鍏佽鎺掑簭鐨勫垪搴忓彿锛屼笌columns鐨剆ort瀛楁鏄惁瀛樺湪瀵瑰簲
+ listKey:0,
+ scrollTop:0,
+ choosen:[],
+ indeterminate:false,
+ checkAll:false,
+ hasMore:true,
+ inLoading:false
+ }
+ },
+ watch:{
+ visible(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ this.handleClose()
+ }
+ }
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ if (this.visible) {
+ this.getAislesSelectOptions()
+ this.reset()
+ }
+ },
+ handleClose(){
+ if (!this.visible) {
+ this.query = {...defaultQuery}
+ this.list = []
+ this.choosen = []
+ this.indexChoosen = []
+ this.scrollTop = 0
+ this.indeterminate = false
+ this.checkAll = false
+ this.hasMore = true
+ this.inLoading = false
+ }
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ onQuery(){
+ this.newList()
+ },
+ onReset(){
+ this.reset()
+ },
+ onTableChange(pagination){
+ if (pagination.current!==this.queried.PageNo) {
+ this.pageList(pagination.current)
+ }
+ },
+ reset(){
+ this.query = {...defaultQuery}
+ this.newList()
+ },
+ newList(){
+ let sortPorams = {}
+ this.columns.forEach((columnitem)=>{
+ if (typeof columnitem.sort === 'number') {
+ sortPorams[columnitem.sortName] = columnitem.sort
+ }
+ })
+ this.queried = {...this.query,...pagination,...sortPorams}
+ if ((this.queried.dateRange instanceof Array) && this.queried.dateRange.length===2) {
+ this.queried.SearchBeginTime = this.queried.dateRange[0] + ' 00:00:00'
+ this.queried.SearchEndTime = this.queried.dateRange[1] + ' 23:59:59'
+ delete this.queried.dateRange
+ } else {
+ delete this.queried.dateRange
+ delete this.queried.SearchBeginTime
+ delete this.queried.SearchEndTime
+ }
+ if ((this.queried.aisles instanceof Array) && this.queried.aisles.length>0) {
+ this.queried.Aisle = this.queried.aisles.join(',')
+ delete this.queried.aisles
+ } else {
+ this.queried.Aisle = ''
+ delete this.queried.aisles
+ }
+ this.listKey = new Date().getTime()
+ this.hasMore = true
+ this.getList()
+ },
+ moreList(){
+ this.queried.PageNo++
+ this.getList()
+ },
+ getList(){
+ this.loading = true
+ this.inLoading = true
+ FoamingChuKuOrderStockPage(this.queried).then(res=>{
+ this.addList(res.data)
+ this.$nextTick(()=>{
+ this.inLoading = false
+ })
+ this.loading = false
+ }).catch(()=>{
+ this.loading = false
+ })
+ },
+ changeTableSort(obj,index){
+ if (typeof obj.sort !== 'number') return false;
+ if (obj.sort===1) {
+ obj.sort = 2
+ this.newList()
+ } else {
+ this.sortColumnIndexs.forEach((item)=>{
+ if (item===index) {
+ if (obj.sort===0) {
+ this.columns[item].sort = 1
+ } else {
+ this.columns[item].sort = 0
+ }
+ this.newList()
+ } else {
+ if (this.columns[item].sort!==2) {
+ this.columns[item].sort = 2
+ this.newList()
+ }
+ }
+ })
+ }
+ },
+ addList(resData){
+ let arr = resData.rows || []
+ if (this.queried.PageNo === 1) {
+ this.list = arr
+ this.checkAll = false
+ this.indeterminate = false
+ this.choosen = []
+ this.indexChoosen = []
+ } else {
+ arr.forEach((item)=>{
+ this.list.push(item)
+ })
+ this.setAllCheckStatus()
+ }
+ if (this.queried.PageNo >= resData.totalPage) {
+ this.hasMore = false
+ }
+ },
+ handleScroll(e){
+ let _prevTop = this.scrollTop
+ this.scrollTop = e.target.scrollTop
+ if (!this.hasMore || this.inLoading || this.scrollTop<=_prevTop) {
+ return false
+ }
+ if ((e.target.scrollHeight - e.target.clientHeight - e.target.scrollTop)<=1) {
+ this.moreList()
+ }
+ },
+ onChangeChecked(e,obj,index){
+ obj.checked = e.target.checked
+ this.$set(this.list,index,obj)
+ this.setAllCheckStatus()
+ if (obj.checked) {
+ this.choosen.push(obj)
+ this.indexChoosen.push(index)
+ } else {
+ let cIndex = this.indexChoosen.indexOf(index);
+ if (cIndex>=0){
+ this.indexChoosen.splice(cIndex,1)
+ this.choosen.splice(cIndex,1)
+ }
+ }
+ },
+ onChangeAllChecked(){
+ if (this.checkAll) {
+ this.checkAll = false
+ } else {
+ this.checkAll = true
+ }
+ this.indeterminate = false
+ this.list.forEach((item)=>{
+ item.checked = this.checkAll
+ })
+ if (this.checkAll) {
+ this.choosen = [...this.list]
+ this.indexChoosen = this.list.map((itemx,indexx)=>{
+ return indexx
+ })
+ } else {
+ this.choosen = []
+ this.indexChoosen = []
+ }
+ },
+ setAllCheckStatus(){
+ let c = 0 , n = this.list.length;
+ this.list.forEach((item)=>{
+ if (item.checked) {
+ c++
+ }
+ })
+ if (c===0) {
+ this.checkAll = false
+ this.indeterminate = false
+ } else if (c===n) {
+ this.checkAll = true
+ this.indeterminate = false
+ } else {
+ this.checkAll = false
+ this.indeterminate = true
+ }
+ },
+ getAislesSelectOptions(){
+ if (this.selectOptions.aisles.length<=0) {
+ WmsPlaceGetFAisles().then((d)=>{
+ this.selectOptions.aisles = d.data || []
+ }).catch(()=>{})
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-issues-choose-materials-modal{
+ height: 65vh;
+ display: flex;
+ flex-direction: column;
+ .search-bar{
+ display: flex;
+ padding: 16px 16px 0 16px;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ .search-form-item{
+ width: 33.33%;
+ flex-shrink: 0;
+ display: flex;
+ margin-bottom: 16px;
+ &>.label{
+ width: 78px;
+ flex-shrink: 0;
+ text-align: right;
+ padding-top: 4px;
+ }
+ &>.content{
+ width: 1px;
+ flex-grow: 1;
+ }
+ }
+ .bar-btns{
+ padding-left:16px;
+ }
+ }
+ .result-table-view{
+ flex-grow: 1;
+ height: 1px;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding-bottom: 12px;
+ .more-list-head{
+ flex-shrink: 0;
+ .more-list-cell{
+ background-color:#fafafa;
+ }
+ }
+ .more-list-body{
+ height: 1px;
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .more-list-padding{
+ padding: 0 16px;
+ }
+ .more-list-row{
+ box-sizing: border-box;
+ width: 100%;
+ display: flex;
+ border-bottom: 1px solid #e8e8e8;
+ .more-list-cell{
+ display: flex;
+ align-items: center;
+ padding: 6px 8px;
+ word-break:break-all;
+ word-wrap:break-word;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue
new file mode 100644
index 0000000..83117b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/editForm.vue
@@ -0,0 +1,383 @@
+锘�<template>
+ <a-modal
+ :title="title"
+ width="95vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="issue-notes-modal-content">
+
+ <div class="edit-form">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <!-- ############# -->
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁缂栧彿涓嶅彲涓虹┖锛�'}]}]">
+ <a-icon slot="addonAfter" @click="refreshOrderNo" type="sync" />
+ </a-input>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鍑哄簱鍗曠被鍒�">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍑哄簱鍗曠被鍒�" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍑哄簱鍗曠被鍒紒' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="鍑哄簱鍙�">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍑哄簱鍙�" v-decorator="['exitPort', {rules: [{required:true,message:'鍑哄簱鍙d笉鍙负绌猴紒'}]}]">
+ <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="澶囨敞">
+ <a-input placeholder="璇疯緭鍏ュ娉�" :max-length="30" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <!-- ############# -->
+ </a-form>
+ </div>
+
+ <div class="materials-table-top">
+ <a-button type="primary" icon="plus" @click="onOpenChooseModal">娣诲姞鐗╂枡</a-button>
+ <a-input placeholder="鐗╂枡缂栧彿/鎵规" v-model="keywords" style="display:inline-block;width:240px;" />
+ </div>
+
+ <div class="materials-table">
+ <div class="materials-table-head">
+ <div class="materials-table-padding">
+ <div class="materials-table-row">
+ <div class="materials-table-cell" v-for="(item,index) in columns" :key="'materials-table-head-cell-'+index" :style="{
+ width:item.grow?'1px':(item.width?item.width:'auto'),
+ flexGrow:item.grow?item.grow:'initial',
+ flexShrink:item.grow?'initial':'0',
+ justifyContent:item.align?item.align:'center'
+ }">
+ <template>{{item.name}}</template>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="materials-table-body">
+ <div class="materials-table-padding">
+ <a-empty v-if="showList.length<=0" />
+ <div v-else class="materials-table-row" v-for="(itema,indexa) in showList" :key="'materials-table-row-'+indexa">
+ <div class="materials-table-cell" v-for="(itemb,indexb) in columns" :key="'materials-table-body-cell-'+indexb" :style="{
+ width:itemb.grow?'1px':(itemb.width?itemb.width:'auto'),
+ flexGrow:itemb.grow?itemb.grow:'initial',
+ flexShrink:itemb.grow?'initial':'0',
+ justifyContent:itemb.align?itemb.align:'center'
+ }">
+ <template v-if="itemb.type==='index'">{{indexa+1}}</template>
+ <template v-else-if="itemb.type==='spec'">{{`${itema.long}*${itema.wide}*${itema.high}`}}</template>
+ <template v-else-if="itemb.type==='action'">
+ <a-button type="danger" icon="delete" size="small" @click="onCancelList(indexa,itema)">鍒犻櫎</a-button>
+ </template>
+ <template v-else>{{itema[itemb.key]}}</template>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+
+ <choose-materials-modal :visible.sync="chooseVisible" @callback="chooseCallback" />
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" :disabled="list.length<=0" @click="handleSubmit">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import chooseMaterialsModal from './chooseMaterialsModal.vue'
+ import { FoamingChuKuOrderDetailEdit, FoamingChuKuOrderAdd, FoamingChuKuOrderEdit, FoamingChuKuOrderGetNo } from '@/api/modular/main/FoamingChuKuOrderManage'
+ export default {
+ components:{chooseMaterialsModal},
+ emits:['callback'],
+ props:{
+ orderSubclassData:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ preferredPortList:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ id:null,
+ type:'',
+ labelCol: {
+ span:24
+ },
+ wrapperCol: {
+ span:24
+ },
+ visible: false,
+ confirmLoading: false,
+ title:'',
+ form: this.$form.createForm(this),
+ list:[],
+ showList:[],
+ keywords:'',
+ columns:[
+ { type:'index', name:'搴忓彿', width:'50px' },
+ { name:'宸烽亾', key:'aisle', width:'70px' },
+ { name:'鐗╂枡缂栧彿', key:'materialNo', grow:2 },
+ { name:'鎵规', key:'batch', grow:1 },
+ { name:'瀵嗗害', key:'materialDensity', grow:1 },
+ { type:'spec', name:'灏哄', grow:2 },
+ { name:'搴撲綅鍙�', key:'placeCode', width:'140px' },
+ { name:'鍏ュ簱鏃堕棿', key:'createdTime', width:'170px' },
+ { type:'action', name:'鎿嶄綔', width:'80px' }
+ ],
+ rowkey:'materialNo',
+ chooseVisible:false
+ }
+ },
+ watch:{
+ keywords(newVal,oldVal) {
+ if (newVal!==oldVal) {
+ this.setShowList()
+ }
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (type,record) {
+ this.type = type;
+ this.visible = true
+ if (type==='add'){
+ this.title="鏂板鍑哄簱鍗�"
+ this.getOrderNo((str)=>{
+ if (str) {
+ let _initForm = {orderNo:str}
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ }
+ })
+ } else {
+ this.title="缂栬緫鍑哄簱鍗�"
+ this.initEdit(record)
+ }
+ },
+ initEdit(obj){
+ this.id = obj.id
+ this.$loading.show()
+ FoamingChuKuOrderDetailEdit({Id:this.id}).then((d)=>{
+ let _initForm = {
+ orderNo:d.data.orderNo,
+ exitPort:d.data.exitPort,
+ orderSubclass:d.data.orderSubclass,
+ remarks:d.data.remarks
+ }
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ this.list = d.data.wareFoamingOrderDetails
+ this.setShowList()
+ this.$loading.hide()
+ }).catch(()=>{
+ this.$loading.hide()
+ })
+ },
+ getOrderNo(callback){
+ this.$loading.show()
+ FoamingChuKuOrderGetNo().then((d)=>{
+ callback(d.data)
+ this.$loading.hide()
+ }).catch(()=>{
+ this.$loading.hide()
+ })
+ },
+ setShowList(){
+ if (this.keywords) {
+ let arr = []
+ this.list.forEach((item)=>{
+ if (item.materialNo.indexOf(this.keywords)>=0 || item.materialNo.indexOf(this.batch)>=0) {
+ arr.push(item)
+ }
+ })
+ this.showList = arr
+ } else {
+ this.showList = [...this.list]
+ }
+ },
+ onOpenChooseModal(){
+ this.chooseVisible = true
+ },
+ chooseCallback(arr){
+ let newArr = [], msg = ''
+ arr.forEach((item)=>{
+ let ch = this.checkHasMaterial(item)
+ if (ch) {
+ if (msg) msg += '锛�'
+ msg += ch
+ } else {
+ newArr.push(item)
+ }
+ })
+ if (msg) {
+ msg += '鐗╂枡宸叉坊鍔犺繃锛屼笉鍐嶉噸澶嶆坊鍔狅紒'
+ this.$warning({
+ title: '绯荤粺鎻愮ず',
+ content: msg
+ });
+ }
+ this.list = [].concat(this.list,newArr)
+ this.setShowList()
+ },
+ onCancelList(index,obj){
+ this.showList.splice(index,1)
+ let n = -1
+ for (let i=0;i<this.list.length;i++) {
+ if (obj[this.rowkey] === this.list[i][this.rowkey]) {
+ n = i
+ break
+ }
+ }
+ if (n>=0) {
+ this.list.splice(n,1)
+ }
+ },
+ /* 楠岃瘉鐗╂枡鏄惁宸茶娣诲姞杩囷紝鏄繑鍥炵墿鏂欑紪鍙凤紝鍚﹀垯杩斿洖绌哄瓧绗︿覆 */
+ checkHasMaterial(obj){
+ let res = ''
+ for (let i=0;i<this.list.length;i++) {
+ if (obj[this.rowkey] === this.list[i][this.rowkey]) {
+ res = obj[this.rowkey]
+ break;
+ }
+ }
+ return res
+ },
+ refreshOrderNo(){
+ if (this.type==='edit') return false;
+ this.getOrderNo((str)=>{
+ if (str) {
+ let _initForm = {orderNo:str}
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ }
+ })
+ },
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.$loading.show()
+ this.handleSubmitAjax(values,(f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ this.$emit('callback')
+ }
+ })
+ }
+ })
+ },
+ handleSubmitAjax (params,callback){
+ if (this.type==='add') {
+ this.handleAddAjax(params,callback)
+ } else {
+ this.handleEditAjax(params,callback)
+ }
+ },
+ handleAddAjax(params,callback){
+ let _params = {...params}
+ _params.wareFoamingOrderDetails = this.list
+ FoamingChuKuOrderAdd(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleEditAjax(params,callback){
+ let _params = {...params}
+ _params.wareFoamingOrderDetails = this.list
+ _params.id = this.id;
+ FoamingChuKuOrderEdit(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.list = []
+ this.showList = []
+ this.keywords = ''
+ this.visible = false
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.issue-notes-modal-content{
+ height: 65vh;
+ display: flex;
+ flex-direction: column;
+ .edit-form,.materials-table-top{
+ flex-shrink: 0;
+ }
+ .edit-form{
+ padding: 20px 16px 0 16px;
+ }
+ .materials-table-top{
+ padding: 0 16px 8px 16px;
+ }
+ .materials-table{
+ height: 1px;
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding-bottom: 12px;
+ .materials-table-head{
+ flex-shrink: 0;
+ .materials-table-cell{
+ background-color:#fafafa;
+ }
+ }
+ .materials-table-body{
+ height: 1px;
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .materials-table-padding{
+ padding: 0 16px;
+ }
+ .materials-table-row{
+ box-sizing: border-box;
+ width: 100%;
+ display: flex;
+ border-bottom: 1px solid #e8e8e8;
+ .materials-table-cell{
+ display: flex;
+ align-items: center;
+ padding: 6px 8px;
+ word-break:break-all;
+ word-wrap:break-word;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue
new file mode 100644
index 0000000..4e9cd67
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/index.vue
@@ -0,0 +1,424 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('FoamingChuKuOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规">
+ <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑哄簱鍗曠被鍨�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.OrderSubclass" placeholder="璇烽�夋嫨鍑哄簱鍗曠被鍨�">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑哄簱鍙�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.PreferredPort" placeholder="璇烽�夋嫨鍑哄簱鍙�">
+ <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" v-if="hasPerm('FoamingChuKuOrder:add')" icon="plus" @click="$refs.form.init('add')">鏂板</a-button>
+ <!-- <a-button type="danger" icon="step-backward" :disabled="!selectWithdraws.length" @click="onWithdraw">鎾ゅ洖</a-button> -->
+ <a-button type="danger" icon="step-forward" :disabled="!selectDistributes.length" @click="onMulDistribute">涓嬪彂</a-button>
+ <a-button type="danger" v-if="hasPerm('FoamingChuKuOrder:delete')" icon="delete" :disabled="!selectDels.length" @click="onMulDel">鍒犻櫎</a-button>
+ </template>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a :class="[(hasPerm('FoamingChuKuOrder:edit') && (record.orderStatus===1||record.orderStatus===4))?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+ <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus===2?'':'disabled']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <!-- <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===2?'':'disabled']" @click="onWithdraw(record)" style="margin-right:10px;">鎾ゅ洖</a></a-menu-item> -->
+ <a-menu-item><a :class="[(hasPerm('FoamingChuKuOrder:delete') && (record.orderStatus===1||record.orderStatus===4))?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+
+ <edit-form ref="form" :orderSubclassData="orderSubclassData" :preferredPortList="preferredPortList" @callback="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { FoamingChuKuOrderPage, FoamingChuKuOrderDelete, FoamingChuKuOrderMulDistribute, FoamingChuKuOrderMulWithdraw, FoamingChuKuOrderOutForceComplete } from '@/api/modular/main/FoamingChuKuOrderManage'
+ import { WareOrderTypePage } from '@/api/modular/main/WmsOrderTypeManage'
+ import { WareWarehouseEntranceNonPage } from '@/api/modular/main/WmsWarehouseEntranceManage'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍑哄簱鍗曠被鍨�',
+ align: 'center',
+ dataIndex: 'orderSubclassName'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantityTotal'
+ },
+ {
+ title: '鍑哄簱鍙�',
+ align: 'center',
+ dataIndex: 'exitPortName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '120px',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ this.selectedRowKeys = []
+ this.selectDels = []
+ this.selectDistributes = []
+ this.selectWithdraws = []
+ this.infoId = null
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+ params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.SearchBeginTime
+ delete params.SearchEndTime
+ }
+ return FoamingChuKuOrderPage(Object.assign(parameter, params)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderSubclassData:[],
+ orderStatusData: [],
+ preferredPortList:[],
+ blankingProductionLineList:[],
+ selectedRowKeys: [],
+ selectDels: [],
+ selectDistributes: [],
+ selectWithdraws: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const _options = this.$options
+ this.orderStatusData = _options.filters['dictData']('order_status')
+ this.blankingProductionLineList = _options.filters['dictData']('blanking_production_line')
+ },
+ mounted(){
+ this.getInitSelectOptions()
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ getInitSelectOptions(){
+ Promise.all([
+ WareOrderTypePage(408734100951109),
+ WareWarehouseEntranceNonPage('2')
+ ]).then(response=>{
+ this.orderSubclassData = response[0].data || []
+ this.preferredPortList = response[1].data || []
+ }).catch(()=>{
+
+ })
+ },
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ FoamingChuKuOrderDelete (record) {
+ FoamingChuKuOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onEdit(obj){
+ if (!this.hasPerm('FoamingChuKuOrder:edit')) return false;
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.$refs.form.init('edit',obj)
+ },
+ onDel(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.dealDel([obj.id])
+ },
+ onForceComplete(obj){
+ if (obj.orderStatus!==2) return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleForceComplete(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onDistribute(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.dealDistribute([obj.id])
+ },
+ onWithdraw(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==2) return false
+ this.dealWithdraw([obj.id])
+ },
+ onMulDel(){
+ this.dealDel(this.selectDels)
+ },
+ onMulDistribute(){
+ this.dealDistribute(this.selectDistributes)
+ },
+ onMulWithdraw(){
+ this.dealWithdraw(this.selectWithdraws)
+ },
+ dealDel(ids){
+ if (!this.hasPerm('FoamingChuKuOrder:delete')) return false;
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDelete(ids,(f)=>{
+ if (f) {
+ if (this.infoId && ids.indexOf(this.infoId)>=0) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealDistribute(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDistribute(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealWithdraw(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屾挙鍥炴搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleWithdraw(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleForceComplete(id,callback){
+ this.$loading.show()
+ FoamingChuKuOrderOutForceComplete(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleDelete(id,callback){
+ this.$loading.show()
+ let params = {id}
+ FoamingChuKuOrderDelete(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleDistribute(id,callback){
+ this.$loading.show()
+ FoamingChuKuOrderMulDistribute(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleWithdraw(id,callback){
+ this.$loading.show()
+ FoamingChuKuOrderMulWithdraw(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ let arr1=[],arr2=[],arr3=[]
+ selectedRows.forEach((item)=>{
+ if (item.orderStatus===1) {
+ arr1.push(item.id)
+ }
+ if (item.orderStatus===1 || item.orderStatus===4) {
+ arr2.push(item.id)
+ }
+ if (item.orderStatus===1 || item.orderStatus===2) {
+ arr3.push(item.id)
+ }
+ })
+ this.selectDels = arr1
+ this.selectDistributes = arr2
+ this.selectWithdraws = arr3
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue
new file mode 100644
index 0000000..c138e4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingChuKuOrder/infoBlock.vue
@@ -0,0 +1,122 @@
+<template>
+ <div class="issue-notes-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="specSlots" slot-scope="text,record">
+ {{`${record.long}*${record.wide}*${record.high}`}}
+ </template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { FoamingChuKuOrderDetailPage } from '@/api/modular/main/FoamingChuKuOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'issueNotesInfoBlock',
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鎵规', align:'center', dataIndex: 'batch', key: 'batch' },
+ { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity', width: 100 },
+ { title: '灏哄', align:'center', dataIndex: 'spec', scopedSlots: { customRender: 'specSlots' }, width: 150 },
+ { title: '宸烽亾', align:'center', dataIndex: 'aisle', key: 'aisle', width: 70 },
+ {
+ title: '鍏ュ簱鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.OrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return FoamingChuKuOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.issue-notes-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue
new file mode 100644
index 0000000..ddb6aff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/DetailDrawer.vue
@@ -0,0 +1,170 @@
+<template>
+ <a-drawer
+ title="搴撲綅璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ :width="400"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+ <div class="wms-warehouse-location-view-detail-div">
+ <div class="btns-row">
+ <a-button type="primary" :disabled="locationObj.islock!==0" @click.stop="onUpdateLock">閿佸畾</a-button>
+ <a-button type="primary" :disabled="locationObj.islock===0" @click.stop="onUpdateLock">瑙i攣</a-button>
+ <a-button type="primary" :disabled="!(locationObj.islock!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+ </div>
+ <div class="location-detail-box">
+ <div class="base-info info-box">
+ <p>搴撲綅缂栧彿锛歿{locationObj.placeCode}}</p>
+ <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 start -->
+ <div class="location-materials">
+ <a-card v-for="(item,index) in materialList" :key="'material-item-'+index">
+ <div class="info-box">
+ <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+ <p>鎵规鍙凤細{{item.materialBatch}}</p>
+ <p>鏁伴噺锛歿{item.stockNumber}}</p>
+ </div>
+ </a-card>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 end -->
+ </div>
+ </div>
+ </a-spin>
+ </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/FoamingLocationViewManage'
+export default {
+ name:'wmsWarehouseLocationViewDetailDrawer',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ locationObj:{
+ placestatus:null,
+ islock:null
+ },
+ containercode:'',
+ materialList:[],
+ actionFlag:false
+ }
+ },
+ methods:{
+ onClose(){
+ this.close()
+ },
+ close(){
+ this.$emit('update:visible',false)
+ },
+ afterVisibleChange(visible){
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow(){
+ this.loading = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ })
+ },
+ getLocationDetail(callback){
+ let params = {ID:this.row.id}
+ GetLocationDetail(params).then((d)=>{
+ this.locationObj = d.data.palceDetails || {}
+ this.containercode = d.data.containercode || ''
+ this.materialList = d.data.wmsMaterialStocks || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ afterClsoe(){
+ this.locationObj = {
+ placestatus:null,
+ islock:null
+ }
+ this.containercode = ''
+ this.materialList = []
+ if (this.actionFlag) {
+ this.$emit('callback')
+ }
+ this.actionFlag = false
+ },
+ onUpdateLock(){
+ this.loading = true;
+ let params = {ID:this.row.id}
+ UpdateLock(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ onUpdateEmpty(){
+ this.loading = true;
+ let params = {Id:this.row.id}
+ UpdateEmpty(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-warehouse-location-view-detail-div{
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ &>.btns-row{
+ flex-shrink: 0;
+ padding:12px 16px;
+ .ant-btn + .ant-btn {
+ margin-left: 10px;
+ }
+ }
+ .location-detail-box{
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .info-box{
+ line-height: 1.5;
+ p{
+ margin-bottom: 0;
+ }
+ }
+ .base-info,.location-materials{
+ padding:0 16px;
+ margin-bottom: 16px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue
new file mode 100644
index 0000000..b55b3e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/SearchForm.vue
@@ -0,0 +1,153 @@
+<template>
+ <a-form layout="inline">
+ <a-form-item label="搴撳尯">
+ <a-select v-model="form.Areaid" class="slect-width" @change="onAreaChange">
+ <a-select-option v-for="(item,index) in selectList.areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="宸烽亾">
+ <a-select v-model="form.Aisleid" allowClear class="slect-width" @change="onAisleChange">
+ <a-select-option v-for="(item,index) in selectList.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎺�">
+ <a-select v-model="form.Rowno" allowClear class="slect-width">
+ <a-select-option v-for="(item,index) in selectList.rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item>
+ <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+ </a-form-item>
+ </a-form>
+</template>
+
+<script>
+import { GetArea, GetAisle, GetPalceRowno } from '@/api/modular/main/FoamingLocationViewManage'
+export default {
+ name:'wmsWarehouseLocationViewSearchCompontent',
+ emits:['update:loading','search'],
+ data(){
+ return {
+ loading:{
+ type:Boolean,
+ default:false
+ },
+ form:{
+ Areaid:null,
+ Aisleid:null,
+ Rowno:null
+ },
+ selectList:{
+ areas:[],
+ aisles:[],
+ rows:[]
+ }
+ }
+ },
+ methods:{
+ init(callback){
+ this.getSelectListAreas((f1)=>{
+ if (f1) {
+ callback && callback(true,{...this.form})
+ } else {
+ callback && callback(false)
+ }
+ })
+ },
+ getSelectListAreas(callback){
+ GetArea().then((d)=>{
+ this.selectList.areas = d.data || [];
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ if (this.selectList.areas.length>0) {
+ this.form.Areaid = this.selectList.areas[0].id
+ this.getSelectListAisles(()=>{
+ callback && callback(true)
+ })
+ } else {
+ this.form.Areaid = null
+ this.selectList.aisles = []
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.areas = []
+ this.selectList.aisles = []
+ this.selectList.rows = []
+ this.form.Areaid = null
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ getSelectListAisles(callback){
+ let params = {Areaid:this.form.Areaid}
+ GetAisle(params).then((d)=>{
+ this.selectList.aisles = d.data || [];
+ this.form.Rowno = null
+ if (this.selectList.aisles.length===1) {
+ this.form.Aisleid = this.selectList.aisles[0]
+ this.getSelectListRows(()=>{
+ callback && callback(true)
+ })
+ } else {
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.aisles = []
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ getSelectListRows(callback){
+ let params = {Areaid:this.form.Areaid,Aisleid:this.form.Aisleid}
+ GetPalceRowno(params).then((d)=>{
+ this.selectList.rows = d.data || [];
+ if (this.selectList.rows.length===1) {
+ this.form.Rowno = this.selectList.rows[0]
+ callback && callback(true)
+ } else {
+ this.form.Rowno = null
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.rows = []
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ onAreaChange() {
+ this.$emit('update:loading',true)
+ this.getSelectListAisles(()=>{
+ this.$emit('update:loading',false)
+ })
+ },
+ onAisleChange() {
+ this.$emit('update:loading',true)
+ this.getSelectListRows(()=>{
+ this.$emit('update:loading',false)
+ })
+ },
+ onSearch(){
+ if (!this.form.Areaid) {
+ this.$error({
+ title: '绯荤粺鎻愮ず',
+ content: '璇烽�夋嫨搴撳尯锛�',
+ });
+ return false;
+ }
+ this.$emit('search',{...this.form})
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+ width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue
new file mode 100644
index 0000000..2b152e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingLocationView/index.vue
@@ -0,0 +1,357 @@
+锘�<template>
+ <div class="wms-warehouse-location-view-page">
+ <a-spin :spinning="loading">
+ <div class="top-blcok">
+ <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+ </div>
+ <div class="containter-blcok">
+ <div class="example-tags">
+ <div class="tag">绌洪棽({{countNum.empty}})</div>
+ <div class="tag orange-tag">寰呭叆({{countNum.daiRu}})</div>
+ <div class="tag purple-tag">寰呭嚭({{countNum.daiChu}})</div>
+ <div class="tag primary-tag">瀛樿揣({{countNum.fill}})</div>
+ <div class="tag red-tag">閿佸畾({{countNum.lock}})</div>
+ </div>
+ <!-- 搴撳尯鏄剧ず鍖哄煙 start -->
+ <div class="locations-box">
+
+ <div class="location-items-group-block" v-for="(item1,index1) in list" :key="'location-block-'+index1">
+ <div class="block-title">绗瑊{item1.aisle}}宸烽亾</div>
+
+ <div class="location-items-group">
+ <div class="location-items-row" v-for="(item2,index2) in (item1.wareLocationRownoData || [])" :key="'location-row-'+index2">
+
+ <div class="location-items-layer" v-for="(item3,index3) in (item2.wareLocationLayerData || [])" :key="'location-layer-'+index3">
+ <div class="divider"></div>
+ <div class="location-item" v-for="(item4,index4) in (item3.wareLocationColumnNoData || [])" :key="'location-item-'+index4" :class="[
+ item4?(
+ item4.islock?'red-item':(
+ item4.placeStatus===3?'primary-item':(
+ item4.placeStatus===2?'orange-item':(
+ item4.placeStatus===4?'purple-item':''
+ )
+ )
+ )
+ ):'died-item'
+ ]" @click="openDetail(item4)">
+ {{item4?item4.placeCode:''}}
+ </div>
+ <div class="divider-zero"></div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+
+ </div>
+ <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+ </div>
+
+ <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+ </a-spin>
+ </div>
+</template>
+
+<script>
+ import SearchForm from './SearchForm.vue'
+ import DetailDrawer from './DetailDrawer.vue'
+ import {
+ GetPalceList
+ } from '@/api/modular/main/FoamingLocationViewManage'
+import ItemVue from '@/components/AvatarList/Item.vue'
+ export default {
+ name: 'wmsWarehouseLocationViewPage',
+ components: {
+ SearchForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ detailVisible: false,
+ detailRow: {},
+ loading: false,
+ countNum: {
+ empty: 0,
+ daiRu: 0,
+ daiChu: 0,
+ fill: 0,
+ lock: 0
+ },
+ list: [],
+ searchForm: {}
+ }
+ },
+ methods: {
+ openDetail(obj) {
+ if (!obj) return false
+ this.detailRow = obj
+ this.detailVisible = true;
+ },
+ getList(params, callback) {
+ GetPalceList(params).then((d) => {
+ if (d.data) {
+ this.countNum = {
+ empty: d.data.emptyNum || 0,
+ daiRu: d.data.daiRuNum || 0,
+ daiChu: d.data.daichuNum || 0,
+ fill: d.data.cunhuoNum || 0,
+ lock: d.data.lockNum || 0
+ }
+ this.list = d.data.palceDetails || []
+ } else {
+ this.countNum = {
+ empty: 0,
+ daiRu: 0,
+ daiChu: 0,
+ fill: 0,
+ lock: 0
+ }
+ this.list = []
+ }
+ callback && callback(true)
+ }).catch(() => {
+ callback && callback(false)
+ })
+ },
+ onSearch(valObj) {
+ this.loading = true
+ this.searchForm = valObj
+ this.getList(valObj, () => {
+ this.loading = false
+ })
+ },
+ lockCallback() {
+ this.loading = true
+ this.getList(this.searchForm, () => {
+ this.loading = false
+ })
+ },
+ init() {
+ this.loading = true
+ this.$refs.search.init((f, valObj) => {
+ this.loading = false
+ if (f) {
+ this.searchForm = valObj
+ this.getList(valObj, () => {
+ this.loading = false
+ })
+ } else {
+ this.loading = false
+ }
+ })
+ }
+ },
+ mounted() {
+ this.init()
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+ .wms-warehouse-location-view-page {
+ overflow: hidden;
+ display: flex;
+ overflow: auto;
+ background-color: #fff;
+ border-radius: 10px;
+ flex-direction: column;
+ height: 100%;
+
+ .top-blcok {
+ flex-shrink: 0;
+ padding: 10px 16px 16px 16px;
+ }
+
+ .containter-blcok {
+ flex-grow: 1;
+ height: 1px;
+ display: flex;
+ flex-direction: column;
+ @gray-color: #808080;
+ @danger-color: #ff3333;
+ @primary-color: #ccffff;
+ @orange-color: #ffa500;
+ @purple-color: #800080;
+ @border-color-x: #c0c0c0;
+
+ .example-tags {
+ flex-shrink: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 16px 16px 16px;
+
+ .tag {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 30px;
+ width: 100px;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: default;
+ background-color: @gray-color;
+
+ &+.tag {
+ margin-left: 10px;
+ }
+
+ &.red-tag {
+ background-color: @danger-color;
+ }
+
+ &.primary-tag {
+ background-color: @primary-color;
+ }
+
+ &.orange-tag {
+ background-color: @orange-color;
+ }
+
+ &.purple-tag {
+ background-color: @purple-color;
+ }
+ &.green-tag {
+ background-color: #2cb228 !important;
+ }
+
+ &:not(.primary-tag) {
+ color: #FFFFFF;
+ }
+ }
+ }
+
+
+
+ .locations-box {
+ flex-grow: 1;
+ height: 1px;
+ overflow: auto;
+
+ .location-items-group-block {
+ padding: 0 16px;
+ margin-bottom: 16px;
+ .block-title {
+ padding-bottom: 4px;
+ }
+ &:last-child{
+ margin-bottom: 0;
+ }
+ }
+
+ .location-items-group {
+ @padding-size:8px;
+
+ .location-items-row {
+ margin-bottom: 16px;
+ background-color: #f0f8ff;
+ overflow: auto;
+ padding: @padding-size 0;
+ display: flex;
+ flex-direction: column;
+
+ .location-items-layer{
+ flex-shrink: 0;
+ display: flex;
+ margin-bottom: @padding-size;
+ .divider{
+ width:@padding-size;
+ flex-shrink: 0;
+ }
+ .divider-zero{
+ width:1px;
+ flex-shrink: 0;
+ }
+ .location-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 120px;
+ height: 50px;
+ overflow: hidden;
+ white-space: nowrap;
+ margin-right: @padding-size;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: pointer;
+ flex-shrink: 0;
+ background-color: @gray-color;
+
+ &.active {
+ box-shadow: 0 0 4px #00ff00;
+ }
+
+ &.died-item {
+ background-color: #FFFFFF;
+ background-image: linear-gradient(
+ to top right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ ), linear-gradient(
+ to bottom right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ );
+ cursor: not-allowed;
+ }
+
+ &.red-item {
+ background-color: @danger-color;
+ }
+
+ &.primary-item {
+ background-color: @primary-color;
+ }
+
+ &.orange-item {
+ background-color: @orange-color;
+ }
+
+ &.purple-item {
+ background-color: @purple-color;
+ }
+
+ &:not(.primary-item,.died-item) {
+ color: #FFFFFF;
+ }
+
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+
+ }
+ }
+ }
+ }
+ }
+</style>
+<style lang="less">
+ .wms-warehouse-location-view-page {
+
+ .ant-spin-nested-loading,
+ .ant-spin-container {
+ height: 100%;
+ }
+
+ .ant-spin-container {
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ }
+ }
+
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue
new file mode 100644
index 0000000..eb37999
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingMaterialStock/index.vue
@@ -0,0 +1,219 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('FoamingMaterialStock:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栫爜">
+ <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�鍦ㄥ簱鍖�">
+ <a-select :allowClear="true" style="width: 100%;" v-model="queryParam.areaId" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�">
+ <a-select-option v-for="(item,index) in areaNameData" :key="index" :value="item.id">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏ュ簱鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <!-- <template class="table-operator" slot="operator" v-if="hasPerm('FoamingMaterialStock:add')" >
+ <a-button type="primary" v-if="hasPerm('FoamingMaterialStock:add')" icon="plus" @click="$refs.addForm.add()">鏂板搴撳瓨琛�</a-button>
+ </template> -->
+ <!-- <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('FoamingMaterialStock:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('FoamingMaterialStock:edit') & hasPerm('FoamingMaterialStock:delete')"/>
+ <a-popconfirm v-if="hasPerm('FoamingMaterialStock:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => FoamingMaterialStockDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span> -->
+ <template class="table-operator" slot="operator" v-if="hasPerm('FoamingMaterialStock:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('FoamingMaterialStock:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+ 瀵煎嚭
+ </a-button>
+ </template>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { FoamingMaterialStockPage, FoamingMaterialStockDelete } from '@/api/modular/main/FoamingMaterialStockManage'
+ import { WmsAreaList } from '@/api/modular/main/WmsAreaManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '鐗╂枡瀵嗗害',
+ align: 'center',
+ dataIndex: 'materialDensity'
+ },
+ // {
+ // title: '鐗╂枡鍚嶇О',
+ // align: 'center',
+ // dataIndex: 'materialName'
+ // },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ dataIndex: 'materialSpec'
+ },
+ // {
+ // title: '鎵樼洏缂栫爜',
+ // align: 'center',
+ // dataIndex: 'containerCode'
+ // },
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ dataIndex: 'placeCode'
+ },
+ {
+ title: '鎵�鍦ㄥ簱鍖�',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '搴撳瓨鏁�',
+ align: 'center',
+ dataIndex: 'stockNumber'
+ },
+ {
+ title: '鍏ュ簱鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+ params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.SearchBeginTime
+ delete params.SearchEndTime
+ }
+ return FoamingMaterialStockPage(Object.assign(parameter, params)).then((res) => {
+ return res.data
+ })
+ },
+ areaNameData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('FoamingMaterialStock:edit') || this.hasPerm('FoamingMaterialStock:delete')) {
+ // this.columns.push({
+ // title: '鎿嶄綔',
+ // width: '150px',
+ // dataIndex: 'action',
+ // scopedSlots: { customRender: 'action' }
+ // })
+ }
+ },
+ mounted(){
+ this.WmsAreaLists()
+ },
+ methods: {
+ WmsAreaLists(){
+ WmsAreaList().then((d)=>{
+ this.areaNameData = d.data || []
+ }).catch(()=>{
+
+ })
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ FoamingMaterialStockDelete (record) {
+ FoamingMaterialStockDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue
new file mode 100644
index 0000000..9ca1e17
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/editForm.vue
@@ -0,0 +1,328 @@
+锘�<template>
+ <a-modal
+ :title="title"
+ width="780px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="entry-notes-modal-content">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁缂栧彿涓嶅彲涓虹┖锛�'}]}]">
+ <a-icon slot="addonAfter" @click="refreshOrderNo" type="sync" />
+ </a-input>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鍏ュ簱鍗曠被鍒�">
+ <a-select allow-clear style="width: 100%" placeholder="璇烽�夋嫨鍏ュ簱鍗曠被鍒�" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍏ュ簱鍗曠被鍒紒' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="鍏ュ簱鍙�">
+ <a-select mode="multiple" allow-clear style="width: 100%" placeholder="璇烽�夋嫨鍏ュ簱鍙�" v-decorator="['preferredPortArr', {rules: [{required:true,message:'鍏ュ簱鍙d笉鍙负绌猴紒'}]}]">
+ <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="涓嬫枡浜х嚎">
+ <a-select allow-clear style="width: 100%" placeholder="璇烽�夋嫨涓嬫枡浜х嚎" v-decorator="['blankingProductionLine', {rules: [{required:true,message:'涓嬫枡浜х嚎涓嶅彲涓虹┖锛�'}]}]">
+ <a-select-option v-for="(item,index) in blankingProductionLineList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="鎵规">
+ <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['batch',{rules:[{required:true,message:'鎵规涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鎵规鎬绘暟">
+ <a-input-number allow-clear style="width: 100%" v-decorator="['orderQuantityTotal',{rules:[
+ { required: true, message: '鎵规鎬绘暟涓嶅彲涓虹┖锛�' },
+ { validator: interalNumberValidate }
+ ],validateFirst:true}]" :min="0" placeholder="璇疯緭鍏ユ壒娆℃�绘暟" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-form-item label="娴佹按鍙�">
+ <a-input-number style="width: 100%" allow-clear v-decorator="['serialNo',{rules:[{ validator: interalNumberValidate }]}]" :min="0" placeholder="璇疯緭鍏ユ祦姘村彿" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="瀵嗗害">
+ <a-input placeholder="璇疯緭鍏ュ瘑搴�" allow-clear v-decorator="['materialDensity',{rules:[{required:true,message:'瀵嗗害涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="16">
+ <a-col :span="12">
+ <a-row :gutter="16">
+ <a-col :span="8">
+ <a-form-item label="闀�">
+ <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['long',{rules:[{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="瀹�">
+ <a-select style="width: 100%" allow-clear placeholder="璇烽�夋嫨瀹�" v-decorator="['wide', {rules: [{validator: numberValidate}]}]">
+ <a-select-option v-for="(item,index) in wideOptions" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="楂�">
+ <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['high',{rules:[{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="澶囨敞">
+ <a-input placeholder="璇疯緭鍏ュ娉�" allow-clear :max-length="30" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import { FoamingRuKuOrderAdd,FoamingRuKuOrderEdit,FoamingRuKuOrderGetNo, FoamingRuKuOrderGetMaterialWide } from '@/api/modular/main/FoamingRuKuOrderManage'
+ export default {
+ emits:['callback'],
+ props:{
+ orderSubclassData:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ preferredPortList:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ id:null,
+ type:'',
+ labelCol: {
+ span:24
+ },
+ wrapperCol: {
+ span:24
+ },
+ visible: false,
+ confirmLoading: false,
+ title:'',
+ blankingProductionLineList:[],
+ form: this.$form.createForm(this),
+ wideOptions:[]
+ }
+ },
+ created(){
+ this.blankingProductionLineList = this.$options.filters['dictData']('blanking_production_line')
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (type,record) {
+ this.type = type;
+ this.visible = true
+ let _initForm = {}
+ if (type==='add'){
+ this.title="鏂板鍏ュ簱鍗�"
+ _initForm.blankingProductionLine = '1'
+ _initForm.orderSubclass = 408737870467141
+ this.$loading.show()
+ this.getOrderNo((f,str)=>{
+ if (f) {
+ _initForm.orderNo = str
+ }
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ this.getWideOptions(()=>{
+ this.$loading.hide()
+ },false)
+ },false)
+ } else {
+ this.title="缂栬緫鍏ュ簱鍗�"
+ _initForm.orderNo = record.orderNo
+ _initForm.orderSubclass = record.orderSubclass
+ if (record.preferredPort) {
+ _initForm.preferredPortArr = record.preferredPort.split(',')
+ } else {
+ _initForm.preferredPortArr = []
+ }
+ _initForm.batch = record.batch
+ _initForm.orderQuantityTotal = record.orderQuantityTotal
+ _initForm.materialDensity = record.materialDensity
+ _initForm.blankingProductionLine = String(record.blankingProductionLine)
+ _initForm.long = record.long
+ _initForm.wide = record.wide
+ _initForm.high = record.high
+ _initForm.serialNo = record.serialNo
+ _initForm.remarks = record.remarks
+ this.id = record.id
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ this.getWideOptions()
+ }
+ },
+ getOrderNo(callback,needLoading=true){
+ if (needLoading) {
+ this.$loading.show()
+ }
+ FoamingRuKuOrderGetNo().then((d)=>{
+ callback(true,d.data)
+ if (needLoading) {
+ this.$loading.hide()
+ }
+ }).catch(()=>{
+ callback(false)
+ if (needLoading) {
+ this.$loading.hide()
+ }
+ })
+ },
+ getWideOptions(callback,needLoading=true){
+ if (this.wideOptions.length>0) {
+ callback && callback(true)
+ } else {
+ if (needLoading) {
+ this.$loading.show()
+ }
+ FoamingRuKuOrderGetMaterialWide().then((d)=>{
+ this.wideOptions = d.data || []
+ callback && callback(true)
+ if (needLoading) {
+ this.$loading.hide()
+ }
+ }).catch(()=>{
+ callback && callback(false)
+ if (needLoading) {
+ this.$loading.hide()
+ }
+ })
+ }
+ },
+ interalNumberValidate(rule, value, callback){
+ if (value<=0){
+ callback('蹇呴』澶т簬0');
+ } else if (Number(value)!==parseInt(value)) {
+ callback('鍙兘鏄暣鏁�');
+ } else {
+ callback();
+ }
+ },
+ numberValidate(rule, value, callback){
+ if (value<=0){
+ callback('蹇呴』澶т簬0');
+ } else {
+ callback();
+ }
+ },
+ refreshOrderNo(){
+ if (this.type==='edit') return false;
+ this.getOrderNo((f,str)=>{
+ if (f) {
+ let _initForm = {orderNo:str}
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ }
+ })
+ },
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.$loading.show()
+ this.handleSubmitAjax({...values},(f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ this.$emit('callback')
+ }
+ })
+ }
+ })
+ },
+ handleSubmitAjax (params,callback){
+ if (this.$getObjectType(params.preferredPortArr)==='array') {
+ params.preferredPort = params.preferredPortArr.join(',')
+ }
+ delete params.preferredPortArr
+ if (this.type==='add') {
+ this.handleAddAjax(params,callback)
+ } else {
+ this.handleEditAjax(params,callback)
+ }
+ },
+ handleAddAjax(params,callback){
+ let _params = {...params}
+ FoamingRuKuOrderAdd(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleEditAjax(params,callback){
+ let _params = {...params}
+ _params.id = this.id;
+ FoamingRuKuOrderEdit(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.entry-notes-modal-content{
+ padding: 20px 16px 0 16px;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue
new file mode 100644
index 0000000..156d333
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/entranceSelectModal.vue
@@ -0,0 +1,98 @@
+<template>
+ <a-modal
+ title="閫夋嫨鍏ュ簱鍙�"
+ width="300px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel"
+ >
+ <div class="shk-in-entrance-select-modal">
+ <a-select style="width: 100%" v-model="entranceCode" placeholder="璇烽�夋嫨鍏ュ簱鍙�">
+ <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </div>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button type="primary" key="ok" :disabled="!entranceCode" @click="onConfirm">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { FoamingRuKuOrderExecuteTask } from '@/api/modular/main/FoamingRuKuOrderManage'
+export default {
+ name:'shkInEntranceSelectModal',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ preferredPortList:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ did:{
+ type:[Number,null],
+ default:null
+ }
+ },
+ data(){
+ return {
+ entranceCode:undefined
+ }
+ },
+ watch:{
+ visible:{
+ immediate:true,
+ handler(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ this.handleClose()
+ }
+ }
+ }
+ },
+ created(){
+
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ if (this.visible) {
+
+ }
+ },
+ handleClose(){
+ if (!this.visible) {
+ this.entranceCode = undefined
+ }
+ },
+ onConfirm(){
+ this.$loading.show()
+ let params = {
+ id:this.did,
+ entranceCode:this.entranceCode
+ }
+ FoamingRuKuOrderExecuteTask(params).then(()=>{
+ this.$loading.hide()
+ this.$message.success('鎿嶄綔鎴愬姛');
+ this.$emit('callback')
+ this.handleCancel()
+ }).catch(()=>{
+ this.$loading.hide()
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-entrance-select-modal{
+ padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue
new file mode 100644
index 0000000..e3b665e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/index.vue
@@ -0,0 +1,488 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('FoamingRuKuOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规">
+ <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏ュ簱鍗曠被鍨�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.OrderSubclass" placeholder="璇烽�夋嫨鍏ュ簱鍗曠被鍨�">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓嬫枡浜х嚎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.BlankingProductionLine" placeholder="璇烽�夋嫨涓嬫枡浜х嚎">
+ <a-select-option v-for="(item,index) in blankingProductionLineList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏ュ簱鍙�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.PreferredPort" placeholder="璇烽�夋嫨鍏ュ簱鍙�">
+ <a-select-option v-for="(item,index) in preferredPortList" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('fp_rk_action')">
+ <a-button type="primary" icon="plus" @click="$refs.form.init('add')">鏂板</a-button>
+ <a-button type="danger" icon="step-forward" :disabled="!selectDistributes.length" @click="onMulDistribute">涓嬪彂</a-button>
+ <a-button type="danger" icon="delete" :disabled="!selectDels.length" @click="onMulDel">鍒犻櫎</a-button>
+ </template>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskModelscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#90ee90':(text===2?'#1e90ff':(text===3?'#00ffff':'gray'))">{{ 'task_model' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="blankingProductionLineSlots" slot-scope="text">
+ {{ 'blanking_production_line' | dictType(text) }}
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+ <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus===2?'':'disabled']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus===2||record.orderStatus===3?'':'disabled']" style="margin-right:10px;" @click="onOpenNumberChangeModal(record)">澧炶ˉ鏁伴噺</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <!-- <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===2?'':'disabled']" @click="onWithdraw(record)" style="margin-right:10px;">鎾ゅ洖</a></a-menu-item> -->
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" :preferredPortList="preferredPortList" />
+ <type-select-modal :visible.sync="typeVisible" @callback="distributeConfirmCallback" />
+ <number-change-modal :visible.sync="numberVisible" :obj="numberRow" @callback="numberChangeCallback" />
+ <edit-form ref="form" :orderSubclassData="orderSubclassData" :preferredPortList="preferredPortList" @callback="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ FoamingRuKuOrderPage,
+ FoamingRuKuOrderDelete,
+ FoamingRuKuOrderMulDistribute,
+ FoamingRuKuOrderMulWithdraw ,
+ FoamingRuKuOrderForceComplete
+ } from '@/api/modular/main/FoamingRuKuOrderManage'
+ import { WareOrderTypePage } from '@/api/modular/main/WmsOrderTypeManage'
+ import { WareWarehouseEntranceNonPage } from '@/api/modular/main/WmsWarehouseEntranceManage'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ import typeSelectModal from './typeSelectModal.vue'
+ import numberChangeModal from './numberChangeModal.vue'
+ export default {
+ components: {
+ STable,
+ editForm,
+ infoBlock,
+ typeSelectModal,
+ numberChangeModal
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍏ュ簱鍗曠被鍨�',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'orderSubclassName'
+ },
+ {
+ title: '鍏ュ簱鏂瑰紡',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'orderDistributeType',
+ scopedSlots: { customRender: 'taskModelscopedSlots' }
+ },
+ {
+ title: '鎵规',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'batch'
+ },
+ {
+ title: '瀵嗗害',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'materialDensity'
+ },
+ {
+ title: '涓嬫枡浜х嚎',
+ align: 'center',
+ //sorter: true,
+ dataIndex: 'blankingProductionLine',
+ scopedSlots: { customRender: 'blankingProductionLineSlots' }
+ },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ //sorter: true,
+ dataIndex: 'orderQuantityTotal'
+ },
+ {
+ title: '鍏ュ簱鍙�',
+ align: 'center',
+ dataIndex: 'preferredPortName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'remarks'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ this.selectedRowKeys = []
+ this.selectDels = []
+ this.selectDistributes = []
+ this.selectWithdraws = []
+ this.infoId = null
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+ params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.SearchBeginTime
+ delete params.SearchEndTime
+ }
+ return FoamingRuKuOrderPage(Object.assign(parameter, params)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderSubclassData:[],
+ orderStatusData: [],
+ preferredPortList:[],
+ blankingProductionLineList:[],
+ selectedRowKeys: [],
+ selectDels: [],
+ selectDistributes: [],
+ selectWithdraws: [],
+ infoId:null,
+ infoOrderNo:'',
+ typeVisible:false,
+ confirmDistributes:[],
+ numberVisible:false,
+ numberRow:{}
+ }
+ },
+ created () {
+ const _options = this.$options
+ this.orderStatusData = _options.filters['dictData']('order_status')
+ this.blankingProductionLineList = _options.filters['dictData']('blanking_production_line')
+ if (this.hasPerm('fp_rk_action')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '120px',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+ mounted(){
+ this.getInitSelectOptions()
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ getInitSelectOptions(){
+ Promise.all([
+ WareOrderTypePage(408733612789829),
+ WareWarehouseEntranceNonPage('1')
+ ]).then(response=>{
+ this.orderSubclassData = response[0].data || []
+ this.preferredPortList = response[1].data || []
+ }).catch(()=>{
+
+ })
+ },
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ FoamingRuKuOrderDelete (record) {
+ FoamingRuKuOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onEdit(obj){
+ if (!this.hasPerm('FoamingRuKuOrder:edit')) return false;
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.$refs.form.init('edit',obj)
+ //abc
+ },
+ onDel(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.dealDel([obj.id])
+ },
+ onForceComplete(obj){
+ if (obj.orderStatus!==2) return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleForceComplete(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onOpenNumberChangeModal(obj){
+ if (obj.orderStatus!==2 && obj.orderStatus!==3) return false
+ this.numberVisible = true
+ this.numberRow = obj
+ },
+ numberChangeCallback(){
+ this.$refs.table.refresh()
+ },
+ onDistribute(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==4) return false
+ this.dealDistribute([obj.id])
+ },
+ onWithdraw(obj){
+ if (obj.orderStatus!==1 && obj.orderStatus!==2) return false
+ this.dealWithdraw([obj.id])
+ },
+ onMulDel(){
+ this.dealDel(this.selectDels)
+ },
+ onMulDistribute(){
+ this.dealDistribute(this.selectDistributes)
+ },
+ onMulWithdraw(){
+ this.dealWithdraw(this.selectWithdraws)
+ },
+ dealDel(ids){
+ if (!this.hasPerm('FoamingRuKuOrder:delete')) return false;
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDelete(ids,(f)=>{
+ if (f) {
+ if (this.infoId && ids.indexOf(this.infoId)>=0) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealDistribute(ids){
+ this.confirmDistributes = ids
+ this.typeVisible = true
+ },
+ distributeConfirmCallback(val){
+ let params = {id:this.confirmDistributes,orderDistributeType:val}
+ this.handleDistribute(params,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ },
+ dealWithdraw(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屾挙鍥炴搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleWithdraw(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleForceComplete(id,callback){
+ this.$loading.show()
+ FoamingRuKuOrderForceComplete(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleDelete(id,callback){
+ this.$loading.show()
+ let params = {id}
+ FoamingRuKuOrderDelete(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleDistribute(params,callback){
+ this.$loading.show()
+ FoamingRuKuOrderMulDistribute(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleWithdraw(id,callback){
+ this.$loading.show()
+ FoamingRuKuOrderMulWithdraw(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ let arr1=[],arr2=[],arr3=[]
+ selectedRows.forEach((item)=>{
+ if (item.orderStatus===1 || item.orderStatus===4) {
+ arr2.push(item.id)
+ arr1.push(item.id)
+ }
+ if (item.orderStatus===1 || item.orderStatus===2) {
+ arr3.push(item.id)
+ }
+ })
+ this.selectDels = arr1
+ this.selectDistributes = arr2
+ this.selectWithdraws = arr3
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue
new file mode 100644
index 0000000..c16b574
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/infoBlock.vue
@@ -0,0 +1,173 @@
+<template>
+ <div class="entry-notes-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="specSlots" slot-scope="text,record">
+ {{`${record.long}*${record.wide}*${record.high}`}}
+ </template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ <template slot="action" slot-scope="text,record">
+ <a @click="onOpenEntrance(record.id)">鍏ュ簱</a>
+ <a style="margin-left:10px;" :class="[record.isCancel!==1?'disabled':'']" @click="onCancel(record)">鍙栨秷</a>
+ </template>
+ </s-table>
+
+ <entrance-select-modal :visible.sync="entranceVisible" :preferredPortList="preferredPortList" :did="entraceId" @callback="actionBack" />
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { FoamingRuKuOrderDetailPage, FoamingRuKuDetailCancel } from '@/api/modular/main/FoamingRuKuOrderManage'
+import entranceSelectModal from './entranceSelectModal.vue'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'entryNotesInfoBlock',
+ components:{STable,entranceSelectModal},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ },
+ preferredPortList:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鎵规', align:'center', dataIndex: 'batch', key: 'batch' },
+ { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity', width: 80 },
+ { title: '灏哄', align:'center', dataIndex: 'spec', scopedSlots: { customRender: 'specSlots' }, width: 150 },
+ { title: '鍏ュ簱鍙�', align:'center', dataIndex: 'preferredPort', key: 'preferredPort' },
+ { title: '浠诲姟鐘舵��', align:'center', dataIndex: 'taskStatusName', scopedSlots: { customRender: 'statusSlots' }, width: 150 }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ entranceVisible:false,
+ entraceId:null
+ }
+ },
+ created(){
+ if (this.hasPerm('fp_rk_action')) {
+ this.columns.push({ title: '鎿嶄綔', align: 'center', dataIndex: 'action', scopedSlots: { customRender: 'action' }, width: 105 })
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.OrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return FoamingRuKuOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ onOpenEntrance(id){
+ this.entraceId = id
+ this.entranceVisible = true
+ },
+ actionBack(){
+ this.$refs.table.refresh()
+ },
+ onCancel(obj){
+ if (obj.isCancel!==1) return false
+ this.dealCancel(obj.id)
+ },
+ dealCancel(id){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleCancel(id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleCancel(id,callback){
+ this.$loading.show()
+ FoamingRuKuDetailCancel(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.entry-notes-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue
new file mode 100644
index 0000000..101c589
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/numberChangeModal.vue
@@ -0,0 +1,88 @@
+<template>
+ <a-modal
+ title="澧炶ˉ鏁伴噺"
+ width="220px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel"
+ >
+ <div class="shk-in-number-change-modal">
+ <a-input-number style="width:100%;" v-model="qty" :min="0" />
+ </div>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button type="primary" key="ok" :disabled="!qty" @click="onConfirm">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { FoamingRuKuOrderAddOrderDetails } from '@/api/modular/main/FoamingRuKuOrderManage'
+export default {
+ name:'shkInNumberChangeModal',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ obj:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ qty:0
+ }
+ },
+ watch:{
+ visible:{
+ immediate:true,
+ handler(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ }
+ }
+ }
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ this.qty = 0
+ },
+ onConfirm(){
+ this.$loading.show()
+ this.handleUpdateAjax((f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ this.$emit('callback')
+ }
+ })
+ },
+ handleUpdateAjax(callback){
+ let _params = {
+ id:this.obj.id,
+ qty:this.qty
+ }
+ FoamingRuKuOrderAddOrderDetails(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-number-change-modal{
+ padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue
new file mode 100644
index 0000000..5968ccc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingRuKuOrder/typeSelectModal.vue
@@ -0,0 +1,82 @@
+<template>
+ <a-modal
+ title="閫夋嫨鍏ュ簱鏂瑰紡"
+ width="300px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel"
+ >
+ <div class="shk-in-type-select-modal">
+ <a-radio-group v-model="radioValue" :options="radioOptions" />
+ </div>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+export default {
+ name:'shkInTypeSelectModal',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ radioOptions:[],
+ radioValue:'2'
+ }
+ },
+ watch:{
+ visible:{
+ immediate:true,
+ handler(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ this.handleClose()
+ }
+ }
+ }
+ },
+ created(){
+ if (!this.radioOptions.length) {
+ this.radioOptions = this.$options.filters['dictData']('task_model').map((item)=>{
+ let obj = {}
+ obj.value = item.code
+ obj.label = item.name
+ return obj
+ })
+ }
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ if (this.visible) {
+
+ }
+ },
+ handleClose(){
+ if (!this.visible) {
+ this.radioValue = '2'
+ }
+ },
+ onConfirm(){
+ this.$emit('callback',this.radioValue)
+ this.handleCancel()
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-in-type-select-modal{
+ padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue
new file mode 100644
index 0000000..63d877d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/editLevelModal.vue
@@ -0,0 +1,90 @@
+<template>
+ <a-modal
+ title="浼樺厛绾т慨鏀�"
+ width="300px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel"
+ >
+ <div class="shk-task-level-edit-modal">
+ <a-select v-model="taskLevel" placeholder="璇烽�夋嫨..." style="width:100%;">
+ <a-select-option v-for="index of 10" :key="index" :value="index">{{index}}</a-select-option>
+ </a-select>
+ </div>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { FoamingTaskLevelUpdate } from '@/api/modular/main/FoamingTaskManage'
+export default {
+ name:'shkTaskLevelEditModal',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ obj:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ taskLevel:1
+ }
+ },
+ watch:{
+ visible:{
+ immediate:true,
+ handler(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ }
+ }
+ }
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ this.taskLevel = this.obj.taskLevel
+ },
+ onConfirm(){
+ this.$loading.show()
+ this.handleUpdateAjax((f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ this.$emit('callback')
+ }
+ })
+ },
+ handleUpdateAjax(callback){
+ let _params = {
+ id:this.obj.id,
+ taskLevel:this.taskLevel
+ }
+ FoamingTaskLevelUpdate(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.shk-task-level-edit-modal{
+ padding: 8px 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue
new file mode 100644
index 0000000..126542d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/FoamingTask/index.vue
@@ -0,0 +1,528 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('FoamingTask:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规">
+ <a-input v-model="queryParam.batch" allow-clear placeholder="璇疯緭鍏ユ壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸烽亾">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨宸烽亾" allow-clear v-model="queryParam.Aisle">
+ <a-select-option v-for="(item,index) in aislesOptions" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.MaterialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.MaterialDensity" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鍙�">
+ <a-input v-model="queryParam.taskNo" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskModel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+ <a-select-option v-for="(item,index) in taskModelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskType" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+ <a-select-option v-for="(item,index) in taskTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskStatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+ <a-select-option v-for="(item,index) in taskStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璧峰鐐�">
+ <a-input v-model="queryParam.SourcePlace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬬偣"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣鐐�">
+ <a-input v-model="queryParam.ToPlace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囩偣"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator">
+ <a-button type="danger" icon="close-circle" :disabled="!selectedCancels.length" @click="">鍙栨秷</a-button>
+ <a-button type="danger" icon="pause" :disabled="!selectedPauses.length" @click="">鏆傚仠</a-button>
+ <a-button type="danger" icon="double-right" :disabled="!selectedContinuess.length" @click="">缁х画</a-button>
+ </template>
+ <span slot="taskModelscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#ffd700':(text===3?'#00ced1':(text===2?'#1e90ff':'gray'))">{{ 'task_model' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskTypescopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#008000':(text===3?'#ffd700':(text===3?'#1e90ff':'gray'))">{{ 'task_type' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===3?'#008000':(
+ text===2?'#1e90ff':(
+ text===4?'#556b2f':(
+ text===5?'#8b0000':(
+ text===6?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{ 'task_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="isReadscopedSlots" slot-scope="text">
+ {{ 'yes_or_no' | dictType(text) }}
+ </span>
+ <span slot="taskDodeviceStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===6?'#008000':(
+ text===5?'#ff00ff':(
+ text===2?'#00ced1':(
+ text===3?'#1e90ff':(
+ text===4?'#0000cd':'gray'
+ )
+ )
+ )
+ )">{{ 'task_dodevice_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <!-- <a :class="[(record.taskStatus===3||record.taskStatus===4||record.taskStatus===5||record.taskStatus===6)?'disabled':'']" style="margin-right:10px;" @click="onForceComplete(record)">瀹屾垚</a> -->
+ <a :class="[record.taskStatus===1?'':'disabled']" @click="onUpLevel(record)" style="margin-right:10px;"><a-icon type="arrow-up" /></a>
+ <a :class="[record.taskStatus===1?'':'disabled']" @click="onDownLevel(record)" style="margin-right:10px;"><a-icon type="arrow-down" /></a>
+ <!-- <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.taskStatus===1?'':'disabled']" @click="onCancel(record)">鍙栨秷</a></a-menu-item>
+ <a-menu-item><a :class="[record.taskStatus===1?'':'disabled']" @click="onPause(record)">鏆傚仠</a></a-menu-item>
+ <a-menu-item><a :class="[record.taskStatus===5?'':'disabled']" @click="onContinue(record)">缁х画</a></a-menu-item>
+ </a-menu>
+ </a-dropdown> -->
+ </span>
+ </s-table>
+ </a-card>
+
+ <!-- <edit-level-modal :visible.sync="levelVisible" :obj="levelObj" @callback="onLevelConfirm" /> -->
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ FoamingTaskPage,
+ FoamingTaskForceComplete,
+ FoamingTaskCancel,
+ FoamingTaskPause,
+ FoamingTaskContinue ,
+ FoamingTaskUpLevel,
+ FoamingTaskDownLevel
+ } from '@/api/modular/main/FoamingTaskManage'
+ import { WmsPlaceGetFAisles } from '@/api/modular/main/WmsPlaceManage'
+ //import editLevelModal from './editLevelModal.vue'
+ export default {
+ components: {
+ STable,
+ //editLevelModal
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '浠诲姟鍙�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskNo'
+ },
+ {
+ title: '浠诲姟鏂瑰紡',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'taskModel',
+ scopedSlots: { customRender: 'taskModelscopedSlots' }
+ },
+ {
+ title: '浠诲姟绫诲瀷',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'taskType',
+ scopedSlots: { customRender: 'taskTypescopedSlots' }
+ },
+ {
+ title: '浠诲姟鐘舵��',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'taskStatus',
+ scopedSlots: { customRender: 'taskStatusscopedSlots' }
+ },
+ {
+ title: '浠诲姟浼樺厛绾�',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'taskLevel'
+ },
+ {
+ title: '宸烽亾',
+ align: 'center',
+ dataIndex: 'aisle'
+ },
+ {
+ title: '璧峰鐐�',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'sourcePlace'
+ },
+ {
+ title: '鐩爣鐐�',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'toPlace'
+ },
+ {
+ title: '浠诲姟璁惧鐘舵��',
+ align: 'center',
+ dataIndex: 'taskDodeviceStatus',
+ scopedSlots: { customRender: 'taskDodeviceStatusscopedSlots' }
+ },
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ // sorter: true,
+ dataIndex: 'materialSpec'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '70px',
+ dataIndex: 'action',
+ fixed:'right',
+ align: 'center',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.SearchBeginTime = params.dateRange[0] + ' 00:00:00'
+ params.SearchEndTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.SearchBeginTime
+ delete params.SearchEndTime
+ }
+ return FoamingTaskPage(Object.assign(parameter, params)).then((res) => {
+ return res.data
+ })
+ },
+ taskModelData: [],
+ taskTypeData: [],
+ taskStatusData: [],
+ isReadData: [],
+ areaNameData: [],
+ taskDodeviceStatusData: [],
+ aislesOptions:[],
+ selectedRowKeys: [],
+ selectedCancels: [],
+ selectedPauses: [],
+ selectedContinuess: [],
+ levelVisible:false,
+ levelObj:{}
+ }
+ },
+ created () {
+ const $options = this.$options
+ this.taskModelData = $options.filters['dictData']('task_model')
+ this.taskTypeData = $options.filters['dictData']('task_type')
+ this.taskStatusData = $options.filters['dictData']('task_status')
+ this.isReadData = $options.filters['dictData']('yes_or_no')
+ this.taskDodeviceStatusData = $options.filters['dictData']('task_dodevice_status')
+ /* console.log(this.taskDodeviceStatusData.map((item)=>{
+ return [item.code,item.name]
+ })) */
+ },
+ mounted(){
+ this.getAislesSelectOptions()
+ },
+ methods: {
+ getAislesSelectOptions(){
+ WmsPlaceGetFAisles().then((d)=>{
+ this.aislesOptions = d.data || []
+ }).catch(()=>{})
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ /* openLevelModal(obj){
+ if (obj.taskStatus!==1) return false
+ this.levelObj = obj
+ this.levelVisible = true
+ },
+ onLevelConfirm(){
+ this.$refs.table.refresh()
+ }, */
+ onMulCancel(){
+ this.dealCancel(this.selectedCancels)
+ },
+ onMulPause(){
+ this.dealPause(this.selectedPauses)
+ },
+ onMulContinue(){
+ this.dealContinue(this.selectedContinuess)
+ },
+ onForceComplete(obj){
+ if (obj.taskStatus===3||obj.taskStatus===4||obj.taskStatus===5) return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleForceComplete(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onUpLevel(obj){
+ if (obj.taskStatus!==1) return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屼紭鍏堢骇璋冩暣鍚楋紵',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleUpLevel(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onDownLevel(obj){
+ if (obj.taskStatus!==1) return false
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屼紭鍏堢骇璋冩暣鍚楋紵',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDownLevel(obj.id,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ onCancel(obj){
+ if (obj.taskStatus!==1) return false
+ this.dealCancel([obj.id])
+ },
+ onPause(obj){
+ if (obj.taskStatus!==1) return false
+ this.dealPause([obj.id])
+ },
+ onContinue(obj){
+ if (obj.taskStatus!==5) return false
+ this.dealContinue([obj.id])
+ },
+ dealCancel(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleCancel(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealPause(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屾殏鍋滄搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handlePause(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealContinue(ids){
+ this.$confirm({
+ title: '纭畾瑕佺户缁换鍔″悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleContinue(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleForceComplete(id,callback){
+ this.$loading.show()
+ FoamingTaskForceComplete(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleUpLevel(id,callback){
+ this.$loading.show()
+ FoamingTaskUpLevel(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleDownLevel(id,callback){
+ this.$loading.show()
+ FoamingTaskDownLevel(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleCancel(id,callback){
+ this.$loading.show()
+ FoamingTaskCancel(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handlePause(id,callback){
+ this.$loading.show()
+ FoamingTaskPause(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleContinue(id,callback){
+ this.$loading.show()
+ FoamingTaskContinue(id).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ onSelectChange (selectedRowKeys, selectedRows){
+ this.selectedRowKeys = selectedRowKeys
+ let arr1=[],arr2=[],arr3=[]
+ selectedRows.forEach((item)=>{
+ if (item.taskStatus===1) {
+ arr1.push(item.id)
+ arr2.push(item.id)
+ }
+ if (item.taskStatus===5) {
+ arr3.push(item.id)
+ }
+ })
+ this.selectedCancels = arr1
+ this.selectedPauses = arr2
+ this.selectedContinuess = arr3
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue
new file mode 100644
index 0000000..a20c586
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/addForm.vue
@@ -0,0 +1,311 @@
+锘�<template>
+ <a-modal
+ :title="(type==='modify'?'淇敼':'鏂板')+'鐩樼偣璁″垝'"
+ width="90vw"
+ dialogClass="zero-modal"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="inventory-plan-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['planNo',{rules:[{required:true,message:'璁″垝鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐩樼偣瑙勫垯" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select :allowClear="true" style="width: 100%" v-decorator="['inventoryRuleId',{rules:[{required:true,message:'璇烽�夋嫨鐩樼偣瑙勫垯锛�'}]}]" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in ruleOptions" :key="index" :value="item.id">
+ {{ item.label }}
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐩樼偣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-decorator="['areaID',{rules:[{required:true,message:'璇烽�夋嫨鐩樼偣浠撳簱锛�'}]}]" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in areaOptions" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐩樼偣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-range-picker style="width: 100%" v-decorator="['dateRange',{rules:[{required:true,message:'璇风‘璁ょ洏鐐规椂闂达紒'}]}]" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" @click="openChoose">
+ 娣诲姞璁″垝鏄庣粏
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <template v-if="th">
+ <a-table v-if="type==='modify'" :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ <a-table v-else :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </template>
+
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ InventoryPlanAdd,
+ GetBillNumber,
+ InventoryPlanEdit,
+ InventoryPlanDetailPage
+ } from '@/api/modular/main/InventoryPlanManage'
+ import ChooseModal from './chooseMaterials.vue'
+ import moment from 'moment'
+ export default {
+ components:{ChooseModal},
+ props:{
+ type:{
+ type:String,
+ default:''
+ },
+ areaOptions:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ ruleOptions:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ th:0,
+ tableKey:'containerCode',
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', scopedSlots: { customRender: 'action' }}
+ ],
+ chooseVisible:false,
+ planid:null
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ if (this.type==='modify') {
+ this.getEditInitData(record)
+ } else {
+ this.getAddInitData()
+ }
+ });
+ },
+ getAddInitData(){
+ this.confirmLoading = true;
+ GetBillNumber().then(d=>{
+ let formData = {
+ planNo:(d.data || '')
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = false;
+ }).catch((err)=>{
+ this.confirmLoading = false;
+ })
+ },
+ getEditInitData(record){
+ let formData = {
+ planNo:record.planNo,
+ inventoryRuleId:record.inventoryRuleId,
+ areaID:String(record.areaID)
+ }
+ if (record.startPlanTime) {
+ record.startPlanTime = moment(record.startPlanTime).format('YYYY-MM-DD')
+ }
+ if (record.endPlanTime) {
+ record.endPlanTime = moment(record.endPlanTime).format('YYYY-MM-DD')
+ }
+ if (record.startPlanTime && record.endPlanTime) {
+ formData.dateRange = [record.startPlanTime,record.endPlanTime]
+ } else {
+ formData.dateRange = []
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = true;
+ let params = {
+ Id:record.id,
+ PageNo:1,
+ PageSize:999
+ }
+ this.planid = record.id
+ InventoryPlanDetailPage(params).then((d)=>{
+ this.list = d.data.rows || []
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ let _obj = {...item}
+ _obj.orderQuantity = 0
+ _obj.requireTime = ''
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(newArr,this.list)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ openChoose(){
+ this.chooseVisible = true
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ onSubmit () {
+ const { form: { validateFields } } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ this.handleSubmit(values,(fx)=>{
+ if (fx) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ }
+ })
+ },
+ handleSubmit(values,callback){
+ this.confirmLoading = true
+ let params = {...values}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.startPlanTime = params.dateRange[0] + ' 00:00:00'
+ params.endPlanTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.startPlanTime
+ delete params.endPlanTime
+ }
+ if (this.type==='modify') {
+ this.handleSubmitModify(params,callback)
+ } else {
+ this.handleSubmitAdd(params,callback)
+ }
+ },
+ handleSubmitAdd(values,callback){
+ let params = {...values,...{inventoryPlanModel:this.list}}
+ InventoryPlanAdd(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleSubmitModify(values,callback){
+ let params = {...values,...{inventoryPlanModel:this.list,id:this.planid}}
+ InventoryPlanEdit(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.list = []
+ this.planid = null
+ this.visible = false
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue
new file mode 100644
index 0000000..59f3846
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/chooseMaterials.vue
@@ -0,0 +1,330 @@
+<template>
+ <a-modal
+ title="鐩樼偣璁″垝鏄庣粏閫夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="inventory-plan-choose-modal-content">
+ <div class="choose-bar">
+ <div class="choose-form-view">
+ <a-form layout="inline">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialCode" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+ <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹瑰櫒缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.ContainerCode" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.PlaceCode" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="choose-btns-view">
+ <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+ <a-button @click.stop="onReset">閲嶇疆</a-button>
+ </div>
+ </div>
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { GetCouldOuts } from '@/api/modular/main/InventoryPlanManage'
+const defaultQuery = {
+ MaterialType:undefined,
+ ContainerCode:'',
+ MaterialCode:'',
+ MaterialName:'',
+ PlaceCode:''
+}
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ types:[],
+ query:{...defaultQuery},
+ queried:{...pagination},
+ tableKey:'containerCode',
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ this.types = this.$options.filters['dictData']('material_type')
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.resetQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.queried = {...pagination}
+ },
+ onQuery(){
+ this.newQuery()
+ },
+ onReset(){
+ this.resetQuery()
+ },
+ resetQuery(){
+ this.query = {...defaultQuery}
+ this.newQuery()
+ },
+ newQuery(){
+ this.queried = {...this.query,...pagination}
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ GetCouldOuts(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i][this.tableKey] === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ arr.push(item[this.tableKey])
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-choose-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .choose-bar{
+ flex-shrink: 0;
+ padding: 8px 4px;
+ display: flex;
+ .choose-form-view{
+ flex-grow: 1;
+ }
+ .choose-btns-view{
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+ }
+ .table-box{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+ .ant-form-inline{
+ .ant-form-item {
+ margin-right: 0;
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue
new file mode 100644
index 0000000..14b2711
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/index.vue
@@ -0,0 +1,275 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.StatusEnum" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in selectOptions.statues" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣瑙勫垯">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+ <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+ {{ item.label }}
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣浠撳簱">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+ <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="onNew">鏂板鐩樼偣璁″垝</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="planStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'task_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="onEdit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => InventoryPlanDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" :type="formType" :area-options="selectOptions.areas" :rule-options="selectOptions.rules" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import {
+ InventoryPlanPage,
+ InventoryPlanDelete,
+ InventoryPlanGetAreas,
+ InventoryPlanGetCheckRules
+ } from '@/api/modular/main/InventoryPlanManage'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ areas:[],
+ rules:[],
+ statues:[]
+ },
+ columns: [
+ {
+ title: '鐩樼偣璁″垝鍗曞彿',
+ align: 'center',
+ dataIndex: 'planNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '璁″垝鐘舵��',
+ align: 'center',
+ dataIndex: 'statusEnum',
+ scopedSlots: { customRender: 'planStatusEnumscopedSlots' }
+ },
+ {
+ title: '瑙勫垯缂栫爜',
+ align: 'center',
+ dataIndex: 'ruleLabel'
+ },
+ {
+ title: '鐩樼偣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鐩樼偣寮�濮嬫椂闂�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'startPlanTime'
+ },
+ {
+ title: '鐩樼偣缁撴潫鏃堕棿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'endPlanTime'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+ params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.StartPlanTime
+ delete params.EndPlanTime
+ }
+ return InventoryPlanPage(Object.assign(parameter, params)).then((res) => {
+ let _arr = res.data.rows || []
+ _arr = _arr.map((mapItem)=>{
+ mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+ return mapItem
+ })
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ res.data.rows = _arr
+ return res.data
+ })
+ },
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created(){
+ this.selectOptions.statues = this.$options.filters['dictData']('task_status')
+ },
+ mounted () {
+ this.getSelectOptions()
+ },
+ methods: {
+ moment,
+ onNew(){
+ this.formType = 'add'
+ this.$refs.addForm.init()
+ },
+ onEdit(obj){
+ this.formType = 'modify'
+ this.$refs.addForm.init(obj)
+ },
+ getSelectOptions(){
+ Promise.all([
+ InventoryPlanGetAreas(),
+ InventoryPlanGetCheckRules()
+ ]).then(response=>{
+ this.selectOptions.areas = response[0].data || []
+ this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+ mapItem.label = this.getRuleLabel(mapItem)
+ return mapItem
+ })
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getRuleLabel(obj){
+ let res = obj.ruleName
+ res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+ res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+ if (obj.ruleModeValue) {
+ if (obj.ruleMode===1) {
+ res += '(' + obj.ruleModeValue + '%)'
+ } else if (obj.ruleMode===2) {
+ res += '(' + obj.ruleModeValue + '浠�)'
+ }
+ }
+ res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+ return res
+ },
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.planNo
+ }
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ InventoryPlanDelete (record) {
+ InventoryPlanDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.infoId = null
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue
new file mode 100644
index 0000000..6949aff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlan/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+ <div class="inventory-plan-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'inventoryPlanInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鏁伴噺', dataIndex: 'stockNumber', key: 'stockNumber' },
+ { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber', key: 'inventoryNumber' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return InventoryPlanDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue
new file mode 100644
index 0000000..57a13b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/index.vue
@@ -0,0 +1,282 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹℃壒鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ExamineState" placeholder="璇烽�夋嫨瀹℃壒鐘舵��">
+ <a-select-option v-for="(item,index) in selectOptions.parseStatus" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣瑙勫垯">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+ <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+ {{ item.label }}
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣浠撳簱">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+ <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_plan_stock_order_generate')" @click="onMulGenerateRecord">鎵归噺鐢熸垚鎶ヨ〃</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="parseStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#7fff00':(text===3?'##ff1493':'#2f4f4f'))">{{ 'examine_state' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a :disabled="!hasPerm('inventory_plan_stock_order_generate')" @click="onGenerateRecord(record)">鐢熸垚鎶ヨ〃</a>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import {
+ InventoryPlanRecordPage,
+ InventoryPlanGetAreas,
+ InventoryPlanGetCheckRules
+ } from '@/api/modular/main/InventoryPlanManage'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ areas:[],
+ rules:[],
+ parseStatus:[]
+ },
+ columns: [
+ {
+ title: '鐩樼偣璁″垝鍗曞彿',
+ align: 'center',
+ dataIndex: 'planNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '瀹℃壒鐘舵��',
+ align: 'center',
+ dataIndex: 'examineState',
+ scopedSlots: { customRender: 'parseStatusEnumscopedSlots' }
+ },
+ {
+ title: '瑙勫垯缂栫爜',
+ align: 'center',
+ dataIndex: 'ruleLabel'
+ },
+ {
+ title: '鐩樼偣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鐩樼偣寮�濮嬫椂闂�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'startPlanTime'
+ },
+ {
+ title: '鐩樼偣缁撴潫鏃堕棿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'endPlanTime'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+ params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.StartPlanTime
+ delete params.EndPlanTime
+ }
+ return InventoryPlanRecordPage(Object.assign(parameter, params)).then((res) => {
+ let _arr = res.data.rows || []
+ _arr = _arr.map((mapItem)=>{
+ mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+ return mapItem
+ })
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ res.data.rows = _arr
+ this.selectedRowKeys = []
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created(){
+ this.selectOptions.parseStatus = this.$options.filters['dictData']('examine_state')
+ },
+ mounted () {
+ this.getSelectOptions()
+ },
+ methods: {
+ moment,
+ getSelectOptions(){
+ Promise.all([
+ InventoryPlanGetAreas(),
+ InventoryPlanGetCheckRules()
+ ]).then(response=>{
+ this.selectOptions.areas = response[0].data || []
+ this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+ mapItem.label = this.getRuleLabel(mapItem)
+ return mapItem
+ })
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getRuleLabel(obj){
+ let res = obj.ruleName
+ res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+ res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+ if (obj.ruleModeValue) {
+ if (obj.ruleMode===1) {
+ res += '(' + obj.ruleModeValue + '%)'
+ } else if (obj.ruleMode===2) {
+ res += '(' + obj.ruleModeValue + '浠�)'
+ }
+ }
+ res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+ return res
+ },
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.planNo
+ }
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+ onMulGenerateRecord(){
+ this.dealGenerateRecord(this.selectedRowKeys)
+ },
+ onGenerateRecord(obj){
+ if (!this.hasPerm('inventory_plan_stock_order_generate')) return false
+ this.dealGenerateRecord([obj.id])
+ },
+ dealGenerateRecord(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛岀敓鎴愭姤琛ㄦ搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ let params = {}
+ this.handleGenerateRecord(params,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleGenerateRecord(params,callback){
+ callback(true)
+ /* this.$loading.show()
+ InventoryReview(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ }) */
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue
new file mode 100644
index 0000000..8c239c4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryPlanChangeStockNumber/infoBlock.vue
@@ -0,0 +1,140 @@
+<template>
+ <div class="inventory-plan-change-stock-number-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ <a-button type="primary" style="margin-left:10px;" :disabled="!hasPerm('inventory_plan_stock_number_change')" @click="onUpdate">鏇存柊搴撳瓨</a-button>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.stockNumber" :min="0" />
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage, InventoryChangeStockNumber } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'inventoryPlanChangeStockNumberInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '搴撳瓨鏁�', key: 'stockNumber', scopedSlots: { customRender: 'inputCell' }, width: 180, align:'center' },
+ { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber',key: 'inventoryNumber' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ list:[]
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return InventoryPlanDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ this.list = res.data.rows
+ } else {
+ this.list = []
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ onUpdate(){
+ this.$confirm({
+ title: '纭畾瑕佹洿鏂颁繚瀛樺簱瀛樻暟鎹悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleUpdate((f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleUpdate(callback){
+ this.$loading.show()
+ let params = {updateStockNumList:this.list}
+ InventoryChangeStockNumber(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-plan-change-stock-number-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue
new file mode 100644
index 0000000..9e72e3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/index.vue
@@ -0,0 +1,308 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣璁″垝鍗曞彿">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐硅鍒掑崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹℃壒鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ExamineState" placeholder="璇烽�夋嫨瀹℃壒鐘舵��">
+ <a-select-option v-for="(item,index) in selectOptions.parseStatus" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣瑙勫垯">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.InventoryRuleId" placeholder="璇烽�夋嫨鐩樼偣瑙勫垯">
+ <a-select-option v-for="(item,index) in selectOptions.rules" :key="index" :value="item.id">
+ {{ item.label }}
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣浠撳簱">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaID" placeholder="璇烽�夋嫨鐩樼偣浠撳簱">
+ <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣鏃堕棿">
+ <a-range-picker v-model="queryParam.dateRange" value-format="YYYY-MM-DD" format="YYYY-MM-DD" />
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_check')" @click="onMulParse">鎵归噺閫氳繃</a-button>
+ <a-button type="primary" :disabled="!selectedRowKeys.length || !hasPerm('inventory_check')" @click="onMulReject">鎵归噺椹冲洖</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="parseStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#7fff00':(text===3?'##ff1493':'#2f4f4f'))">{{ 'examine_state' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a :disabled="!hasPerm('inventory_check')" @click="onParse(record)">閫氳繃</a>
+ <a-divider type="vertical" />
+ <a :disabled="!hasPerm('inventory_check')" @click="onReject(record)">椹冲洖</a>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import {
+ InventoryPlanRecordPage,
+ InventoryPlanGetAreas,
+ InventoryPlanGetCheckRules,
+ InventoryReview
+ } from '@/api/modular/main/InventoryPlanManage'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ areas:[],
+ rules:[],
+ parseStatus:[]
+ },
+ columns: [
+ {
+ title: '鐩樼偣璁″垝鍗曞彿',
+ align: 'center',
+ dataIndex: 'planNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '瀹℃壒鐘舵��',
+ align: 'center',
+ dataIndex: 'examineState',
+ scopedSlots: { customRender: 'parseStatusEnumscopedSlots' }
+ },
+ {
+ title: '瑙勫垯缂栫爜',
+ align: 'center',
+ dataIndex: 'ruleLabel'
+ },
+ {
+ title: '鐩樼偣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鐩樼偣寮�濮嬫椂闂�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'startPlanTime'
+ },
+ {
+ title: '鐩樼偣缁撴潫鏃堕棿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'endPlanTime'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ let params = {...this.queryParam}
+ if ((params.dateRange instanceof Array) && params.dateRange.length===2) {
+ params.StartPlanTime = params.dateRange[0] + ' 00:00:00'
+ params.EndPlanTime = params.dateRange[1] + ' 23:59:59'
+ delete params.dateRange
+ } else {
+ delete params.dateRange
+ delete params.StartPlanTime
+ delete params.EndPlanTime
+ }
+ return InventoryPlanRecordPage(Object.assign(parameter, params)).then((res) => {
+ let _arr = res.data.rows || []
+ _arr = _arr.map((mapItem)=>{
+ mapItem.ruleLabel = this.getRuleLabel(mapItem.inventoryRuled)
+ return mapItem
+ })
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ res.data.rows = _arr
+ this.selectedRowKeys = []
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created(){
+ this.selectOptions.parseStatus = this.$options.filters['dictData']('examine_state')
+ },
+ mounted () {
+ this.getSelectOptions()
+ },
+ methods: {
+ moment,
+ getSelectOptions(){
+ Promise.all([
+ InventoryPlanGetAreas(),
+ InventoryPlanGetCheckRules()
+ ]).then(response=>{
+ this.selectOptions.areas = response[0].data || []
+ this.selectOptions.rules = (response[1].data || []).map(mapItem=>{
+ mapItem.label = this.getRuleLabel(mapItem)
+ return mapItem
+ })
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getRuleLabel(obj){
+ let res = obj.ruleName
+ res += '/' + this.$options.filters['dictType']('RuleType',obj.ruleType)
+ res += '/' + this.$options.filters['dictType']('RuleMode',obj.ruleMode)
+ if (obj.ruleModeValue) {
+ if (obj.ruleMode===1) {
+ res += '(' + obj.ruleModeValue + '%)'
+ } else if (obj.ruleMode===2) {
+ res += '(' + obj.ruleModeValue + '浠�)'
+ }
+ }
+ res += '/' + this.$options.filters['dictType']('RuleCycle',obj.ruleCycle)
+ return res
+ },
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.planNo
+ }
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+ onMulParse(){
+ this.dealParse(this.selectedRowKeys)
+ },
+ onMulReject(){
+ this.dealReject(this.selectedRowKeys)
+ },
+ onParse(obj){
+ if (!this.hasPerm('inventory_check')) return false
+ this.dealParse([obj.id])
+ },
+ onReject(obj){
+ if (!this.hasPerm('inventory_check')) return false
+ this.dealReject([obj.id])
+ },
+ dealParse(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽鏍搁�氳繃鎿嶄綔鍚楋紵',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ let params = {updateExamineId:ids,examineState:2}
+ this.handleReview(params,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealReject(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽鏍搁┏鍥炴搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ let params = {updateExamineId:ids,examineState:3}
+ this.handleReview(params,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleReview(params,callback){
+ this.$loading.show()
+ InventoryReview(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue
new file mode 100644
index 0000000..267929a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRecord/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+ <div class="inventory-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { InventoryPlanDetailPage } from '@/api/modular/main/InventoryPlanManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'inventoryOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '瀹瑰櫒缂栧彿', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '搴撲綅缂栧彿', dataIndex: 'placeCode', key: 'placeCode' },
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '搴撳瓨鏁�', dataIndex: 'stockNumber', key: 'stockNumber' },
+ { title: '鐩樼偣鏁�', dataIndex: 'inventoryNumber', key: 'inventoryNumber' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return InventoryPlanDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.inventory-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue
new file mode 100644
index 0000000..e8834a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+ <a-modal
+ title="鏂板鐩樼偣瑙勫垯"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐩樼偣缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" v-decorator="['ruleNo', {rules: [{ required: true, message: '璇疯緭鍏ョ洏鐐圭紪鐮侊紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒欏悕绉�" v-decorator="['ruleName', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="鐩樼偣绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷" v-decorator="['ruleType', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in ruleTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐩樼偣妯″紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣妯″紡" v-decorator="['ruleMode', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣妯″紡锛�' }]}]" @change="onChangeRuleMode">
+ <a-select-option v-for="(item,index) in ruleModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-if="ruleMode==='1'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}%`:''" :parser="value => value.replace('%', '')"
+ v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+ </a-form-item>
+ <a-form-item v-if="ruleMode==='2'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}浠禶:''" :parser="value => value.replace('浠�', '')"
+ v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+ </a-form-item>
+ <a-form-item label="鐩樼偣鍛ㄦ湡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡" v-decorator="['ruleCycle', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣鍛ㄦ湡锛�' }]}]">
+ <a-select-option v-for="(item,index) in ruleCycleData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ InventoryRuleAdd
+ } from '@/api/modular/main/InventoryRuleManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ ruleTypeData: [],
+ ruleModeData: [],
+ ruleCycleData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ ruleMode:null
+ }
+ },
+ created(){
+ const ruleTypeOption = this.$options
+ this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+ const ruleModeOption = this.$options
+ this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+ const ruleCycleOption = this.$options
+ this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+
+ },
+ onChangeRuleMode(val){
+ this.ruleMode = val
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ InventoryRuleAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.ruleMode = null
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue
new file mode 100644
index 0000000..6fb599d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/editForm.vue
@@ -0,0 +1,148 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鐩樼偣瑙勫垯"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐩樼偣缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" v-decorator="['ruleNo', {rules: [{ required: true, message: '璇疯緭鍏ョ洏鐐圭紪鐮侊紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="瑙勫垯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒欏悕绉�" v-decorator="['ruleName', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒欏悕绉帮紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="鐩樼偣绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷" v-decorator="['ruleType', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in ruleTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐩樼偣妯″紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣妯″紡" v-decorator="['ruleMode', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣妯″紡锛�' }]}]">
+ <a-select-option v-for="(item,index) in ruleModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-if="ruleMode==='1'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}%`:''" :parser="value => value.replace('%', '')"
+ v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+ </a-form-item>
+ <a-form-item v-if="ruleMode==='2'" label="璁″垝鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input-number style="width: 100%" :min="0.000001" :max="100" :formatter="value => value?`${value}浠禶:''" :parser="value => value.replace('浠�', '')"
+ v-decorator="['ruleModeValue', {rules: [{ required: true, message: '璇疯緭鍏ヨ鍒掓暟锛�' }]}]" />
+ </a-form-item>
+ <a-form-item label="鐩樼偣鍛ㄦ湡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡" v-decorator="['ruleCycle', {rules: [{ required: true, message: '璇烽�夋嫨鐩樼偣鍛ㄦ湡锛�' }]}]">
+ <a-select-option v-for="(item,index) in ruleCycleData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ InventoryRuleEdit
+ } from '@/api/modular/main/InventoryRuleManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ ruleTypeData: [],
+ ruleModeData: [],
+ ruleCycleData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ ruleMode:null
+ }
+ },
+ created(){
+ const ruleTypeOption = this.$options
+ this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+ const ruleModeOption = this.$options
+ this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+ const ruleCycleOption = this.$options
+ this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ ruleNo: record.ruleNo,
+ ruleName: record.ruleName,
+ ruleType: String(record.ruleType),
+ ruleMode: String(record.ruleMode),
+ ruleCycle: String(record.ruleCycle)
+ }
+ )
+ this.ruleMode = String(record.ruleMode)
+ if (this.ruleMode==='1'||this.ruleMode==='2') {
+ this.$nextTick(()=>{
+ if (!record.ruleModeValue) record.ruleModeValue = ''
+ this.form.setFieldsValue({ruleModeValue:record.ruleModeValue})
+ })
+ }
+ })
+ },
+ onChangeRuleMode(val){
+ this.ruleMode = val
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ InventoryRuleEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.ruleMode=null
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue
new file mode 100644
index 0000000..87dceb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InventoryRule/index.vue
@@ -0,0 +1,228 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣缂栫爜">
+ <a-input v-model="queryParam.ruleNo" allow-clear placeholder="璇疯緭鍏ョ洏鐐圭紪鐮�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瑙勫垯鍚嶇О">
+ <a-input v-model="queryParam.ruleName" allow-clear placeholder="璇疯緭鍏ヨ鍒欏悕绉�" />
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleType" placeholder="璇烽�夋嫨鐩樼偣绫诲瀷">
+ <a-select-option v-for="(item,index) in ruleTypeData" :key="index"
+ :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣妯″紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleMode" placeholder="璇烽�夋嫨鐩樼偣妯″紡">
+ <a-select-option v-for="(item,index) in ruleModeData" :key="index"
+ :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩樼偣鍛ㄦ湡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.ruleCycle" placeholder="璇烽�夋嫨鐩樼偣鍛ㄦ湡">
+ <a-select-option v-for="(item,index) in ruleCycleData" :key="index"
+ :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id">
+ <template class="table-operator" slot="operator">
+ <a-button type="primary" icon="plus"
+ @click="$refs.addForm.add()">鏂板鐩樼偣瑙勫垯</a-button>
+ </template>
+ <span slot="ruleTypescopedSlots" slot-scope="text">
+ {{ 'RuleType' | dictType(text) }}
+ </span>
+ <span slot="ruleModescopedSlots" slot-scope="text">
+ {{ 'RuleMode' | dictType(text) }}
+ </span>
+ <span slot="ruleCyclescopedSlots" slot-scope="text">
+ {{ 'RuleCycle' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�"
+ @confirm="() => InventoryRuleDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ STable
+ } from '@/components'
+ import {
+ InventoryRulePage,
+ InventoryRuleDelete
+ } from '@/api/modular/main/InventoryRuleManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [{
+ title: '鐩樼偣缂栫爜',
+ align: 'center',
+ dataIndex: 'ruleNo'
+ },
+ {
+ title: '瑙勫垯鍚嶇О',
+ align: 'center',
+ dataIndex: 'ruleName'
+ },
+ {
+ title: '鐩樼偣绫诲瀷',
+ align: 'center',
+ dataIndex: 'ruleType',
+ scopedSlots: {
+ customRender: 'ruleTypescopedSlots'
+ }
+ },
+ {
+ title: '鐩樼偣妯″紡',
+ align: 'center',
+ dataIndex: 'ruleMode',
+ scopedSlots: {
+ customRender: 'ruleModescopedSlots'
+ }
+ },
+ {
+ title: '璁″垝鏁�',
+ align: 'center',
+ dataIndex: 'ruleModeValueShow'
+ },
+ {
+ title: '鐩樼偣鍛ㄦ湡',
+ align: 'center',
+ dataIndex: 'ruleCycle',
+ scopedSlots: {
+ customRender: 'ruleCyclescopedSlots'
+ }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ tstyle: {
+ 'padding-bottom': '0px',
+ 'margin-bottom': '10px'
+ },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return InventoryRulePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ _arr = _arr.map((mapItem)=>{
+ mapItem.ruleModeValueShow = ''
+ if (mapItem.ruleModeValue) {
+ if (mapItem.ruleMode===1) {
+ mapItem.ruleModeValueShow = mapItem.ruleModeValue + '%'
+ } else if (mapItem.ruleMode===2) {
+ mapItem.ruleModeValueShow = mapItem.ruleModeValue + '浠�'
+ }
+ }
+ return mapItem
+ })
+ res.data.rows = _arr
+ return res.data
+ })
+ },
+ ruleTypeData: [],
+ ruleModeData: [],
+ ruleCycleData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created() {
+ const ruleTypeOption = this.$options
+ this.ruleTypeData = ruleTypeOption.filters['dictData']('RuleType')
+ const ruleModeOption = this.$options
+ this.ruleModeData = ruleModeOption.filters['dictData']('RuleMode')
+ const ruleCycleOption = this.$options
+ this.ruleCycleData = ruleCycleOption.filters['dictData']('RuleCycle')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ InventoryRuleDelete(record) {
+ InventoryRuleDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue
new file mode 100644
index 0000000..e4b4920
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/DetailDrawer.vue
@@ -0,0 +1,153 @@
+<template>
+ <a-drawer
+ title="搴撲綅璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ :width="400"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+ <div class="zz-inverting-storages-detail-div">
+ <div class="location-detail-box">
+ <div class="base-info info-box">
+ <p>搴撲綅缂栧彿锛歿{locationObj.placecode}}</p>
+ <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 start -->
+ <div class="location-materials">
+
+ <div class="location-material-item" v-for="(item,index) in materialList" :key="'material-item-'+index">
+ <a-card>
+ <div class="info-box">
+ <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+ <p>鐗╂枡鍚嶇О锛歿{item.materialName}}</p>
+ <p>灏哄锛歿{item.materialSpec}}</p>
+ <p>鑸瑰彿锛歿{item.shipNo}}</p>
+ <p>鍥惧彿锛歿{item.drawingNo}}</p>
+ </div>
+ </a-card>
+ </div>
+
+ </div>
+ <!-- 鐗╂枡鍒楄〃 end -->
+ </div>
+ </div>
+ </a-spin>
+ </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail } from '@/api/modular/main/InvertingStorageManage'
+export default {
+ name:'zzInvertingStorageDetailDrawer',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ locationObj:{
+ placestatus:null,
+ islock:null
+ },
+ containercode:'',
+ materialList:[],
+ actionFlag:false
+ }
+ },
+ methods:{
+ onClose(){
+ this.close()
+ },
+ close(){
+ this.$emit('update:visible',false)
+ },
+ afterVisibleChange(visible){
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow(){
+ this.loading = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ })
+ },
+ getLocationDetail(callback){
+ let params = {Placecode:this.row.placecode}
+ GetLocationDetail(params).then((d)=>{
+ this.locationObj = d.data.palceDetails || {}
+ this.containercode = d.data.containercode || ''
+ this.materialList = d.data.wmsMaterialStocks || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ afterClsoe(){
+ this.locationObj = {
+ placestatus:null,
+ islock:null
+ }
+ this.containercode = ''
+ this.materialList = []
+ if (this.actionFlag) {
+ this.$emit('callback')
+ }
+ this.actionFlag = false
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-inverting-storages-detail-div{
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ &>.btns-row{
+ flex-shrink: 0;
+ padding:12px 16px;
+ .ant-btn + .ant-btn {
+ margin-left: 10px;
+ }
+ }
+ .location-detail-box{
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .info-box{
+ line-height: 1.5;
+ p{
+ margin-bottom: 0;
+ }
+ }
+ .base-info,.location-materials{
+ padding:0 16px;
+ margin-bottom: 16px;
+ }
+ .location-materials{
+ .location-material-item{
+ margin-bottom: 12px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue
new file mode 100644
index 0000000..d78d5b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/ListBox.vue
@@ -0,0 +1,146 @@
+<template>
+ <div class="zz-inverting-storages-list-box">
+ <div class="box-top">
+ <div class="check-all-box">
+ <a-checkbox :indeterminate="indeterminate" :checked="checkAll" @change="onAllChange">{{checkAll?'鍏ㄩ儴鍙栨秷':'鍏ㄩ儴閫夋嫨'}}</a-checkbox>
+ </div>
+ <div class="checked-des auto-wrap">宸查�夋嫨搴撲綅鏁帮細<a style="cursor:default;">{{checkedNum}}</a></div>
+ </div>
+ <div class="list-group">
+ <div class="lsit-item" v-for="(item,index) in list" :key="'lsit-item-'+index">
+ <a-checkbox :checked="item.checked" @change="onSingleChange(index,item,$event)" /><a class="space-link" @click.stop="openDetail(item)">{{item.placecode}}</a>
+ </div>
+ </div>
+
+ <detail-drawer :visible.sync="detailVisible" :row="detailRow" />
+ </div>
+</template>
+
+<script>
+import DetailDrawer from './DetailDrawer.vue'
+export default {
+ name:'zzInvertingStorageListBox',
+ components:{DetailDrawer},
+ data(){
+ return {
+ checkAll:false,
+ indeterminate:false,
+ list:[],
+ checkedNum:0,
+ detailVisible:false,
+ detailRow:{}
+ }
+ },
+ methods:{
+ setList(arr){
+ this.list = [...arr]
+ this.restCheckAll()
+ },
+ emptyChoosen(){
+ this.restCheckAll()
+ this.linkSetCheckList(false)
+ },
+ restCheckAll(){
+ this.checkAll = false
+ this.indeterminate = false
+ this.checkedNum = 0
+ },
+ onSingleChange(index,obj,e){
+ obj.checked = e.target.checked
+ if (obj.checked) {
+ this.checkedNum++;
+ } else {
+ this.checkedNum--;
+ }
+ this.linkSetCheckAll()
+ },
+ onAllChange(e){
+ let _temp = e.target.checked
+ if (_temp) {
+ this.checkAll = true
+ this.checkedNum = this.list.length
+ } else {
+ this.checkAll = false
+ this.checkedNum = 0
+ }
+ this.indeterminate = false
+ this.linkSetCheckList(_temp)
+ },
+ linkSetCheckAll(){
+ let c = 0 , n = this.list.length;
+ this.list.forEach((listitem)=>{
+ if (listitem.checked) {
+ c++
+ }
+ })
+ if (c===0) {
+ this.checkAll = false;
+ this.indeterminate = false
+ } else if (c===n) {
+ this.checkAll = true;
+ this.indeterminate = false
+ } else {
+ this.checkAll = false;
+ this.indeterminate = true
+ }
+ },
+ linkSetCheckList(__empty) {
+ this.list.forEach((listitem)=>{
+ listitem.checked = __empty
+ })
+ },
+ openDetail(obj){
+ this.detailRow = obj
+ this.detailVisible = true;
+ },
+ getChoosen(){
+ let arr = [];
+ this.list.forEach((listitem)=>{
+ if (listitem.checked) {
+ arr.push(listitem)
+ }
+ })
+ return arr
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-inverting-storages-list-box {
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ background-color: #fff;
+ .box-top {
+ flex-shrink: 0;
+ display: flex;
+ align-items: center;
+ border-bottom: 1px solid #dcdcdc;
+ .check-all-box{
+ flex-shrink: 0;
+ padding: 0 12px;
+ }
+ .checked-des{
+ flex-grow: 1;
+ width: 1px;
+ padding: 6px 6px 6px 0;
+ }
+ }
+ .list-group{
+ height: 1px;
+ flex-grow: 1;
+ overflow: auto;
+ .lsit-item{
+ border-bottom: 1px dashed #dcdcdc;
+ padding: 6px 12px;
+ .space-link{
+ margin-left: 8px;
+ }
+ &:last-child{
+ border-bottom: 0;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue
new file mode 100644
index 0000000..6e3bf4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/SearchForm.vue
@@ -0,0 +1,136 @@
+<template>
+ <div class="zz-inverting-storages-search-compontent">
+ <a-row :gutter="6">
+ <a-col :md="12" :sm="24">
+ <a-select v-model="form.Areaid" style="width:100%;" placeholder="璇烽�夋嫨搴撳尯" @change="onAreaChange">
+ <a-select-option v-for="(item,index) in areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+ </a-select>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-select v-model="form.Rowno" style="width:100%;" placeholder="璇烽�夋嫨鎺�" allowClear @change="onRowChange">
+ <a-select-option v-for="(item,index) in rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ </div>
+</template>
+
+<script>
+import { GetArea, GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+export default {
+ name:'zzInvertingStorageSearchCompontent',
+ emits:['change'],
+ props:{
+ areas:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ },
+ rows:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data(){
+ return {
+ form:{
+ Areaid聽:undefined,
+ Rowno:undefined
+ },
+ selectList:{
+ areas:[],
+ rows:[]
+ }
+ }
+ },
+ methods:{
+ setAreaValue(val){
+ this.form.Areaid = val
+ },
+ setRowValue(val){
+ this.form.Rowno = val
+ },
+ onAreaChange(val){
+ this.$emit('change','area',val)
+ },
+ onRowChange(val){
+ this.$emit('change','row',val)
+ },
+ getValues(){
+ return {...this.form}
+ }
+ /* init(callback){
+ this.getSelectListAreas((f1)=>{
+ if (f1) {
+ this.getSelectListRows((f2)=>{
+ if (f2) {
+ callback && callback(true,{...this.form})
+ } else {
+ callback && callback(false)
+ }
+ })
+ } else {
+ callback && callback(false)
+ }
+ })
+ },
+ getSelectListAreas(callback){
+ GetArea().then((d)=>{
+ this.selectList.areas = d.data || [];
+ if (this.selectList.areas.length>0) {
+ this.form.Areaid = this.selectList.areas[0].id
+ callback && callback(true)
+ } else {
+ callback && callback(false)
+ }
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ getSelectListRows(callback){
+ let params = {Areaid:this.form.Areaid}
+ GetPalceRowno(params).then((d)=>{
+ this.selectList.rows = d.data || [];
+ if (this.selectList.rows.length>0) {
+ if (this.selectList.rows.length===1) {
+ this.form.Rowno = this.selectList.rows[0]
+ } else {
+ this.form.Rowno = null
+ }
+ callback && callback(true)
+ } else {
+ this.form.Rowno = null
+ callback && callback(false)
+ }
+ }).catch(()=>{
+ this.selectList.rows = []
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ onAreaChange() {
+ this.$loading.show()
+ this.getSelectListRows(()=>{
+ this.$loading.hide()
+ })
+ },
+ onSearch(){
+ if (!this.form.Areaid) {
+ this.$error({
+ title: '绯荤粺鎻愮ず',
+ content: '璇烽�夋嫨搴撳尯锛�',
+ });
+ return false;
+ }
+ this.$emit('search',{...this.form})
+ } */
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue
new file mode 100644
index 0000000..b4c337e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/InvertingStorage/index.vue
@@ -0,0 +1,344 @@
+<template>
+ <div class="zz-inverting-storage-page">
+ <div class="top-warning-view">
+ <a-alert message="娉ㄦ剰浜嬮」" type="warning">
+ <template slot="description">
+ <div class="auto-wrap">1銆佸�掑簱锛岃捣濮嬪簱浣嶆暟涓庣洰鏍囧簱浣嶆暟搴斾繚鎸佷竴鑷淬��</div>
+ <div class="auto-wrap">2銆佸�掑簱锛屾瘡娆$Щ鍔ㄥ簱浣嶇殑鐗╂枡搴旇鏄竴鑷寸殑銆�</div>
+ </template>
+ </a-alert>
+ </div>
+ <div class="hor-divider"></div>
+ <div class="double-lists-view">
+ <div class="inverting-block">
+ <div class="title no-wrap">璧峰搴撲綅</div>
+ <div class="search-bar">
+ <search-form ref="search1" :areas="selectList.areas" :rows="selectList.rows1" @change="onSearchChange1" />
+ </div>
+ <div class="list-box">
+ <list-box ref="list1" />
+ </div>
+ </div>
+ <div class="ver-divider"></div>
+ <div class="inverting-block">
+ <div class="title no-wrap">鐩爣搴撲綅</div>
+ <div class="search-bar">
+ <search-form ref="search2" :areas="selectList.areas" :rows="selectList.rows2" @change="onSearchChange2" />
+ </div>
+ <div class="list-box">
+ <list-box ref="list2" />
+ </div>
+ </div>
+ </div>
+ <div class="hor-divider"></div>
+ <div class="bottom-btns-row">
+ <a-button @click="onSubmit('manual')">浜哄伐鍊掑簱</a-button>
+ <a-button type="primary" @click="onSubmit('auto')">鑷姩鍊掑簱</a-button>
+ </div>
+ </div>
+</template>
+
+<script>
+import SearchForm from './SearchForm.vue'
+import ListBox from './ListBox.vue'
+import { GetArea, GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+import { GetCunHouPlace, GetKongXianPlace, ManualSubmit, AutoSubmit } from '@/api/modular/main/InvertingStorageManage'
+export default {
+ name:'zzInvertingStoragePage',
+ components:{SearchForm, ListBox},
+ data(){
+ return {
+ selectList:{
+ areas:[],
+ rows1:[],
+ rows2:[]
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$loading.show()
+ this.getSelectListAreas((f1,val)=>{
+ if (f1) {
+ this.getSelectListRows(val,(f2)=>{
+ if (f2) {
+ this.getCunHuoList((f3)=>{
+ if (f3) {
+ this.getKongXianList(()=>{
+ this.$loading.hide()
+ })
+ } else {
+ this.$loading.hide()
+ }
+ })
+ } else {
+ this.$loading.hide()
+ }
+ })
+ } else {
+ this.$loading.hide()
+ }
+ })
+ },
+ onSearchChange1(type,val){
+ if (type==='area') {
+ this.areaChange1(val)
+ } else {
+ this.rowChange1(val)
+ }
+ },
+ areaChange1(val){
+ this.$loading.show()
+ this.getSelectListRows(val,(f)=>{
+ if (f) {
+ this.getCunHuoList(()=>{
+ this.$loading.hide()
+ })
+ } else {
+ this.$loading.hide()
+ }
+ },1)
+ },
+ rowChange1(val){
+ this.$loading.show()
+ this.getCunHuoList(()=>{
+ this.$loading.hide()
+ })
+ },
+ onSearchChange2(type,val){
+ if (type==='area') {
+ this.areaChange2(val)
+ } else {
+ this.rowChange2(val)
+ }
+ },
+ areaChange2(val){
+ this.$loading.show()
+ this.getSelectListRows(val,(f)=>{
+ if (f) {
+ this.getKongXianList(()=>{
+ this.$loading.hide()
+ })
+ } else {
+ this.$loading.hide()
+ }
+ },2)
+ },
+ rowChange2(val){
+ this.$loading.show()
+ this.getKongXianList(()=>{
+ this.$loading.hide()
+ })
+ },
+ getSelectListAreas(callback){
+ GetArea().then((d)=>{
+ this.selectList.areas = d.data || [];
+ if (this.selectList.areas.length>0) {
+ let _temp = this.selectList.areas[0].id
+ this.$refs.search1.setAreaValue(_temp)
+ this.$refs.search2.setAreaValue(_temp)
+ callback && callback(true,_temp)
+ } else {
+ callback && callback(false)
+ }
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ getSelectListRows(val,callback,listIndex){
+ let params = {Areaid:val}
+ GetPalceRowno(params).then((d)=>{
+ let _arr = d.data || [];
+ if (!listIndex || listIndex===1) {
+ this.selectList.rows1 = _arr
+ }
+ if (!listIndex || listIndex===2) {
+ this.selectList.rows2 = _arr
+ }
+ if (_arr.length>0) {
+ if (_arr.length===1) {
+ if (!listIndex || listIndex===1) {
+ this.$refs.search1.setRowValue(this.selectList.rows[0])
+ }
+ if (!listIndex || listIndex===2) {
+ this.$refs.search2.setRowValue(this.selectList.rows[0])
+ }
+ } else {
+ if (!listIndex || listIndex===1) {
+ this.$refs.search1.setRowValue(undefined)
+ }
+ if (!listIndex || listIndex===2) {
+ this.$refs.search2.setRowValue(undefined)
+ }
+ }
+ callback && callback(true)
+ } else {
+ if (!listIndex || listIndex===1) {
+ this.$refs.search1.setRowValue(undefined)
+ }
+ if (!listIndex || listIndex===2) {
+ this.$refs.search2.setRowValue(undefined)
+ }
+ callback && callback(false)
+ }
+ }).catch(()=>{
+ if (!listIndex || listIndex===1) {
+ this.selectList.rows1 = []
+ this.$refs.search1.setRowValue(undefined)
+ }
+ if (!listIndex || listIndex===2) {
+ this.selectList.rows2 = []
+ this.$refs.search2.setRowValue(undefined)
+ }
+ callback && callback(false)
+ })
+ },
+ getCunHuoList(callback) {
+ let params = this.$refs.search1.getValues()
+ GetCunHouPlace(params).then(d=>{
+ this.$refs.list1.setList(d.data || [])
+ callback && callback(true)
+ }).catch(()=>{
+ this.$refs.list1.setList([])
+ callback && callback(false)
+ })
+ },
+ getKongXianList(callback) {
+ let params = this.$refs.search2.getValues()
+ GetKongXianPlace(params).then(d=>{
+ this.$refs.list2.setList(d.data || [])
+ callback && callback(true)
+ }).catch(()=>{
+ this.$refs.list2.setList([])
+ callback && callback(false)
+ })
+ },
+ onSubmit(type) {
+ this.$loading.show()
+ let params = this.getSubmitParams()
+ this.checkBeforeSumbit(type,params,(f)=>{
+ if (f.flag) {
+ this.submitAjax(type,params,(f2)=>{
+ this.$loading.hide()
+ if (f2) {
+ this.$message.success('鍊掑簱鎻愪氦鎴愬姛');
+ this.$refs.list1.emptyChoosen()
+ this.$refs.list2.emptyChoosen()
+ }
+ })
+ } else {
+ this.$loading.hide()
+ this.$warning({
+ title: '绯荤粺鎻愮ず',
+ content: f.msg
+ });
+ }
+ })
+ },
+ checkBeforeSumbit(type,params,callback){
+ let res = {flag:true,msg:''}
+ if (params.startPlaceList.length!==params.endPlaceList.length) {
+ res.flag = false
+ res.msg = '璧峰搴撲綅鍜岀洰鏍囧簱浣嶇殑宸查�夊簱浣嶆暟涓嶄竴鑷淬��'
+ }
+ if (res.flag && params.startPlaceList.length===0) {
+ res.flag = false
+ res.msg = '璇烽�夋嫨搴撲綅銆�'
+ }
+ callback(res)
+ },
+ getSubmitParams(){
+ return {
+ startPlaceList:this.$refs.list1.getChoosen(),
+ endPlaceList:this.$refs.list2.getChoosen()
+ }
+ },
+ submitAjax(type,params,callback){
+ if (type==='auto') {
+ this.autoSubmitAjax(params,callback)
+ } else {
+ this.manualSubmitAjax(params,callback)
+ }
+ },
+ autoSubmitAjax(params,callback) {
+ AutoSubmit(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ manualSubmitAjax(params,callback) {
+ ManualSubmit(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ }
+ },
+ mounted(){
+ this.init()
+ }
+}
+</script>
+
+<style scoped lang="less">
+.zz-inverting-storage-page {
+ @dividerSize:12px;
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ .hor-divider,.ver-divider,.bottom-btns-row{
+ flex-shrink: 0;
+ }
+ .hor-divider{
+ height: @dividerSize;
+ }
+ .ver-divider{
+ width: @dividerSize;
+ }
+ .top-warning-view{
+ flex-shrink: 0;
+ }
+ .bottom-btns-row{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ .ant-btn + .ant-btn {
+ margin-left:20px;
+ }
+ }
+ .double-lists-view{
+ flex-grow: 1;
+ height: 1px;
+ display: flex;
+ .inverting-block{
+ flex-grow: 1;
+ width: 1px;
+ border-radius: 2px;
+ box-sizing: border-box;
+ border: 1px solid #dcdcdc;
+ display: flex;
+ flex-direction: column;
+ &>.title{
+ text-align: center;
+ background-color: #f0f8ff;
+ font-size: 1.5em;
+ padding: 4px 0;
+ border-bottom: 1px solid #dcdcdc;
+ }
+ &>.search-bar{
+ padding: 6px;
+ border-bottom: 1px solid #dcdcdc;
+ background-color: #fff;
+ }
+ &>.title,&>.search-bar{
+ flex-shrink: 0;
+ }
+ &>.list-box{
+ flex-grow: 1;
+ height: 1px;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue
new file mode 100644
index 0000000..decc099
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/DetailDrawer.vue
@@ -0,0 +1,170 @@
+<template>
+ <a-drawer
+ title="搴撲綅璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ :width="400"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+ <div class="wms-warehouse-location-view-detail-div">
+ <div class="btns-row">
+ <a-button type="primary" :disabled="locationObj.islock!==0" @click.stop="onUpdateLock">閿佸畾</a-button>
+ <a-button type="primary" :disabled="locationObj.islock===0" @click.stop="onUpdateLock">瑙i攣</a-button>
+ <a-button type="primary" :disabled="!(locationObj.islock!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+ </div>
+ <div class="location-detail-box">
+ <div class="base-info info-box">
+ <p>搴撲綅缂栧彿锛歿{locationObj.placeCode}}</p>
+ <p>鎵樼洏缂栧彿锛歿{containercode}}</p>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 start -->
+ <div class="location-materials">
+ <a-card v-for="(item,index) in materialList" :key="'material-item-'+index">
+ <div class="info-box">
+ <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+ <p>鎵规鍙凤細{{item.materialBatch}}</p>
+ <p>鏁伴噺锛歿{item.stockNumber}}</p>
+ </div>
+ </a-card>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 end -->
+ </div>
+ </div>
+ </a-spin>
+ </a-drawer>
+</template>
+
+<script>
+import { GetLocationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/LocationViewManage'
+export default {
+ name:'wmsWarehouseLocationViewDetailDrawer',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ locationObj:{
+ placestatus:null,
+ islock:null
+ },
+ containercode:'',
+ materialList:[],
+ actionFlag:false
+ }
+ },
+ methods:{
+ onClose(){
+ this.close()
+ },
+ close(){
+ this.$emit('update:visible',false)
+ },
+ afterVisibleChange(visible){
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow(){
+ this.loading = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ })
+ },
+ getLocationDetail(callback){
+ let params = {ID:this.row.id}
+ GetLocationDetail(params).then((d)=>{
+ this.locationObj = d.data.palceDetails || {}
+ this.containercode = d.data.containercode || ''
+ this.materialList = d.data.wmsMaterialStocks || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ afterClsoe(){
+ this.locationObj = {
+ placestatus:null,
+ islock:null
+ }
+ this.containercode = ''
+ this.materialList = []
+ if (this.actionFlag) {
+ this.$emit('callback')
+ }
+ this.actionFlag = false
+ },
+ onUpdateLock(){
+ this.loading = true;
+ let params = {ID:this.row.id}
+ UpdateLock(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ onUpdateEmpty(){
+ this.loading = true;
+ let params = {Id:this.row.id}
+ UpdateEmpty(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-warehouse-location-view-detail-div{
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ &>.btns-row{
+ flex-shrink: 0;
+ padding:12px 16px;
+ .ant-btn + .ant-btn {
+ margin-left: 10px;
+ }
+ }
+ .location-detail-box{
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .info-box{
+ line-height: 1.5;
+ p{
+ margin-bottom: 0;
+ }
+ }
+ .base-info,.location-materials{
+ padding:0 16px;
+ margin-bottom: 16px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue
new file mode 100644
index 0000000..a44058a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/SearchForm.vue
@@ -0,0 +1,152 @@
+<template>
+ <a-form layout="inline">
+ <a-form-item label="搴撳尯">
+ <a-select v-model="form.Areaid" class="slect-width" @change="onAreaChange">
+ <a-select-option v-for="(item,index) in selectList.areas" :key="'area-sel-'+index" :value="item.id">{{item.areaName}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="宸烽亾">
+ <a-select v-model="form.Aisleid" allowClear class="slect-width" @change="onAisleChange">
+ <a-select-option v-for="(item,index) in selectList.aisles" :key="'aisle-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-form-item>
+
+ <a-form-item label="鎺�">
+ <a-select v-model="form.Rowno" class="slect-width" allowClear>
+ <a-select-option v-for="(item,index) in selectList.rows" :key="'row-sel-'+index" :value="item">{{item}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item>
+ <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+ </a-form-item>
+ </a-form>
+</template>
+
+<script>
+import { GetArea, GetAisle,GetPalceRowno } from '@/api/modular/main/LocationViewManage'
+export default {
+ name:'wmsWarehouseLocationViewSearchCompontent',
+ emits:['update:loading','search'],
+ data(){
+ return {
+ loading:{
+ type:Boolean,
+ default:false
+ },
+ form:{
+ Areaid聽:null,
+ Rowno:null
+ },
+ selectList:{
+ areas:[],
+ rows:[]
+ }
+ }
+ },
+ methods:{
+ init(callback){
+ this.getSelectListAreas((f1)=>{
+ if (f1) {
+ callback && callback(true,{...this.form})
+ } else {
+ callback && callback(false)
+ }
+ })
+ },
+ getSelectListAreas(callback){
+ GetArea().then((d)=>{
+ this.selectList.areas = d.data || [];
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ if (this.selectList.areas.length>0) {
+ this.form.Areaid = this.selectList.areas[0].id
+ this.getSelectListAisles(()=>{
+ callback && callback(true)
+ })
+ } else {
+ this.form.Areaid = null
+ this.selectList.aisles = []
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.areas = []
+ this.selectList.aisles = []
+ this.selectList.rows = []
+ this.form.Areaid = null
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ getSelectListAisles(callback){
+ let params = {Areaid:this.form.Areaid}
+ GetAisle(params).then((d)=>{
+ this.selectList.aisles = d.data || [];
+ this.form.Rowno = null
+ if (this.selectList.aisles.length===1) {
+ this.form.Aisleid = this.selectList.aisles[0]
+ this.getSelectListRows(()=>{
+ callback && callback(true)
+ })
+ } else {
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.aisles = []
+ this.selectList.rows = []
+ this.form.Aisleid = null
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ getSelectListRows(callback){
+ let params = {Areaid:this.form.Areaid,Aisleid:this.form.Aisleid}
+ GetPalceRowno(params).then((d)=>{
+ this.selectList.rows = d.data || [];
+ if (this.selectList.rows.length===1) {
+ this.form.Rowno = this.selectList.rows[0]
+ callback && callback(true)
+ } else {
+ this.form.Rowno = null
+ callback && callback(true)
+ }
+ }).catch(()=>{
+ this.selectList.rows = []
+ this.form.Rowno = null
+ callback && callback(false)
+ })
+ },
+ onAreaChange() {
+ this.$emit('update:loading',true)
+ this.getSelectListAisles(()=>{
+ this.$emit('update:loading',false)
+ })
+ },
+ onAisleChange() {
+ this.$emit('update:loading',true)
+ this.getSelectListRows(()=>{
+ this.$emit('update:loading',false)
+ })
+ },
+ onSearch(){
+ if (!this.form.Areaid) {
+ this.$error({
+ title: '绯荤粺鎻愮ず',
+ content: '璇烽�夋嫨搴撳尯锛�',
+ });
+ return false;
+ }
+ this.$emit('search',{...this.form})
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+ width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue
new file mode 100644
index 0000000..74e71b1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/LocationView/index.vue
@@ -0,0 +1,375 @@
+锘�<template>
+ <!-- 搴撲綅瑙嗗浘 -->
+ <div class="wms-warehouse-location-view-page">
+ <a-spin :spinning="loading">
+ <div class="top-blcok">
+ <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+ </div>
+ <div class="containter-blcok">
+ <div class="example-tags">
+ <div class="tag">绌洪棽({{countNum.empty}})</div>
+ <div class="tag orange-tag">寰呭叆({{countNum.daiRu}})</div>
+ <div class="tag purple-tag">寰呭嚭({{countNum.daiChu}})</div>
+ <div class="tag primary-tag">瀛樿揣({{countNum.fill}})</div>
+ <div class="tag green-tag">绌烘墭({{countNum.kongtuo}})</div>
+ <div class="tag red-tag">閿佸畾({{countNum.lock}})</div>
+ </div>
+ <!-- 搴撳尯鏄剧ず鍖哄煙 start -->
+ <div class="locations-box">
+
+ <div class="location-items-group-block" v-for="(item1,index1) in list" :key="'location-block-'+index1">
+ <div class="block-title">绗瑊{item1.aisle}}宸烽亾</div>
+
+ <div class="location-items-group">
+ <div class="location-items-row" v-for="(item2,index2) in (item1.wareLocationRownoData || [])" :key="'location-row-'+index2">
+
+ <div class="location-items-layer" v-for="(item3,index3) in (item2.wareLocationLayerData || [])" :key="'location-layer-'+index3">
+ <div class="divider"></div>
+ <div class="location-item" v-for="(item4,index4) in (item3.wareLocationColumnNoData || [])" :key="'location-item-'+index4"
+ :class="[handleClass(item4)]"
+ @click="openDetail(item4)">
+ {{item4?item4.placeCode:''}}
+ </div>
+ <div class="divider-zero"></div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+
+ </div>
+ <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+ </div>
+ <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+ </a-spin>
+ </div>
+</template>
+
+<script>
+ import SearchForm from './SearchForm.vue'
+ import DetailDrawer from './DetailDrawer.vue'
+ import {
+ GetPalceList
+ } from '@/api/modular/main/LocationViewManage'
+import ItemVue from '@/components/AvatarList/Item.vue'
+ export default {
+ name: 'wmsWarehouseLocationViewPage',
+ components: {
+ SearchForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ detailVisible: false,
+ detailRow: {},
+ loading: false,
+ countNum: {
+ empty: 0,
+ daiRu: 0,
+ daiChu: 0,
+ fill: 0,
+ kongtuo:0,
+ lock: 0
+ },
+ list: [],
+ searchForm: {}
+ }
+ },
+ methods: {
+ handleClass(item4) {
+ let className = ''
+ if (item4) {
+ if (item4.islock) {
+ className = 'red-item'
+ } else if (item4.placeStatus === 3) {
+ if(item4.emptyContainer === 1){
+ className = 'green-item'
+ }else{
+ className = 'primary-item'
+ }
+ } else if (item4.placeStatus === 2) {
+ className = 'orange-item'
+ } else if (item4.placeStatus === 4) {
+ className = 'purple-item'
+ }
+ } else {
+ className = 'died-item'
+ }
+ return className
+ },
+
+ openDetail(obj) {
+ if (!obj) return false
+ this.detailRow = obj
+ this.detailVisible = true;
+ },
+ getList(params, callback) {
+ GetPalceList(params).then((d) => {
+ if (d.data) {
+ this.countNum = {
+ empty: d.data.emptyNum || 0,
+ daiRu: d.data.daiRuNum || 0,
+ daiChu: d.data.daichuNum || 0,
+ fill: d.data.materialNum || 0,
+ kongtuo: d.data.emptyContainerNum || 0,
+ lock: d.data.lockNum || 0
+ }
+ this.list = d.data.palceDetails || []
+ } else {
+ this.countNum = {
+ empty: 0,
+ daiRu: 0,
+ daiChu: 0,
+ fill: 0,
+ kongtuo:0,
+ lock: 0
+ }
+ this.list = []
+ }
+ callback && callback(true)
+ }).catch(() => {
+ callback && callback(false)
+ })
+ },
+ onSearch(valObj) {
+ this.loading = true
+ this.searchForm = valObj
+ this.getList(valObj, () => {
+ this.loading = false
+ })
+ },
+ lockCallback() {
+ this.loading = true
+ this.getList(this.searchForm, () => {
+ this.loading = false
+ })
+ },
+ init() {
+ this.loading = true
+ this.$refs.search.init((f, valObj) => {
+ this.loading = false
+ if (f) {
+ this.searchForm = valObj
+ this.getList(valObj, () => {
+ this.loading = false
+ })
+ } else {
+ this.loading = false
+ }
+ })
+ }
+ },
+ mounted() {
+ this.init()
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+ .wms-warehouse-location-view-page {
+ overflow: hidden;
+ display: flex;
+ overflow: auto;
+ background-color: #fff;
+ border-radius: 10px;
+ flex-direction: column;
+ height: 100%;
+
+ .top-blcok {
+ flex-shrink: 0;
+ padding: 10px 16px 16px 16px;
+ }
+
+ .containter-blcok {
+ flex-grow: 1;
+ height: 1px;
+ display: flex;
+ flex-direction: column;
+ @gray-color: #808080;
+ @danger-color: #ff3333;
+ @primary-color: #ccffff;
+ @orange-color: #ffa500;
+ @purple-color: #800080;
+ @green-color: #2cb228;
+ @border-color-x: #c0c0c0;
+
+ .example-tags {
+ flex-shrink: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 16px 16px 16px;
+
+ .tag {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 30px;
+ width: 100px;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: default;
+ background-color: @gray-color;
+
+ &+.tag {
+ margin-left: 10px;
+ }
+
+ &.red-tag {
+ background-color: @danger-color;
+ }
+
+ &.primary-tag {
+ background-color: @primary-color;
+ }
+
+ &.orange-tag {
+ background-color: @orange-color;
+ }
+
+ &.purple-tag {
+ background-color: @purple-color;
+ }
+ &.green-tag {
+ background-color: @green-color;
+ }
+ &:not(.primary-tag) {
+ color: #FFFFFF;
+ }
+ }
+ }
+
+ .locations-box {
+ flex-grow: 1;
+ height: 1px;
+ overflow: auto;
+
+ .location-items-group-block {
+ padding: 0 16px;
+ margin-bottom: 16px;
+ .block-title {
+ padding-bottom: 4px;
+ }
+ &:last-child{
+ margin-bottom: 0;
+ }
+ }
+
+ .location-items-group {
+ @padding-size:8px;
+
+ .location-items-row {
+ margin-bottom: 16px;
+ background-color: #f0f8ff;
+ overflow: auto;
+ padding: @padding-size 0;
+ display: flex;
+ flex-direction: column;
+
+ .location-items-layer{
+ flex-shrink: 0;
+ display: flex;
+ margin-bottom: @padding-size;
+ .divider{
+ width:@padding-size;
+ flex-shrink: 0;
+ }
+ .divider-zero{
+ width:1px;
+ flex-shrink: 0;
+ }
+ .location-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 120px;
+ height: 50px;
+ overflow: hidden;
+ white-space: nowrap;
+ margin-right: @padding-size;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: pointer;
+ flex-shrink: 0;
+ background-color: @gray-color;
+
+ &.active {
+ box-shadow: 0 0 4px #00ff00;
+ }
+
+ &.died-item {
+ background-color: #FFFFFF;
+ background-image: linear-gradient(
+ to top right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ ), linear-gradient(
+ to bottom right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ );
+ cursor: not-allowed;
+ }
+
+ &.red-item {
+ background-color: @danger-color;
+ }
+ &.green-item {
+ background-color: @green-color;
+ }
+
+ &.primary-item {
+ background-color: @primary-color;
+ }
+
+ &.orange-item {
+ background-color: @orange-color;
+ }
+
+ &.purple-item {
+ background-color: @purple-color;
+ }
+
+ &:not(.primary-item,.died-item) {
+ color: #FFFFFF;
+ }
+
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+
+
+ }
+ }
+ }
+ }
+ }
+</style>
+<style lang="less">
+ .wms-warehouse-location-view-page {
+
+ .ant-spin-nested-loading,
+ .ant-spin-container {
+ height: 100%;
+ }
+
+ .ant-spin-container {
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ }
+ }
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue
new file mode 100644
index 0000000..bb70802
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/addForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+ <a-modal
+ title="鏂板娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ PMFinishedOrderAdd,PMFinishedOrderLargeCategories,PMFinishedOrderSubclass
+ } from '@/api/modular/main/PMFinishedOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ getLargeCategoriesOptions(){
+ if (this.selectOptions.largeCategories.length<=0) {
+ PMFinishedOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ }
+ },
+ getSubclassOptions(id){
+ PMFinishedOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.form.resetFields(['orderSubclass'])
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.form.resetFields(['orderSubclass'])
+ },
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ this.$nextTick(() => {
+ this.getLargeCategoriesOptions()
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ PMFinishedOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue
new file mode 100644
index 0000000..acd3110
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/editForm.vue
@@ -0,0 +1,167 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫娉℃矏杞﹂棿瀹屽伐鍏ュ簱鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ PMFinishedOrderEdit,PMFinishedOrderLargeCategories,PMFinishedOrderSubclass
+ } from '@/api/modular/main/PMFinishedOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ record: {},
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ getLargeCategoriesOptions(){
+ if (this.selectOptions.largeCategories.length<=0) {
+ PMFinishedOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ }
+ },
+ getSubclassOptions(id,init=false){
+ PMFinishedOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ if (!init){
+ this.form.resetFields(['orderSubclass'])
+ }
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.form.resetFields(['orderSubclass'])
+ },
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ orderQuantity: record.orderQuantity,
+ areaName: record.areaName,
+ startingPosition: record.startingPosition,
+ targetPosition: record.targetPosition,
+ orderStatusEnum: record.orderStatusEnum
+ }
+ )
+ this.getLargeCategoriesOptions()
+ this.getSubclassOptions(record.orderLargeCategory,true)
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ PMFinishedOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue
new file mode 100644
index 0000000..0027f5e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/index.vue
@@ -0,0 +1,259 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator">
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板娉℃搏鍏ュ簱鍗�</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical"/>
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => PMFinishedOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { PMFinishedOrderPage, PMFinishedOrderDelete, PMFinishedOrderLargeCategories, PMFinishedOrderSubclass} from '@/api/modular/main/PMFinishedOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '璧峰浣嶇疆',
+ align: 'center',
+ dataIndex: 'startingPosition'
+ },
+ {
+ title: '鐩爣浣嶇疆',
+ align: 'center',
+ dataIndex: 'targetPosition'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatusEnum',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PMFinishedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ PMFinishedOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ PMFinishedOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ PMFinishedOrderDelete (record) {
+ PMFinishedOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue
new file mode 100644
index 0000000..f7f132d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PMFinishedOrder/infoBlock.vue
@@ -0,0 +1,114 @@
+<template>
+ <div class="pm-finished-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PMFinishedOrderDetailPage } from '@/api/modular/main/PMFinishedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'pmFinishedOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return PMFinishedOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.pm-finished-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue
new file mode 100644
index 0000000..f4e94ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/addForm.vue
@@ -0,0 +1,111 @@
+锘�<template>
+ <a-modal
+ title="鏂板浜х嚎閫�搴撶鐞�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鍙栬揣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彇璐т綅缃�" v-decorator="['pickupPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['returnReason']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ ProductionReturnedOrderAdd
+ } from '@/api/modular/main/ProductionReturnedOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ ProductionReturnedOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue
new file mode 100644
index 0000000..84213ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/editForm.vue
@@ -0,0 +1,132 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫浜х嚎閫�搴撶鐞�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鍙栬揣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彇璐т綅缃�" v-decorator="['pickupPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['returnReason']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ ProductionReturnedOrderEdit
+ } from '@/api/modular/main/ProductionReturnedOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ materialType: record.materialType,
+ orderQuantity: record.orderQuantity,
+ pickupPosition: record.pickupPosition,
+ areaName: record.areaName,
+ returnReason: record.returnReason
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ ProductionReturnedOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue
new file mode 100644
index 0000000..474935d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板浜х嚎閫�搴撶鐞�</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ProductionReturnedOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ ProductionReturnedOrderPage,
+ ProductionReturnedOrderDelete,
+ ProductionReturnedOrderLargeCategories,
+ ProductionReturnedOrderSubclass
+ } from '@/api/modular/main/ProductionReturnedOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鐗╂枡绉嶇被',
+ align: 'center',
+ dataIndex: 'materialType'
+ },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鍙栬揣浣嶇疆',
+ align: 'center',
+ dataIndex: 'pickupPosition'
+ },
+ {
+ title: '鐩爣浠撳簱鍚嶇О',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '閫�璐х悊鐢�',
+ align: 'center',
+ dataIndex: 'returnReason'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatusEnum',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return ProductionReturnedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ ProductionReturnedOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ ProductionReturnedOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ ProductionReturnedOrderDelete (record) {
+ ProductionReturnedOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue
new file mode 100644
index 0000000..dcf4827
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ProductionReturnedOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+ <div class="production-returned-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ProductionReturnedOrderDetailPage } from '@/api/modular/main/ProductionReturnedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'ProductionReturnedOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return ProductionReturnedOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.production-returned-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue
new file mode 100644
index 0000000..7cd956c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/index.vue
@@ -0,0 +1,303 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('PurchaseOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="璁㈠崟鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.purchaseOrderStatusEnum" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in purchaseOrderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="onReset">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator">
+ <a-button type="primary" icon="plus" @click="">ERP鑾峰彇</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="purchaseOrderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#00ffff':(text===3?'#0000ff':'#7fff00'))">{{ 'purchase_orderstatus' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="isFullOrderscopedSlots" slot-scope="text">
+ <a-tag :color="!!text?'#90ee90':'gray'">{{ 'number_yes_no' | dictType(text) }}</a-tag>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { PurchaseOrderPage, PurchaseOrderDelete, PurchaseOrderLargeCategories, PurchaseOrderSubclass } from '@/api/modular/main/PurchaseOrderManage'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '璁㈠崟鐘舵��',
+ align: 'center',
+ dataIndex: 'purchaseOrderStatusEnum',
+ scopedSlots: { customRender: 'purchaseOrderStatusEnumscopedSlots' }
+ },
+ // {
+ // title: '鍗曟嵁浼樺厛绾�',
+ // align: 'center',
+ // dataIndex: 'orderLevel'
+ // },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory'
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass'
+ // },
+ {
+ title: '鏀惰揣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatusEnum',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鍙戣揣鏃ユ湡',
+ align: 'center',
+ dataIndex: 'sendGoodsTime'
+ },
+ {
+ title: '浜よ揣鏃ユ湡',
+ align: 'center',
+ dataIndex: 'deliveryGoodsTime'
+ },
+ {
+ title: '渚涘簲鍟�',
+ align: 'center',
+ dataIndex: 'supplier'
+ },
+ {
+ title: '鎺ヨ揣浜�',
+ align: 'center',
+ dataIndex: 'receivingPerson'
+ },
+ {
+ title: '鐢佃瘽鑱旂郴浜�',
+ align: 'center',
+ dataIndex: 'phoneNumber'
+ },
+ {
+ title: '鏀惰揣鍦板潃',
+ align: 'center',
+ dataIndex: 'address'
+ },
+ {
+ title: '杩愯緭鍏徃',
+ align: 'center',
+ dataIndex: 'transportationCompany'
+ },
+ {
+ title: '杩愯緭鍗曞彿',
+ align: 'center',
+ dataIndex: 'transportationOrderNo'
+ },
+ {
+ title: '鍙栨秷鍘熷洜',
+ align: 'center',
+ dataIndex: 'reasonForCancellation'
+ },
+ {
+ title: '鏁村崟鏀惰揣',
+ align: 'center',
+ dataIndex: 'isFullOrder',
+ scopedSlots: { customRender: 'isFullOrderscopedSlots' }
+ },
+ {
+ title: '璐т富缂栧彿',
+ align: 'center',
+ dataIndex: 'shipperOrder'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PurchaseOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ purchaseOrderStatusEnumData: [],
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ this.purchaseOrderStatusEnumData = this.$options.filters['dictData']('purchase_orderstatus')
+ this.orderStatusEnumData = this.$options.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onReset(){
+ this.queryParam = {}
+ this.selectOptions.subclasses = []
+ },
+ getLargeCategoriesOptions(){
+ PurchaseOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ PurchaseOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ PurchaseOrderDelete (record) {
+ PurchaseOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue
new file mode 100644
index 0000000..f0c2262
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseOrder/infoBlock.vue
@@ -0,0 +1,128 @@
+<template>
+ <div class="les-purchase-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PurchaseOrderDetailPage } from '@/api/modular/main/PurchaseOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'lesPurchaseOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ // { title: '鐗╂枡ID', align:'center', dataIndex: 'materialId', key: 'materialId' },
+ { title: '鐗╂枡缂栫爜', align:'center', dataIndex: 'materialCode', key: 'materialCode' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ // { title: '鐗╂枡鐗堟湰', align:'center', dataIndex: 'materialVersion', key: 'materialVersion' },
+ { title: '鐗╂枡绫诲埆', align:'center', dataIndex: 'materialType', key: 'materialType' },
+ { title: '灏哄', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '瀵嗗害', align:'center', dataIndex: 'materialDensity', key: 'materialDensity' },
+ { title: '鍗曚綅', align:'center', dataIndex: 'unitType', key: 'unitType' },
+ { title: '澶囨敞', align:'center', dataIndex: 'remarks', key: 'remarks' },
+ { title: '鏄惁鎵嬪伐鎷h揣', align:'center', dataIndex: 'isManualPicking', key: 'isManualPicking' },
+ { title: '璁㈣揣鏁�', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' },
+ // { title: '鍛ㄨ浆瑙勫垯', align:'center', dataIndex: 'turnoverRules', key: 'turnoverRules' },
+ // { title: '鍒嗛厤瑙勫垯', align:'center', dataIndex: 'allocationRules', key: 'allocationRules' },
+ { title: '璁″垝鏁�', align:'center', dataIndex: 'planQuantity', key: 'planQuantity' },
+ { title: '鍒嗛厤鏁�', align:'center', dataIndex: 'allocationQuantity', key: 'allocationQuantity' },
+ { title: '鎷h揣鏁�', align:'center', dataIndex: 'pickingQuantity', key: 'pickingQuantity' },
+ { title: '鍙戣揣鏁�', align:'center', dataIndex: 'sendGoodsQuantity', key: 'sendGoodsQuantity' },
+ { title: '鍙戣揣浜�', align:'center', dataIndex: 'shipperMan', key: 'shipperMan' },
+ { title: '妫�楠岀粨鏋�', align:'center', dataIndex: 'inspectionResults', key: 'inspectionResults' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.PurchaseOrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return PurchaseOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.les-purchase-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue
new file mode 100644
index 0000000..7ff3878
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/addForm.vue
@@ -0,0 +1,322 @@
+锘�<template>
+ <a-modal
+ :title="(type==='modify'?'淇敼':'鏂板')+'閲囪喘鏀惰揣'"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ :confirmLoading="confirmLoading"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="purchase-receive-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['purchaseReceiveOrderOrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24" v-if="type==='add'">
+ <a-form-item label="閲囪喘鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-decorator="['purchaseOrderNo',{rules:[{required:true,message:'璇烽�夋嫨閲囪喘鍗曞彿锛�'}]}]" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.purchaseOrders" :key="index" :value="item.purchaseOrderNo">{{ item.purchaseOrderNo }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24" v-else>
+ <a-form-item label="閲囪喘鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['purchaseOrderNo']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+ 娣诲姞鐗╂枡
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <template v-if="th">
+ <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.receiveQuantity" :min="0" />
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </template>
+
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" :query-order-no="chooseOrderNo" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ PurchaseReceiveOrderAdd,
+ GetBillNumber,
+ GetPurchaseOrders,
+ PurchaseReceiveOrderDetailPage,
+ PurchaseReceiveOrderEditDetailNumber
+ } from '@/api/modular/main/PurchaseReceiveOrderManage'
+ import ChooseModal from './chooseMaterials.vue'
+ export default {
+ components:{ChooseModal},
+ props:{
+ type:{
+ type:String,
+ default:''
+ }
+ },
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ selectOptions:{
+ purchaseOrders:[]
+ },
+ th:0,
+ tableKey:'materialNo',
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 }
+ ],
+ columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+ columnB:{ title: '鏀惰揣鏁�', key: 'receiveQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'},
+ columnsAdd:[],
+ columnsEdit:[],
+ chooseVisible:false,
+ chooseOrderNo:''
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ if (this.type==='modify') {
+ let _arr = [...this.columns]
+ _arr.push(this.columnB)
+ this.columnsEdit = _arr
+ this.getEditInitData(record)
+ } else {
+ let _arr = [...this.columns]
+ _arr.push(this.columnA)
+ this.columnsAdd = _arr
+ this.getAddInitData()
+ }
+ });
+ },
+ getAddInitData(){
+ this.confirmLoading = true;
+ Promise.all([
+ GetBillNumber(),
+ GetPurchaseOrders()
+ ]).then(response=>{
+ let formData = {
+ purchaseReceiveOrderOrderNo:(response[0].data.orderNo || '')
+ }
+ this.selectOptions.purchaseOrders = response[1].data || []
+ if (this.selectOptions.purchaseOrders.length===1){
+ formData.purchaseOrderNo = this.selectOptions.purchaseOrders[0].purchaseOrderNo
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = false;
+ }).catch((err)=>{
+ this.confirmLoading = false;
+ })
+ },
+ getEditInitData(record){
+ let formData = {
+ purchaseReceiveOrderOrderNo:record.orderNo,
+ purchaseOrderNo:record.receiveOrderNo
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = true;
+ let params = {
+ Id:record.id,
+ PageNo:1,
+ PageSize:999
+ }
+ PurchaseReceiveOrderDetailPage(params).then((d)=>{
+ this.list = d.data.rows || []
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ let _obj = {...item}
+ _obj.orderQuantity = 0
+ _obj.requireTime = ''
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(newArr,this.list)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ interalNumberValidate(val){
+ let res = 0
+ if (!val) {
+ res = 1 //鏁伴噺蹇呭~涓斿ぇ浜�0
+ } else if (Number(val)!==parseInt(val)) {
+ res = 2 //鍙兘鏄暣鏁�
+ }
+ return res
+ },
+ checkBeforeSubmit() {
+ let res = true, msg = '';
+ if (this.type==='modify') {
+ for (let i=0;i<this.list.length;i++) {
+ let numberTag = this.interalNumberValidate(this.list[i].receiveQuantity)
+ if (numberTag!==0) {
+ res = false
+ if (numberTag===1) {
+ msg = `绗�${i+1}琛岋紝鏀惰揣鏁板繀濉笖澶т簬0锛乣
+ } else if (numberTag===2) {
+ msg = `绗�${i+1}琛岋紝鏀惰揣鏁板彧鑳芥槸鏁存暟锛乣
+ }
+ break;
+ }
+ }
+ }
+ if (!res) {
+ this.$message.warning(msg);
+ }
+ return res
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ onSubmit () {
+ const { form: { validateFields } } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ let f = this.checkBeforeSubmit()
+ if (f) {
+ this.confirmLoading = true
+ this.handleSubmit(values,(fx)=>{
+ if (fx) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ }
+ }
+ })
+ },
+ handleSubmit(values,callback){
+ this.confirmLoading = true
+ if (this.type==='modify') {
+ this.handleSubmitModify(callback)
+ } else {
+ this.handleSubmitAdd(values,callback)
+ }
+ },
+ handleSubmitAdd(values,callback){
+ let params = {...values,...{purchaseReceiveOrderDetailList:this.list}}
+ PurchaseReceiveOrderAdd(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleSubmitModify(callback){
+ let params = [...this.list]
+ PurchaseReceiveOrderEditDetailNumber(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.list = []
+ this.visible = false
+ },
+ openChoose(){
+ this.form.validateFields(['purchaseOrderNo'],(errors, values) =>{
+ if (!errors){
+ this.chooseOrderNo = values.purchaseOrderNo
+ this.chooseVisible = true
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue
new file mode 100644
index 0000000..bdf4bef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/chooseMaterials.vue
@@ -0,0 +1,254 @@
+<template>
+ <a-modal
+ title="鐗╂枡閫夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="purchase-receive-choose-modal-content">
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { GetCouldReceiveMaterials } from '@/api/modular/main/PurchaseReceiveOrderManage'
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ queryOrderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ queried:{...pagination},
+ tableKey:'materialNo',
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '閫佽揣鏁�', dataIndex: 'deliverQuantity', key: 'deliverQuantity', width: 180 },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.newQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.queried = {...pagination}
+ },
+ newQuery(){
+ this.queried = {...pagination}
+ this.queried.purchaseOrderNo = this.queryOrderNo
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ GetCouldReceiveMaterials(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i][this.tableKey] === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ arr.push(item[this.tableKey])
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-choose-modal-content{
+ height: 50vh;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding: 16px 16px 0 16px;
+ .table-box{
+ height: 100%;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue
new file mode 100644
index 0000000..2b8b684
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/index.vue
@@ -0,0 +1,229 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator">
+ <a-button type="primary" icon="plus" @click="onNew()">鏂板閲囪喘鏀惰揣</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'purchase_receive_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="onEdit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => PurchaseReceiveOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" :type="formType" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ PurchaseReceiveOrderPage,
+ PurchaseReceiveOrderDelete
+ } from '@/api/modular/main/PurchaseReceiveOrderManage'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鐗╂枡绉嶇被',
+ align: 'center',
+ dataIndex: 'materialType'
+ },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '瀹為檯鏀惰揣鏁�',
+ align: 'center',
+ dataIndex: 'receiveQuantity'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '渚涘簲鍟�',
+ align: 'center',
+ dataIndex: 'supplier'
+ },
+ {
+ title: '閲囪喘鍗曞彿',
+ align: 'center',
+ dataIndex: 'receiveOrderNo'
+ },
+ {
+ title: '閫佽揣鍗曞彿',
+ align: 'center',
+ dataIndex: 'deliverOrderNo'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'purchaseReceiveEnum'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PurchaseReceiveOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('purchase_receive_status')
+ },
+ methods: {
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onNew(){
+ this.formType = 'add'
+ this.$refs.addForm.init()
+ },
+ onEdit(obj){
+ this.formType = 'modify'
+ this.$refs.addForm.init(obj)
+ },
+ clearInfo(){
+ this.infoId = null
+ this.infoOrderNo = ''
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ PurchaseReceiveOrderDelete (record) {
+ PurchaseReceiveOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.clearInfo()
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ if (this.formType==='modify'){
+ this.infoId = null
+ this.$nextTick(()=>{
+ this.$refs.table.refresh()
+ })
+ } else {
+ this.$refs.table.refresh()
+ }
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue
new file mode 100644
index 0000000..7113431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/PurchaseReceiveOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+ <div class="purchase-receive-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PurchaseReceiveOrderDetailPage } from '@/api/modular/main/PurchaseReceiveOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'purchaseReceiveOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'MaterialBath' },
+ { title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+ { title: '閫佽揣鏁�', align:'center', dataIndex: 'deliverQuantity', key: 'deliverQuantity' },
+ { title: '瀹為檯鏀惰揣鏁�', align:'center', dataIndex: 'receiveQuantity', key: 'receiveQuantity' },
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return PurchaseReceiveOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.purchase-receive-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/README.md b/iWare_RawMaterialWarehouse_Web/src/views/main/README.md
new file mode 100644
index 0000000..fadf99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/README.md
@@ -0,0 +1 @@
+/** 鎮ㄧ殑涓氬姟鎺ュ彛鏂囦欢鍏ㄥ啓鍦ㄦ鏂囦欢澶逛笅闈紝鍗囩骇搴曞骇鐩存帴杩佺Щ浠g爜鍗冲彲 **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue
new file mode 100644
index 0000000..87a0d80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/addForm.vue
@@ -0,0 +1,128 @@
+锘�<template>
+ <a-modal
+ title="鏂板棰嗘枡鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="鍙枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彨鏂欎汉" v-decorator="['takeMaterialName']" />
+ </a-form-item>
+ <a-form-item label="鍙枡宸ヤ綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彨鏂欏伐浣�" v-decorator="['callMaterialStation']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐т粨搴�" v-decorator="['shippingWarehouse']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏀惰揣鏃堕棿" v-decorator="['shippingTime']" @change="onChangeshippingTime"/>
+ </a-form-item>
+ <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ彮缁�" v-decorator="['teams']" />
+ </a-form-item>
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+ </a-form-item>
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+ </a-form-item>
+ <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+ </a-form-item>
+ <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍙�" v-decorator="['warehouseNo']" />
+ </a-form-item>
+ <a-form-item label="宸ュ崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-decorator="['workOrderNo']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ ReceiveMaterialOrderAdd
+ } from '@/api/modular/main/ReceiveMaterialOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ shippingTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.shippingTime = this.shippingTimeDateString
+ ReceiveMaterialOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangeshippingTime(date, dateString) {
+ this.shippingTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue
new file mode 100644
index 0000000..8044b2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/editForm.vue
@@ -0,0 +1,159 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫棰嗘枡鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="鍙枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彨鏂欎汉" v-decorator="['takeMaterialName']" />
+ </a-form-item>
+ <a-form-item label="鍙枡宸ヤ綅" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彨鏂欏伐浣�" v-decorator="['callMaterialStation']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐т粨搴�" v-decorator="['shippingWarehouse']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏀惰揣鏃堕棿" v-decorator="['shippingTime']" @change="onChangeshippingTime"/>
+ </a-form-item>
+ <a-form-item label="鐝粍" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ彮缁�" v-decorator="['teams']" />
+ </a-form-item>
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鍒掑彿" v-decorator="['planNo']" />
+ </a-form-item>
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐绋嬪彿" v-decorator="['projectNo']" />
+ </a-form-item>
+ <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ埞鍙�" v-decorator="['shipNo']" />
+ </a-form-item>
+ <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍙�" v-decorator="['warehouseNo']" />
+ </a-form-item>
+ <a-form-item label="宸ュ崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐鍗曞彿" v-decorator="['workOrderNo']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ ReceiveMaterialOrderEdit
+ } from '@/api/modular/main/ReceiveMaterialOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ shippingTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderQuantity: record.orderQuantity,
+ areaName: record.areaName,
+ takeMaterialName: record.takeMaterialName,
+ callMaterialStation: record.callMaterialStation,
+ shippingWarehouse: record.shippingWarehouse,
+ teams: record.teams,
+ planNo: record.planNo,
+ projectNo: record.projectNo,
+ shipNo: record.shipNo,
+ warehouseNo: record.warehouseNo,
+ workOrderNo: record.workOrderNo,
+ remarks: record.remarks
+ }
+ )
+ })
+ this.form.getFieldDecorator('shippingTime', { initialValue: moment(record.shippingTime, 'YYYY-MM-DD') })
+ this.shippingTimeDateString = moment(record.shippingTime).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.shippingTime = this.shippingTimeDateString
+ this.record.shippingTime = this.shippingTimeDateString
+ ReceiveMaterialOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangeshippingTime(date, dateString) {
+ this.shippingTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue
new file mode 100644
index 0000000..1fa5b0d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/index.vue
@@ -0,0 +1,261 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" >
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ彂璐т粨搴�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐝粍">
+ <a-input v-model="queryParam.teams" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ョ▼鍙�">
+ <a-input v-model="queryParam.projectNo" allow-clear placeholder="璇疯緭鍏ュ伐绋嬪彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑸瑰彿">
+ <a-input v-model="queryParam.shipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ュ崟鍙�">
+ <a-input v-model="queryParam.workOrderNo" allow-clear placeholder="璇疯緭鍏ュ伐鍗曞彿"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板棰嗘枡鍗�</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ReceiveMaterialOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { ReceiveMaterialOrderPage, ReceiveMaterialOrderDelete } from '@/api/modular/main/ReceiveMaterialOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鍙戣揣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍙枡浜�',
+ align: 'center',
+ dataIndex: 'takeMaterialName'
+ },
+ {
+ title: '鍙枡宸ヤ綅',
+ align: 'center',
+ dataIndex: 'callMaterialStation'
+ },
+ {
+ title: '鏀惰揣浠撳簱',
+ align: 'center',
+ dataIndex: 'shippingWarehouse'
+ },
+ {
+ title: '鏀惰揣鏃堕棿',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'shippingTime'
+ },
+ {
+ title: '鐝粍',
+ align: 'center',
+ dataIndex: 'teams'
+ },
+ {
+ title: '璁″垝鍙�',
+ align: 'center',
+ dataIndex: 'planNo'
+ },
+ {
+ title: '宸ョ▼鍙�',
+ align: 'center',
+ dataIndex: 'projectNo'
+ },
+ {
+ title: '鑸瑰彿',
+ align: 'center',
+ dataIndex: 'shipNo'
+ },
+ {
+ title: '浠撳彿',
+ align: 'center',
+ dataIndex: 'warehouseNo'
+ },
+ {
+ title: '宸ュ崟鍙�',
+ align: 'center',
+ dataIndex: 'workOrderNo'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return ReceiveMaterialOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ ReceiveMaterialOrderDelete (record) {
+ ReceiveMaterialOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue
new file mode 100644
index 0000000..012c9c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ReceiveMaterialOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+ <div class="receive-material-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ReceiveMaterialOrderDetailPage } from '@/api/modular/main/ReceiveMaterialOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'receiveMaterialOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鐗╂枡瀵嗗害', align:'center', dataIndex: 'materialSensity', key: 'materialSensity' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return ReceiveMaterialOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.receive-material-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue
new file mode 100644
index 0000000..cb8cd31
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/addForm.vue
@@ -0,0 +1,342 @@
+锘�<template>
+ <a-modal
+ :title="(type==='modify'?'淇敼':'鏂板')+'閿�鍞嚭搴�'"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ :confirmLoading="confirmLoading"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="sales-stock-out-bound-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['orderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select :disabled="type==='modify'" style="width: 100%" v-decorator="['areaId',{rules:[{required:true,message:'璇烽�夋嫨鏀惰揣浠撳簱锛�'}]}]" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in areaOptions" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['customer']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['shippingAddress']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['planNo']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ョ▼鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['projectNo']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑸瑰彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['shipNo']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input :disabled="type==='modify'" v-decorator="['warehouseNo']" placeholder="璇疯緭鍏�..." />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+ 娣诲姞鍑哄簱鏄庣粏
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <template v-if="th">
+ <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </template>
+
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SalesStockOutboundOrderAdd,
+ GetBillNumber,
+ SalesStockOutboundOrderEditDetailNumber,
+ SalesStockOutboundOrderDetailPage
+ } from '@/api/modular/main/SalesStockOutboundOrderManage'
+ import ChooseModal from './chooseMaterials.vue'
+ export default {
+ components:{ChooseModal},
+ props:{
+ type:{
+ type:String,
+ default:''
+ },
+ areaOptions:{
+ type:Array,
+ default:function(){
+ return []
+ }
+ }
+ },
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ th:0,
+ tableKey:'materialNo',
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '鏁伴噺', key: 'orderDetailQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'}
+ ],
+ columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+ columnsAdd:[],
+ columnsEdit:[],
+ chooseVisible:false
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ if (this.type==='modify') {
+ let _arr = [...this.columns]
+ this.columnsEdit = _arr
+ this.getEditInitData(record)
+ } else {
+ let _arr = [...this.columns]
+ _arr.push(this.columnA)
+ this.columnsAdd = _arr
+ this.getAddInitData()
+ }
+ });
+ },
+ getAddInitData(){
+ this.confirmLoading = true;
+ GetBillNumber().then(d=>{
+ let formData = {
+ orderNo:(d.data.orderNo || '')
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = false;
+ }).catch((err)=>{
+ this.confirmLoading = false;
+ })
+ },
+ getEditInitData(record){
+ let formData = {
+ orderNo:record.orderNo,
+ areaId:record.areaId,
+ customer:record.customer,
+ shippingAddress:record.shippingAddress,
+ planNo:record.planNo,
+ shipNo:record.shipNo,
+ projectNo:record.projectNo,
+ warehouseNo:record.warehouseNo
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = true;
+ let params = {
+ Id:record.id,
+ PageNo:1,
+ PageSize:999
+ }
+ SalesStockOutboundOrderDetailPage(params).then((d)=>{
+ this.list = d.data.rows || []
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ let _obj = {...item}
+ _obj.orderQuantity = 0
+ _obj.requireTime = ''
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(newArr,this.list)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ interalNumberValidate(val){
+ let res = 0
+ if (!val) {
+ res = 1 //鏁伴噺蹇呭~涓斿ぇ浜�0
+ } else if (Number(val)!==parseInt(val)) {
+ res = 2 //鍙兘鏄暣鏁�
+ }
+ return res
+ },
+ openChoose(){
+ this.chooseVisible = true
+ },
+ checkBeforeSubmit() {
+ let res = true, msg = '';
+ for (let i=0;i<this.list.length;i++) {
+ let numberTag = this.interalNumberValidate(this.list[i].orderDetailQuantity)
+ if (numberTag!==0) {
+ res = false
+ if (numberTag===1) {
+ msg = `绗�${i+1}琛岋紝鏁伴噺蹇呭~涓斿ぇ浜�0锛乣
+ } else if (numberTag===2) {
+ msg = `绗�${i+1}琛岋紝鏁伴噺鍙兘鏄暣鏁帮紒`
+ }
+ break;
+ }
+ }
+ if (!res) {
+ this.$message.warning(msg);
+ }
+ return res
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ onSubmit () {
+ const { form: { validateFields } } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ let f = this.checkBeforeSubmit()
+ if (f) {
+ this.confirmLoading = true
+ this.handleSubmit(values,(fx)=>{
+ if (fx) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ }
+ }
+ })
+ },
+ handleSubmit(values,callback){
+ this.confirmLoading = true
+ if (this.type==='modify') {
+ this.handleSubmitModify(callback)
+ } else {
+ this.handleSubmitAdd(values,callback)
+ }
+ },
+ handleSubmitAdd(values,callback){
+ let params = {...values,...{addSalesStockOutboundOrderInputDetails:this.list}}
+ SalesStockOutboundOrderAdd(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleSubmitModify(callback){
+ let params = [...this.list]
+ SalesStockOutboundOrderEditDetailNumber(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.list = []
+ this.visible = false
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue
new file mode 100644
index 0000000..7e4eff2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/chooseMaterials.vue
@@ -0,0 +1,322 @@
+<template>
+ <a-modal
+ title="閿�鍞嚭搴撴槑缁嗛�夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="sales-stock-out-bound-choose-modal-content">
+ <div class="choose-bar">
+ <div class="choose-form-view">
+ <a-form layout="inline">
+ <a-row>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialNo" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialName" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+ <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="choose-btns-view">
+ <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+ <a-button @click.stop="onReset">閲嶇疆</a-button>
+ </div>
+ </div>
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { GetCouldOutMaterials } from '@/api/modular/main/SalesStockOutboundOrderManage'
+const defaultQuery = {
+ MaterialType:undefined,
+ MaterialBatch:'',
+ MaterialNo:'',
+ MaterialName:''
+}
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ types:[],
+ query:{...defaultQuery},
+ queried:{...pagination},
+ tableKey:'materialNo',
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ this.types = this.$options.filters['dictData']('material_type')
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.resetQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.queried = {...pagination}
+ },
+ onQuery(){
+ this.newQuery()
+ },
+ onReset(){
+ this.resetQuery()
+ },
+ resetQuery(){
+ this.query = {...defaultQuery}
+ this.newQuery()
+ },
+ newQuery(){
+ this.queried = {...this.query,...pagination}
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ GetCouldOutMaterials(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i][this.tableKey] === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ arr.push(item[this.tableKey])
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-choose-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .choose-bar{
+ flex-shrink: 0;
+ padding: 8px 4px;
+ display: flex;
+ .choose-form-view{
+ flex-grow: 1;
+ }
+ .choose-btns-view{
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+ }
+ .table-box{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+ .ant-form-inline{
+ .ant-form-item {
+ margin-right: 0;
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue
new file mode 100644
index 0000000..d711588
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/index.vue
@@ -0,0 +1,314 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑哄簱鍗曞彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣浠撳簱">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.AreaId" placeholder="璇烽�夋嫨鍙戣揣浠撳簱">
+ <a-select-option v-for="(item,index) in selectOptions.areas" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈡埛">
+ <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ュ鎴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣鍦板潃">
+ <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑸瑰彿">
+ <a-input v-model="queryParam.shipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ョ▼鍙�">
+ <a-input v-model="queryParam.projectNo" allow-clear placeholder="璇疯緭鍏ュ伐绋嬪彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳彿">
+ <a-input v-model="queryParam.warehouseNo" allow-clear placeholder="璇疯緭鍏ヤ粨鍙�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="onNew">鏂板閿�鍞嚭搴�</a-button>
+ <a-button type="danger" icon="step-forward" :disabled="!selectedRowKeys.length" @click="onMulDistribute">涓嬪彂</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="onEdit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a @click="onDistribute(record)">涓嬪彂</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SalesStockOutboundOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" :type="formType" :area-options="selectOptions.areas" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ SalesStockOutboundOrderPage,
+ SalesStockOutboundOrderDelete,
+ SalesStockOutboundOrderGetAreas,
+ SalesStockOutboundOrderMulDistribute
+ } from '@/api/modular/main/SalesStockOutboundOrderManage'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ areas:[]
+ },
+ columns: [
+ {
+ title: '鍑哄簱鍗曞彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鍙戣揣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '瀹㈡埛',
+ align: 'center',
+ dataIndex: 'customer'
+ },
+ {
+ title: '鏀惰揣鍦板潃',
+ align: 'center',
+ dataIndex: 'shippingAddress'
+ },
+ {
+ title: '璁″垝鍙�',
+ align: 'center',
+ dataIndex: 'planNo'
+ },
+ {
+ title: '鑸瑰彿',
+ align: 'center',
+ dataIndex: 'shipNo'
+ },
+ {
+ title: '宸ョ▼鍙�',
+ align: 'center',
+ dataIndex: 'projectNo'
+ },
+ {
+ title: '浠撳彿',
+ align: 'center',
+ dataIndex: 'warehouseNo'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return SalesStockOutboundOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ this.selectedRowKeys = []
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ selectedRowKeys: [],
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getAreas()
+ },
+ methods: {
+ onNew(){
+ this.formType = 'add'
+ this.$refs.addForm.init()
+ },
+ onEdit(obj){
+ this.formType = 'modify'
+ this.$refs.addForm.init(obj)
+ },
+ getAreas(){
+ SalesStockOutboundOrderGetAreas().then(d=>{
+ this.selectOptions.areas = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ SalesStockOutboundOrderDelete (record) {
+ SalesStockOutboundOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.infoId = null
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+ onMulDistribute(){
+ this.dealDistribute(this.selectedRowKeys)
+ },
+ onDistribute(obj){
+ this.dealDistribute([obj.id])
+ },
+ dealDistribute(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDistribute(ids,(f)=>{
+ if (f) {
+ if (this.infoId && ids.indexOf(this.infoId)>=0) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleDistribute(ids,callback){
+ this.$loading.show()
+ SalesStockOutboundOrderMulDistribute(ids).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue
new file mode 100644
index 0000000..a5111f6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockOutboundOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+ <div class="sales-stock-out-bound-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SalesStockOutboundOrderDetailPage } from '@/api/modular/main/SalesStockOutboundOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'SalesStockOutBoundOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return SalesStockOutboundOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-out-bound-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..425efbc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/addForm.vue
@@ -0,0 +1,328 @@
+锘�<template>
+ <a-modal
+ :title="(type==='modify'?'淇敼':'鏂板')+'閿�鍞��搴�'"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ :confirmLoading="confirmLoading"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="sales-stock-return-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['salesStockReturnOrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24" v-if="type==='add'">
+ <a-form-item label="鍑哄簱鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-decorator="['salesStockOutboundOrderNo',{rules:[{required:true,message:'璇烽�夋嫨鍑哄簱鍗曟嵁锛�'}]}]" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.outOrders" :key="index" :value="item.salesStockOutboundOrderNo">{{ item.salesStockOutboundOrderNo }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24" v-else>
+ <a-form-item label="鍑哄簱鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['salesStockOutboundOrderNo']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" :disabled="type==='modify'" @click="openChoose">
+ 娣诲姞鐗╂枡
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <template v-if="th">
+ <a-table v-if="type==='modify'" :data-source="list" :columns="columnsEdit" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ <a-table v-else :data-source="list" :columns="columnsAdd" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.orderDetailQuantity" :min="0" />
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </template>
+
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" :query-order-no="chooseOrderNo" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="onSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SalesStockReturnOrderAdd,
+ GetBillNumber,
+ GetStockOuts,
+ SalesStockReturnOrderDetailPage,
+ SalesStockReturnOrderEditDetailNumber
+ } from '@/api/modular/main/SalesStockReturnOrderManage'
+ import ChooseModal from './chooseMaterials.vue'
+ export default {
+ components:{ChooseModal},
+ props:{
+ type:{
+ type:String,
+ default:''
+ }
+ },
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ selectOptions:{
+ outOrders:[]
+ },
+ th:0,
+ tableKey:'materialNo',
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 },
+ { title: '閫�璐ф暟', key: 'orderDetailQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'}
+ ],
+ columnA:{ title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }},
+ columnsAdd:[],
+ columnsEdit:[],
+ chooseVisible:false,
+ chooseOrderNo:''
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ if (this.type==='modify') {
+ let _arr = [...this.columns]
+ this.columnsEdit = _arr
+ this.getEditInitData(record)
+ } else {
+ let _arr = [...this.columns]
+ _arr.push(this.columnA)
+ this.columnsAdd = _arr
+ this.getAddInitData()
+ }
+ });
+ },
+ getAddInitData(){
+ this.confirmLoading = true;
+ Promise.all([
+ GetBillNumber(),
+ GetStockOuts()
+ ]).then(response=>{
+ let formData = {
+ salesStockReturnOrderNo:(response[0].data.orderNo || '')
+ }
+ this.selectOptions.outOrders = response[1].data || []
+ if (this.selectOptions.outOrders.length===1){
+ formData.salesStockOutboundOrderNo = this.selectOptions.outOrders[0].salesStockOutboundOrderNo
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = false;
+ }).catch((err)=>{
+ this.confirmLoading = false;
+ })
+ },
+ getEditInitData(record){
+ let formData = {
+ salesStockReturnOrderNo:record.orderNo,
+ salesStockOutboundOrderNo:record.saleOrderNo
+ }
+ this.form.setFieldsValue(formData)
+ this.confirmLoading = true;
+ let params = {
+ Id:record.id,
+ PageNo:1,
+ PageSize:999
+ }
+ SalesStockReturnOrderDetailPage(params).then((d)=>{
+ this.list = d.data.rows || []
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ let _obj = {...item}
+ _obj.orderQuantity = 0
+ _obj.requireTime = ''
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(newArr,this.list)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ interalNumberValidate(val){
+ let res = 0
+ if (!val) {
+ res = 1 //鏁伴噺蹇呭~涓斿ぇ浜�0
+ } else if (Number(val)!==parseInt(val)) {
+ res = 2 //鍙兘鏄暣鏁�
+ }
+ return res
+ },
+ checkBeforeSubmit() {
+ let res = true, msg = '';
+ for (let i=0;i<this.list.length;i++) {
+ let numberTag = this.interalNumberValidate(this.list[i].orderDetailQuantity)
+ if (numberTag!==0) {
+ res = false
+ if (numberTag===1) {
+ msg = `绗�${i+1}琛岋紝閫�璐ф暟蹇呭~涓斿ぇ浜�0锛乣
+ } else if (numberTag===2) {
+ msg = `绗�${i+1}琛岋紝閫�璐ф暟鍙兘鏄暣鏁帮紒`
+ }
+ break;
+ }
+ if (res && this.list[i].orderDetailQuantity > this.list[i].orderOutDetailQuantity) {
+ res = false
+ msg = `绗�${i+1}琛岋紝閫�璐ф暟涓嶈兘澶т簬鍑哄簱鏁帮紒`
+ break;
+ }
+ }
+ if (!res) {
+ this.$message.warning(msg);
+ }
+ return res
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ onSubmit () {
+ const { form: { validateFields } } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ let f = this.checkBeforeSubmit()
+ if (f) {
+ this.confirmLoading = true
+ this.handleSubmit(values,(fx)=>{
+ if (fx) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ }
+ }
+ })
+ },
+ handleSubmit(values,callback){
+ this.confirmLoading = true
+ if (this.type==='modify') {
+ this.handleSubmitModify(callback)
+ } else {
+ this.handleSubmitAdd(values,callback)
+ }
+ },
+ handleSubmitAdd(values,callback){
+ let params = {...values,...{salesStockReturnOrderDetailList:this.list}}
+ SalesStockReturnOrderAdd(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleSubmitModify(callback){
+ let params = [...this.list]
+ SalesStockReturnOrderEditDetailNumber(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.list = []
+ this.visible = false
+ },
+ openChoose(){
+ this.form.validateFields(['salesStockOutboundOrderNo'],(errors, values) =>{
+ if (!errors){
+ this.chooseOrderNo = values.salesStockOutboundOrderNo
+ this.chooseVisible = true
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue
new file mode 100644
index 0000000..4455578
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/chooseMaterials.vue
@@ -0,0 +1,256 @@
+<template>
+ <a-modal
+ title="鐗╂枡閫夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="sales-stock-return-choose-modal-content">
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { GetCouldReturnMaterials } from '@/api/modular/main/SalesStockReturnOrderManage'
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ queryOrderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ queried:{...pagination},
+ tableKey:'materialNo',
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 180 },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.newQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.queried = {...pagination}
+ },
+ newQuery(){
+ this.queried = {...pagination}
+ this.queried.SalesStockOutboundOrderNo = this.queryOrderNo
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ GetCouldReturnMaterials(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i][this.tableKey] === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ arr.push(item[this.tableKey])
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-choose-modal-content{
+ height: 50vh;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ padding: 16px 16px 0 16px;
+ .table-box{
+ height: 100%;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..170765a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/editForm.vue
@@ -0,0 +1,179 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫閿�鍞��搴�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]" @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱Id" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴揑d" v-decorator="['areaId']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="閫�璐ф柟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐ф柟" v-decorator="['returnGoods']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴风紪鍙�" v-decorator="['returnGoodsOrderNo']" />
+ </a-form-item>
+ <a-form-item label="閿�鍞崟鎹�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ攢鍞崟鎹�" v-decorator="['saleOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鍗曟嵁" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐у崟鎹�" v-decorator="['dispatchedOrderOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatusEnum', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SalesStockReturnOrderEdit,SalesStockReturnOrderLargeCategories,SalesStockReturnOrderSubclass
+ } from '@/api/modular/main/SalesStockReturnOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ record: {},
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ getLargeCategoriesOptions(){
+ if (this.selectOptions.largeCategories.length<=0) {
+ SalesStockReturnOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ }
+ },
+ getSubclassOptions(id,init=false){
+ SalesStockReturnOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ if (!init){
+ this.form.resetFields(['orderSubclass'])
+ }
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.form.resetFields(['orderSubclass'])
+ },
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id:record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ orderQuantity: record.orderQuantity,
+ areaId: record.areaId,
+ areaName: record.areaName,
+ returnGoods: record.returnGoods,
+ returnGoodsOrderNo: record.returnGoodsOrderNo,
+ saleOrderNo: record.saleOrderNo,
+ dispatchedOrderOrderNo: record.dispatchedOrderOrderNo,
+ orderStatusEnum: String(record.orderStatusEnum)
+ }
+ )
+ this.getLargeCategoriesOptions()
+ this.getSubclassOptions(record.orderLargeCategory,true)
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ SalesStockReturnOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue
new file mode 100644
index 0000000..7a19b74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/index.vue
@@ -0,0 +1,273 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="onNew">鏂板閿�鍞��搴�</a-button>
+ <a-button type="danger" icon="step-forward" :disabled="!selectedRowKeys.length" @click="onMulDistribute">涓嬪彂</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="onEdit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a @click="onDistribute(record)">涓嬪彂</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SalesStockReturnOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" :type="formType" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { SalesStockReturnOrderPage, SalesStockReturnOrderDelete, SalesStockReturnOrderMulDistribute } from '@/api/modular/main/SalesStockReturnOrderManage'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '閫�璐ф柟',
+ align: 'center',
+ dataIndex: 'returnGoods'
+ },
+ {
+ title: '瀹㈡埛缂栧彿',
+ align: 'center',
+ dataIndex: 'returnGoodsOrderNo'
+ },
+ {
+ title: '閿�鍞崟鎹�',
+ align: 'center',
+ dataIndex: 'saleOrderNo'
+ },
+ {
+ title: '鍙戣揣鍗曟嵁',
+ align: 'center',
+ dataIndex: 'dispatchedOrderOrderNo'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatusEnum',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return SalesStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0],true)
+ }
+ this.selectedRowKeys = []
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ selectedRowKeys: [],
+ infoId:null,
+ infoOrderNo:'',
+ formType:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ methods: {
+ onViewDetail(obj,mainRefresh=false){
+ if (this.infoId===obj.id && mainRefresh===false) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onNew(){
+ this.formType = 'add'
+ this.$refs.addForm.init()
+ },
+ onEdit(obj){
+ this.formType = 'modify'
+ this.$refs.addForm.init(obj)
+ },
+ clearInfo(){
+ this.infoId = null
+ this.infoOrderNo = ''
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ SalesStockReturnOrderDelete (record) {
+ SalesStockReturnOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.clearInfo()
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ if (this.formType==='modify'){
+ this.infoId = null
+ this.$nextTick(()=>{
+ this.$refs.table.refresh()
+ })
+ } else {
+ this.$refs.table.refresh()
+ }
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+ onMulDistribute(){
+ this.dealDistribute(this.selectedRowKeys)
+ },
+ onDistribute(obj){
+ this.dealDistribute([obj.id])
+ },
+ dealDistribute(ids){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屼笅鍙戞搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDistribute(ids,(f)=>{
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ handleDistribute(ids,callback){
+ this.$loading.show()
+ SalesStockReturnOrderMulDistribute(ids).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue
new file mode 100644
index 0000000..58f5d7f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SalesStockReturnOrder/infoBlock.vue
@@ -0,0 +1,106 @@
+<template>
+ <div class="sales-stock-return-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="unitTyleSlot" slot-scope="text">{{ 'unit_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SalesStockReturnOrderDetailPage } from '@/api/modular/main/SalesStockReturnOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'salesStockReturnOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch' },
+ { title: '瑙勬牸', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鍗曚綅绫诲瀷', dataIndex: 'basicUnit', key: 'basicUnit', width: 120, scopedSlots: { customRender: 'unitTyleSlot' }},
+ { title: '鍑哄簱鏁�', dataIndex: 'orderOutDetailQuantity', key: 'orderOutDetailQuantity', width: 100 },
+ { title: '閫�璐ф暟', dataIndex: 'orderDetailQuantity',key: 'orderDetailQuantity', width: 100}
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return SalesStockReturnOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.sales-stock-return-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue
new file mode 100644
index 0000000..c89d4dd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/DetailDrawer.vue
@@ -0,0 +1,183 @@
+<template>
+ <a-drawer
+ title="宸ヤ綅璇︽儏璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ :width="400"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+ <div class="station-view-detail-div">
+ <div class="btns-row">
+ <a-button type="primary" :disabled="stationObj.status!==0" @click.stop="onUpdateLock">鍋滅敤</a-button>
+ <a-button type="primary" :disabled="stationObj.status!==1" @click.stop="onUpdateLock">鍚敤</a-button>
+ <a-button type="primary" :disabled="!(stationObj.status===0&&stationObj.stataionStatus!==1)" @click.stop="onUpdateEmpty">缃┖</a-button>
+ </div>
+ <div class="location-detail-box">
+ <div class="base-info info-box">
+ <p>宸ヤ綅缂栧彿锛歿{stationObj.code}}</p>
+ <p>宸ヤ綅鍚嶇О锛歿{stationObj.name}}</p>
+ <p>鎵樼洏鐮侊細{{stationObj.containerCode}}</p>
+ </div>
+ <!-- 鐗╂枡鍒楄〃 start -->
+ <div class="location-materials">
+
+ <div class="location-material-item" v-for="(item,index) in materialList" :key="'material-item-'+index">
+ <a-card>
+ <div class="info-box">
+ <p>鐗╂枡缂栧彿锛歿{item.materialNo}}</p>
+ <p>鐗╂枡鍚嶇О锛歿{item.materialName}}</p>
+ <p>灏哄锛歿{item.materialSpec}}</p>
+ <p>鑸瑰彿锛歿{item.shipNo}}</p>
+ <p>鍥惧彿锛歿{item.drawingNo}}</p>
+ </div>
+ </a-card>
+ </div>
+
+ </div>
+ <!-- 鐗╂枡鍒楄〃 end -->
+ </div>
+ </div>
+ </a-spin>
+ </a-drawer>
+</template>
+
+<script>
+import { GetStationDetail,UpdateLock,UpdateEmpty } from '@/api/modular/main/StationViewManage'
+export default {
+ name:'stationViewDetailDrawer',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ stationObj:{
+ placestatus:null,
+ islock:null
+ },
+ containercode:'',
+ materialList:[],
+ actionFlag:false
+ }
+ },
+ methods:{
+ onClose(){
+ this.close()
+ },
+ close(){
+ this.$emit('update:visible',false)
+ },
+ afterVisibleChange(visible){
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow(){
+ this.loading = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ })
+ },
+ getLocationDetail(callback){
+ let params = {ID:this.row.id}
+ GetStationDetail(params).then((d)=>{
+ this.stationObj = d.data.lesStation || {}
+ this.materialList = d.data.assembleMaterialContainer || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ afterClsoe(){
+ this.locationObj = {
+ status:null,
+ stataionStatus:null
+ }
+ this.materialList = []
+ if (this.actionFlag) {
+ this.$emit('callback')
+ }
+ this.actionFlag = false
+ },
+ onUpdateLock(){
+ this.loading = true;
+ let params = {ID:this.row.id}
+ UpdateLock(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ onUpdateEmpty(){
+ this.loading = true;
+ let params = {ID:this.row.id}
+ UpdateEmpty(params).then(()=>{
+ this.actionFlag = true;
+ this.getLocationDetail(()=>{
+ this.loading = false;
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ })
+ }).catch(()=>{
+ this.loading = false;
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.station-view-detail-div{
+ height:100%;
+ display: flex;
+ flex-direction: column;
+ &>.btns-row{
+ flex-shrink: 0;
+ padding:12px 16px;
+ .ant-btn + .ant-btn {
+ margin-left: 10px;
+ }
+ }
+ .location-detail-box{
+ flex-grow: 1;
+ overflow: auto;
+ }
+ .info-box{
+ line-height: 1.5;
+ p{
+ margin-bottom: 0;
+ }
+ }
+ .base-info,.location-materials{
+ padding:0 16px;
+ margin-bottom: 16px;
+ }
+ .location-materials{
+ .location-material-item{
+ margin-bottom: 12px;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue
new file mode 100644
index 0000000..f65bb58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/SearchForm.vue
@@ -0,0 +1,74 @@
+<template>
+ <a-form layout="inline">
+ <a-form-item label="浜х嚎">
+ <a-select v-model="form.line" class="slect-width">
+ <a-select-option v-for="(item,index) in selectList.lines" :key="'line-sel-'+index" :value="item.id">{{item.name}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item>
+ <a-button type="primary" @click.stop="onSearch">鏌ヨ</a-button>
+ </a-form-item>
+ </a-form>
+</template>
+
+<script>
+import { GetProductionLines } from '@/api/modular/main/StationViewManage'
+export default {
+ name:'stationViewSearchCompontent',
+ emits:['update:loading','search'],
+ data(){
+ return {
+ loading:{
+ type:Boolean,
+ default:false
+ },
+ form:{
+ line聽:null
+ },
+ selectList:{
+ lines:[]
+ }
+ }
+ },
+ methods:{
+ init(callback){
+ this.getSelectListLines((f)=>{
+ if (f) {
+ callback && callback(true,this.form.line)
+ } else {
+ callback && callback(false)
+ }
+ })
+ },
+ getSelectListLines(callback){
+ GetProductionLines().then((d)=>{
+ this.selectList.lines = d.data || [];
+ if (this.selectList.lines.length>0) {
+ this.form.line = this.selectList.lines[0].id
+ callback && callback(true)
+ } else {
+ callback && callback(false)
+ }
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ onSearch(){
+ if (!this.form.line) {
+ this.$error({
+ title: '绯荤粺鎻愮ず',
+ content: '璇烽�夋嫨浜х嚎锛�',
+ });
+ return false;
+ }
+ this.$emit('search',this.form.line)
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.slect-width{
+ width:180px
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue
new file mode 100644
index 0000000..74a0802
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/StationView/index.vue
@@ -0,0 +1,278 @@
+锘�<template>
+ <div class="station-view-page">
+ <a-spin :spinning="loading">
+ <div class="top-blcok">
+ <search-form ref="search" :loading.sync="loading" @search="onSearch" />
+ </div>
+ <div class="containter-blcok">
+ <div class="example-tags">
+ <div class="tag tan-tag">绌洪棽</div>
+ <div class="tag orange-tag">寰呭叆</div>
+ <div class="tag purple-tag">寰呭嚭</div>
+ <div class="tag primary-tag">瀛樿揣</div>
+ <div class="tag red-tag">鍋滅敤</div>
+ </div>
+ <!-- 宸ヤ綅鏄剧ず鍖哄煙 start -->
+ <div class="stations-box">
+ <div class="station-item-group">
+ <div class="station-item" v-for="(item,index) in list" :key="'station-item-'+index" :class="[
+ (!item||item.status===undefined||item.status===null||item.status===2)?'died-item':(
+ item.status===1?'red-item':(
+ item.stataionStatus===2?'orange-item':(
+ item.stataionStatus===4?'purple-item':(
+ item.stataionStatus===1?'tan-item':(
+ item.stataionStatus===3?'primary-item':''
+ )
+ )
+ )
+ )
+ )
+ ]" @click="openDetail(item)">
+ {{item?item.name:''}}
+ </div>
+ </div>
+ </div>
+ <!-- 搴撳尯鏄剧ず鍖哄煙 end -->
+ </div>
+
+ <detail-drawer :visible.sync="detailVisible" :row="detailRow" @callback="lockCallback" />
+ </a-spin>
+ </div>
+</template>
+
+<script>
+import SearchForm from './SearchForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+import { GetStationList } from '@/api/modular/main/StationViewManage'
+export default {
+ name:'stationViewPage',
+ components:{SearchForm,DetailDrawer},
+ data(){
+ return {
+ detailVisible:false,
+ detailRow:{},
+ loading:false,
+ countNum: {
+ empty: 0,
+ daiRu: 0,
+ daiChu: 0,
+ fill: 0,
+ lock: 0,
+ emptyContainer:0
+ },
+ list:[],
+ searchForm:{}
+ }
+ },
+ methods:{
+ openDetail(obj){
+ this.detailRow = obj
+ this.detailVisible = true;
+ },
+ getList(id,callback){
+ GetStationList(id).then((d)=>{
+ this.list = d.data || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ onSearch(valObj) {
+ this.loading = true
+ this.searchForm = valObj
+ this.getList(valObj,()=>{
+ this.loading = false
+ })
+ },
+ lockCallback(){
+ this.loading = true
+ this.getList(this.searchForm,()=>{
+ this.loading = false
+ })
+ },
+ init(){
+ this.loading = true
+ this.$refs.search.init((f,val)=>{
+ if (f) {
+ this.getList(val,()=>{
+ this.loading = false
+ })
+ } else {
+ this.loading = false
+ }
+ })
+ }
+ },
+ mounted(){
+ this.init()
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.station-view-page{
+ overflow: hidden;
+ display: flex;
+ overflow: auto;
+ background-color: #fff;
+ border-radius: 10px;
+ flex-direction: column;
+ height: 100%;
+
+ .top-blcok {
+ flex-shrink: 0;
+ padding: 10px 16px 16px 16px;
+ }
+
+ .containter-blcok {
+ flex-grow: 1;
+ height: 1px;
+ display: flex;
+ flex-direction: column;
+ @gray-color: #808080;
+ @danger-color: #ff3333;
+ @primary-color: #ccffff;
+ @orange-color: #ffa500;
+ @purple-color: #800080;
+ @tan-color: #d2b48c;
+ @border-color-x: #c0c0c0;
+
+ .example-tags {
+ flex-shrink: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 0 16px 16px 16px;
+
+ .tag {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 30px;
+ width: 100px;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: default;
+ background-color: @gray-color;
+
+ &+.tag {
+ margin-left: 10px;
+ }
+
+ &.red-tag {
+ background-color: @danger-color;
+ }
+
+ &.primary-tag {
+ background-color: @primary-color;
+ }
+
+ &.orange-tag {
+ background-color: @orange-color;
+ }
+
+ &.purple-tag {
+ background-color: @purple-color;
+ }
+
+ &.tan-tag{
+ background-color: @tan-color;
+ }
+
+ &:not(.primary-tag) {
+ color: #FFFFFF;
+ }
+ }
+ }
+
+ .stations-box {
+ @divider-size:8px;
+ flex-grow: 1;
+ height: 1px;
+ overflow: auto;
+ .station-item-group{
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: @divider-size;
+ }
+ .station-item {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 150px;
+ height: 50px;
+ overflow: hidden;
+ white-space: nowrap;
+ margin-right: @divider-size;
+ margin-bottom: @divider-size;
+ border: 1px solid @border-color-x;
+ border-radius: 4px;
+ cursor: pointer;
+ flex-shrink: 0;
+ background-color: @gray-color;
+
+ &.active {
+ box-shadow: 0 0 4px #00ff00;
+ }
+
+ &.died-item {
+ background-color: #FFFFFF;
+ background-image: linear-gradient(
+ to top right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ ), linear-gradient(
+ to bottom right,
+ rgba(192, 192, 192, 0) 0%,
+ rgba(192, 192, 192, 0) calc(50% - 1px),
+ rgba(192, 192, 192, 1) 50%,
+ rgba(192, 192, 192, 0) calc(50% + 1px),
+ rgba(192, 192, 192, 0) 100%
+ );
+ cursor: not-allowed;
+ }
+
+ &.red-item {
+ background-color: @danger-color;
+ }
+
+ &.primary-item {
+ background-color: @primary-color;
+ }
+
+ &.orange-item {
+ background-color: @orange-color;
+ }
+
+ &.purple-item {
+ background-color: @purple-color;
+ }
+
+ &.tan-item{
+ background-color: @tan-color;
+ }
+
+ &:not(.primary-item,.died-item) {
+ color: #FFFFFF;
+ }
+
+ }
+ }
+ }
+}
+</style>
+<style lang="less">
+.station-view-page{
+ .ant-spin-nested-loading,.ant-spin-container{
+ height:100%;
+ }
+ .ant-spin-container{
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..359b945
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/addForm.vue
@@ -0,0 +1,125 @@
+锘�<template>
+ <a-modal
+ title="鏂板渚涘簲鍟嗛��搴�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="閫�璐у崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐у崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="閫�璐т汉" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐т汉" v-decorator="['customer']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" v-decorator="['supplier']" />
+ </a-form-item>
+ <a-form-item label="閫�璐ф椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨閫�璐ф椂闂�" v-decorator="['stockOutTime']" @change="onChangestockOutTime"/>
+ </a-form-item>
+ <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['stockOutReason']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['dispatchedOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SupplierStockReturnOrderAdd
+ } from '@/api/modular/main/SupplierStockReturnOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ stockOutTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.stockOutTime = this.stockOutTimeDateString
+ SupplierStockReturnOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangestockOutTime(date, dateString) {
+ this.stockOutTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..3d0ced8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/editForm.vue
@@ -0,0 +1,153 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫渚涘簲鍟嗛��搴�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="閫�璐у崟鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐у崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="閫�璐т汉" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐т汉" v-decorator="['customer']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" v-decorator="['supplier']" />
+ </a-form-item>
+ <a-form-item label="閫�璐ф椂闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨閫�璐ф椂闂�" v-decorator="['stockOutTime']" @change="onChangestockOutTime"/>
+ </a-form-item>
+ <a-form-item label="閫�璐х悊鐢�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ��璐х悊鐢�" v-decorator="['stockOutReason']" />
+ </a-form-item>
+ <a-form-item label="鍙戣揣鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彂璐у崟鍙�" v-decorator="['dispatchedOrderNo']" />
+ </a-form-item>
+ <a-form-item label="鏀惰揣鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹璐у湴鍧�" v-decorator="['shippingAddress']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ SupplierStockReturnOrderEdit
+ } from '@/api/modular/main/SupplierStockReturnOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ stockOutTimeDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ orderQuantity: record.orderQuantity,
+ areaName: record.areaName,
+ customer: record.customer,
+ supplier: record.supplier,
+ stockOutReason: record.stockOutReason,
+ dispatchedOrderNo: record.dispatchedOrderNo,
+ shippingAddress: record.shippingAddress
+ }
+ )
+ })
+ this.form.getFieldDecorator('stockOutTime', { initialValue: moment(record.stockOutTime, 'YYYY-MM-DD') })
+ this.stockOutTimeDateString = moment(record.stockOutTime).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.stockOutTime = this.stockOutTimeDateString
+ this.record.stockOutTime = this.stockOutTimeDateString
+ SupplierStockReturnOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangestockOutTime(date, dateString) {
+ this.stockOutTimeDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue
new file mode 100644
index 0000000..306cd37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/index.vue
@@ -0,0 +1,306 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="閫�璐у崟鍙�">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ラ��璐у崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="閫�璐т汉">
+ <a-input v-model="queryParam.customer" allow-clear placeholder="璇疯緭鍏ラ��璐т汉"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟�">
+ <a-input v-model="queryParam.supplier" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戣揣鍗曞彿">
+ <a-input v-model="queryParam.dispatchedOrderNo" allow-clear placeholder="璇疯緭鍏ュ彂璐у崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣鍦板潃">
+ <a-input v-model="queryParam.shippingAddress" allow-clear placeholder="璇疯緭鍏ユ敹璐у湴鍧�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator">
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板渚涘簲鍟嗛��搴�</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SupplierStockReturnOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ SupplierStockReturnOrderPage,
+ SupplierStockReturnOrderDelete ,
+ SupplierStockReturnOrderLargeCategories,
+ SupplierStockReturnOrderSubclass
+ } from '@/api/modular/main/SupplierStockReturnOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '閫�璐у崟鍙�',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鍗曟嵁鎬绘暟閲�',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '閫�璐т汉',
+ align: 'center',
+ dataIndex: 'customer'
+ },
+ {
+ title: '渚涘簲鍟�',
+ align: 'center',
+ dataIndex: 'supplier'
+ },
+ {
+ title: '閫�璐ф椂闂�',
+ align: 'center',
+ dataIndex: 'stockOutTime'
+ },
+ {
+ title: '閫�璐х悊鐢�',
+ align: 'center',
+ dataIndex: 'stockOutReason'
+ },
+ {
+ title: '鍙戣揣鍗曞彿',
+ align: 'center',
+ dataIndex: 'dispatchedOrderNo'
+ },
+ {
+ title: '鏀惰揣鍦板潃',
+ align: 'center',
+ dataIndex: 'shippingAddress'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return SupplierStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ SupplierStockReturnOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ SupplierStockReturnOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ SupplierStockReturnOrderDelete (record) {
+ SupplierStockReturnOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue
new file mode 100644
index 0000000..c14c2ea
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SupplierStockReturnOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+ <div class="supplier-stock-return-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { SupplierStockReturnOrderDetailPage } from '@/api/modular/main/SupplierStockReturnOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'supplierStockReturnOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鍩烘湰鍗曚綅', align:'center', dataIndex: 'basicUnit', key: 'basicUnit' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return SupplierStockReturnOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.supplier-stock-return-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue
new file mode 100644
index 0000000..a27693f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/addForm.vue
@@ -0,0 +1,101 @@
+锘�<template>
+ <a-modal
+ title="鏂板绉熸埛琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="绠$悊鍛樺悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О" v-decorator="['adminName']" />
+ </a-form-item>
+ <a-form-item label="涓绘満" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ富鏈�" v-decorator="['host']" />
+ </a-form-item>
+ <a-form-item label="鐢靛瓙閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+ </a-form-item>
+ <a-form-item label="鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['phone']" />
+ </a-form-item>
+ <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴" v-decorator="['connection']" />
+ </a-form-item>
+ <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ灦鏋�" v-decorator="['schema']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SysTenantAdd
+ } from '@/api/modular/main/SysTenantManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ SysTenantAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue
new file mode 100644
index 0000000..d3ce765
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/editForm.vue
@@ -0,0 +1,120 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫绉熸埛琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="绠$悊鍛樺悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О" v-decorator="['adminName']" />
+ </a-form-item>
+ <a-form-item label="涓绘満" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ富鏈�" v-decorator="['host']" />
+ </a-form-item>
+ <a-form-item label="鐢靛瓙閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+ </a-form-item>
+ <a-form-item label="鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['phone']" />
+ </a-form-item>
+ <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴" v-decorator="['connection']" />
+ </a-form-item>
+ <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ灦鏋�" v-decorator="['schema']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SysTenantEdit
+ } from '@/api/modular/main/SysTenantManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ this.record = record
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ adminName: record.adminName,
+ host: record.host,
+ email: record.email,
+ phone: record.phone,
+ connection: record.connection,
+ schema: record.schema,
+ remark: record.remark
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ SysTenantEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue
new file mode 100644
index 0000000..d489ab2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/SysTenant/index.vue
@@ -0,0 +1,211 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('SysTenant:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绠$悊鍛樺悕绉�">
+ <a-input v-model="queryParam.adminName" allow-clear placeholder="璇疯緭鍏ョ鐞嗗憳鍚嶇О"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓绘満">
+ <a-input v-model="queryParam.host" allow-clear placeholder="璇疯緭鍏ヤ富鏈�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐢靛瓙閭">
+ <a-input v-model="queryParam.email" allow-clear placeholder="璇疯緭鍏ョ數瀛愰偖绠�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐢佃瘽">
+ <a-input v-model="queryParam.phone" allow-clear placeholder="璇疯緭鍏ョ數璇�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏁版嵁搴撹繛鎺�">
+ <a-input v-model="queryParam.connection" allow-clear placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏋舵瀯">
+ <a-input v-model="queryParam.schema" allow-clear placeholder="璇疯緭鍏ユ灦鏋�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="澶囨敞">
+ <a-input v-model="queryParam.remark" allow-clear placeholder="璇疯緭鍏ュ娉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('SysTenant:add')" >
+ <a-button type="primary" v-if="hasPerm('SysTenant:add')" icon="plus" @click="$refs.addForm.add()">鏂板绉熸埛琛�</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('SysTenant:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('SysTenant:edit') & hasPerm('SysTenant:delete')"/>
+ <a-popconfirm v-if="hasPerm('SysTenant:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => SysTenantDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { SysTenantPage, SysTenantDelete } from '@/api/modular/main/SysTenantManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍏徃鍚嶇О',
+ align: 'center',
+sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '绠$悊鍛樺悕绉�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'adminName'
+ },
+ {
+ title: '涓绘満',
+ align: 'center',
+sorter: true,
+ dataIndex: 'host'
+ },
+ {
+ title: '鐢靛瓙閭',
+ align: 'center',
+sorter: true,
+ dataIndex: 'email'
+ },
+ {
+ title: '鐢佃瘽',
+ align: 'center',
+sorter: true,
+ dataIndex: 'phone'
+ },
+ {
+ title: '鏁版嵁搴撹繛鎺�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'connection'
+ },
+ {
+ title: '鏋舵瀯',
+ align: 'center',
+sorter: true,
+ dataIndex: 'schema'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+sorter: true,
+ dataIndex: 'remark'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return SysTenantPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('SysTenant:edit') || this.hasPerm('SysTenant:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ SysTenantDelete (record) {
+ SysTenantDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue
new file mode 100644
index 0000000..452cd65
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓淇℃伅琛�1-閭甸暱绁�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷勾榫勶紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁鍦ㄦ牎锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate',{rules: [{ required: true, message: '璇烽�夋嫨鍑虹敓鏃ユ湡锛�' }]}]" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudentAdd
+ } from '@/api/modular/main/TestDemo/TestStudentManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestStudentAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue
new file mode 100644
index 0000000..2961520
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓淇℃伅琛�1-閭甸暱绁�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷勾榫勶紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁鍦ㄦ牎锛�' }], valuePropName: 'checked'}]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate',{rules: [{ required: true, message: '璇烽�夋嫨鍑虹敓鏃ユ湡锛�' }]}]" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudentEdit
+ } from '@/api/modular/main/TestDemo/TestStudentManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ startName: record.startName,
+ gender: record.gender,
+ brithDate: record.brithDate,
+ teacherId: record.teacherId
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestStudentEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue
new file mode 100644
index 0000000..8387e8d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudentDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudentImportExcel, TestStudentDownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudentManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudentDownloadExcelTemplate")
+ window.downloadFile = this.testStudentDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ TestStudentImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudentDownloadExcelTemplate() {
+ TestStudentDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue
new file mode 100644
index 0000000..2a44b2a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent/index.vue
@@ -0,0 +1,528 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangebrithDate"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏宠仈鑰佸笀">
+ <a-input v-model="queryParam.teacherId" allow-clear placeholder="璇疯緭鍏ュ叧鑱旇�佸笀"/>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('TestStudent:exportExcel')" icon="download" @click="TestStudentToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('TestStudent:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅琛�1-閭甸暱绁�</a-button>
+ </div>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+
+ <a v-if="hasPerm('TestStudent:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('TestStudent:edit') & hasPerm('TestStudent:delete')"/>
+ <a-popconfirm v-if="hasPerm('TestStudent:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudentDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudentPage, TestStudentDelete, TestStudentToExcel } from '@/api/modular/main/TestDemo/TestStudentManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'brithDate'
+ },
+ {
+ title: '鍏宠仈鑰佸笀',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'teacherId'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudentPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('TestStudent:edit') || this.hasPerm('TestStudent:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudentDelete (record) {
+ TestStudentDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ TestStudentToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudentPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue
new file mode 100644
index 0000000..e1e8782
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudent2Add
+ } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestStudent2Add(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue
new file mode 100644
index 0000000..7509fbd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender', {rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudent2Edit
+ } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ hasMoney: record.hasMoney,
+ startName: record.startName,
+ gender: record.gender,
+ brithDate: record.brithDate
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestStudent2Edit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue
new file mode 100644
index 0000000..5c45730
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudent2DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudent2FromExcel, TestStudent2DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent2Manage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudent2DownloadExcelTemplate")
+ window.downloadFile = this.testStudent2DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent2"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ testStudent2FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudent2DownloadExcelTemplate() {
+ testStudent2DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue
new file mode 100644
index 0000000..9795961
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent2/index.vue
@@ -0,0 +1,282 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent2:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="闆惰姳閽�">
+ <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangebrithDate"/>
+
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('TestStudent2:exportExcel')" icon="download" @click="TestStudent2ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('TestStudent2:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅</a-button>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('TestStudent2:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('TestStudent2:edit') & hasPerm('TestStudent2:delete')"/>
+ <a-popconfirm v-if="hasPerm('TestStudent2:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent2Delete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudent2Page, TestStudent2Delete, TestStudent2ToExcel } from '@/api/modular/main/TestDemo/TestStudent2Manage'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ width:'80px',
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '闆惰姳閽�',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'hasMoney'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'brithDate'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudent2Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudent2Delete (record) {
+ TestStudent2Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+TestStudent2ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudent2Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ res.data.rows.forEach(item => {
+ var arr1 = Object.keys(item);
+ arr1.forEach(key => {
+ var str1 = key+'Data';
+ if(this[str1]&&this[str1].length>0){
+ let s1 = this[str1].filter(v => String(v.code) == String(item[key]) );
+ if(s1.length>0){
+ item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ })
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue
new file mode 100644
index 0000000..79225a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷鍚嶏紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudent3Add
+ } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestStudent3Add(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue
new file mode 100644
index 0000000..50cda26
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鐢熷鍚嶏紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudent3Edit
+ } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ hasMoney: record.hasMoney,
+ startName: record.startName,
+ gender: record.gender,
+ brithDate: record.brithDate,
+ createdTime: record.createdTime,
+ updatedTime: record.updatedTime,
+ createdUserName: record.createdUserName,
+ updatedUserName: record.updatedUserName
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestStudent3Edit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue
new file mode 100644
index 0000000..1a5d277
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudent3DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudent3ImportExcel, TestStudent3DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent3Manage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudent3DownloadExcelTemplate")
+ window.downloadFile = this.testStudent3DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent3"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ TestStudent3ImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudent3DownloadExcelTemplate() {
+ TestStudent3DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue
new file mode 100644
index 0000000..616c050
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent3/index.vue
@@ -0,0 +1,508 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent3:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="闆惰姳閽�">
+ <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangebrithDate"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent3:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('TestStudent3:exportExcel')" icon="download" @click="TestStudent3ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ </div>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudent3Page, TestStudent3Delete, TestStudent3ToExcel } from '@/api/modular/main/TestDemo/TestStudent3Manage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '闆惰姳閽�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'hasMoney'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'brithDate'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudent3Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudent3Delete (record) {
+ TestStudent3Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ TestStudent3ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudent3Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue
new file mode 100644
index 0000000..51573ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/addForm.vue
@@ -0,0 +1,88 @@
+锘�<template>
+ <a-modal
+ title="鏂板娴嬭瘯瀛︾敓琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudent5Add
+ } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestStudent5Add(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue
new file mode 100644
index 0000000..cadd8be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/editForm.vue
@@ -0,0 +1,103 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫娴嬭瘯瀛︾敓琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudent5Edit
+ } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestStudent5Edit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue
new file mode 100644
index 0000000..3faf14e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudent5DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudent5FromExcel, TestStudent5DownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestStudent5Manage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudent5DownloadExcelTemplate")
+ window.downloadFile = this.testStudent5DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent5"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ TestStudent5FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudent5DownloadExcelTemplate() {
+ TestStudent5DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue
new file mode 100644
index 0000000..8f85dc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestStudent5/index.vue
@@ -0,0 +1,391 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent5:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced"> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent5:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('TestStudent5:exportExcel')" icon="download" @click="TestStudent5ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('TestStudent5:add')" icon="plus" @click="$refs.addForm.add()">鏂板娴嬭瘯瀛︾敓琛�</a-button>
+ </div>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('TestStudent5:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('TestStudent5:edit') & hasPerm('TestStudent5:delete')"/>
+ <a-popconfirm v-if="hasPerm('TestStudent5:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent5Delete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudent5Page, TestStudent5Delete, TestStudent5ToExcel } from '@/api/modular/main/TestDemo/TestStudent5Manage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`,
+ },
+ {
+ title: '濮撳悕',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '骞撮緞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': ''//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudent5Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('TestStudent5:edit') || this.hasPerm('TestStudent5:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudent5Delete (record) {
+ TestStudent5Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ TestStudent5ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudent5Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue
new file mode 100644
index 0000000..9f5d41a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/addForm.vue
@@ -0,0 +1,85 @@
+锘�<template>
+ <a-modal
+ title="鏂板娴嬭瘯鑰佸笀琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestTeacherAdd
+ } from '@/api/modular/main/TestDemo/TestTeacherManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestTeacherAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue
new file mode 100644
index 0000000..5e210a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/editForm.vue
@@ -0,0 +1,99 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫娴嬭瘯鑰佸笀琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestTeacherEdit
+ } from '@/api/modular/main/TestDemo/TestTeacherManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestTeacherEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue
new file mode 100644
index 0000000..1266c79
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testTeacherDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestTeacherFromExcel, TestTeacherDownloadExcelTemplate} from '@/api/modular/main/TestDemo/TestTeacherManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testTeacherDownloadExcelTemplate")
+ window.downloadFile = this.testTeacherDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestTeacher"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ testTeacherFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testTeacherDownloadExcelTemplate() {
+ testTeacherDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue
new file mode 100644
index 0000000..5c5e2ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/TestTeacher/index.vue
@@ -0,0 +1,200 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestTeacher:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestTeacher:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('TestTeacher:exportExcel')" icon="download" @click="TestTeacherToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('TestTeacher:add')" icon="plus" @click="$refs.addForm.add()">鏂板娴嬭瘯鑰佸笀琛�</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('TestTeacher:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('TestTeacher:edit') & hasPerm('TestTeacher:delete')"/>
+ <a-popconfirm v-if="hasPerm('TestTeacher:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestTeacherDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { TestTeacherPage, TestTeacherDelete, TestTeacherToExcel } from '@/api/modular/main/TestDemo/TestTeacherManage'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ queryParam: {},
+ columns: [
+ {
+ title: '鍚嶇О',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'name'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestTeacherPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('TestTeacher:edit') || this.hasPerm('TestTeacher:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestTeacherDelete (record) {
+ TestTeacherDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+TestTeacherToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestTeacherPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arr1 = Object.keys(item);
+ arr1.forEach(key => {
+ var str1 = key + 'Data';
+ //鏋氫妇杞��
+ if (this[str1] && this[str1].length > 0) {
+ let s1 = this[str1].filter(v => String(v.code) == String(item[key]));
+ if (s1.length > 0) {
+ item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue
new file mode 100644
index 0000000..53ddf6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/addForm.vue
@@ -0,0 +1,116 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓瑙嗗浘"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="Id涓婚敭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏d涓婚敭" v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+ </a-form-item>
+ <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+ </a-form-item>
+ <a-form-item label="鑰佸笀鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О" v-decorator="['teacherName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ VStudentAdd
+ } from '@/api/modular/main/TestDemo/VStudentManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ brithDateDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.brithDate = this.brithDateDateString
+ VStudentAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangebrithDate(date, dateString) {
+ this.brithDateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue
new file mode 100644
index 0000000..a48ae38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/editForm.vue
@@ -0,0 +1,138 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓瑙嗗浘"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="Id涓婚敭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏d涓婚敭" v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+ </a-form-item>
+ <a-form-item label="鍏宠仈鑰佸笀" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叧鑱旇�佸笀" v-decorator="['teacherId']" />
+ </a-form-item>
+ <a-form-item label="鑰佸笀鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О" v-decorator="['teacherName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ VStudentEdit
+ } from '@/api/modular/main/TestDemo/VStudentManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ brithDateDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ startName: record.startName,
+ gender: record.gender,
+ teacherId: record.teacherId,
+ teacherName: record.teacherName
+ }
+ )
+ })
+ this.form.getFieldDecorator('brithDate', { initialValue: moment(record.brithDate, 'YYYY-MM-DD') })
+ this.brithDateDateString = moment(record.brithDate).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.brithDate = this.brithDateDateString
+ this.record.brithDate = this.brithDateDateString
+ VStudentEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangebrithDate(date, dateString) {
+ this.brithDateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue
new file mode 100644
index 0000000..aaf5281
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="vStudentDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { VStudentFromExcel, VStudentDownloadExcelTemplate} from '@/api/modular/main/TestDemo/VStudentManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("vStudentDownloadExcelTemplate")
+ window.downloadFile = this.vStudentDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "VStudent"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ VStudentFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ vStudentDownloadExcelTemplate() {
+ VStudentDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue
new file mode 100644
index 0000000..533d7a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TestDemo/VStudent/index.vue
@@ -0,0 +1,394 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('VStudent:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="Id涓婚敭">
+ <a-input v-model="queryParam.id" allow-clear placeholder="璇疯緭鍏d涓婚敭"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-model="queryParam.brithDate" @change="onChangebrithDate"/>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏宠仈鑰佸笀">
+ <a-input v-model="queryParam.teacherId" allow-clear placeholder="璇疯緭鍏ュ叧鑱旇�佸笀"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑰佸笀鍚嶇О">
+ <a-input v-model="queryParam.teacherName" allow-clear placeholder="璇疯緭鍏ヨ�佸笀鍚嶇О"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('VStudent:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('VStudent:exportExcel')" icon="download" @click="VStudentToExcel()">
+ 瀵煎嚭
+ </a-button>
+ </div>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { VStudentPage, VStudentDelete, VStudentToExcel } from '@/api/modular/main/TestDemo/VStudentManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`,
+ },
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ customRender: (value) => (value ? value.split(" ")[0] : value),//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+ customCutout:true,//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+ dataIndex: 'brithDate'
+ },
+ {
+ title: '鑰佸笀鍚嶇О',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'teacherName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return VStudentPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ VStudentDelete (record) {
+ VStudentDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ VStudentToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ VStudentPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue
new file mode 100644
index 0000000..3b9a893
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+ <a-modal
+ title="鏂板璋冩嫧鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍑哄簱鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBath']" />
+ </a-form-item>
+ <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="杞嚭浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍑轰粨搴�" v-decorator="['outAreaName']" />
+ </a-form-item>
+ <a-form-item label="杞嚭搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍑哄簱鍖�" v-decorator="['outwarehouseName']" />
+ </a-form-item>
+ <a-form-item label="杞叆浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍏ヤ粨搴�" v-decorator="['inAreaName']" />
+ </a-form-item>
+ <a-form-item label="杞叆搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍏ュ簱鍖�" v-decorator="['inwarehouseName']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ TransferOrderAdd
+ } from '@/api/modular/main/TransferOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TransferOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue
new file mode 100644
index 0000000..718a829
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫璋冩嫧鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍑哄簱鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBath']" />
+ </a-form-item>
+ <a-form-item label="鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="杞嚭浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍑轰粨搴�" v-decorator="['outAreaName']" />
+ </a-form-item>
+ <a-form-item label="杞嚭搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍑哄簱鍖�" v-decorator="['outwarehouseName']" />
+ </a-form-item>
+ <a-form-item label="杞叆浠撳簱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍏ヤ粨搴�" v-decorator="['inAreaName']" />
+ </a-form-item>
+ <a-form-item label="杞叆搴撳尯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ浆鍏ュ簱鍖�" v-decorator="['inwarehouseName']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ TransferOrderEdit
+ } from '@/api/modular/main/TransferOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ materialBath: record.materialBath,
+ orderQuantity: record.orderQuantity,
+ outAreaName: record.outAreaName,
+ outwarehouseName: record.outwarehouseName,
+ inAreaName: record.inAreaName,
+ inwarehouseName: record.inwarehouseName,
+ remarks: record.remarks
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TransferOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue
new file mode 100644
index 0000000..a69a943
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑哄簱鍗曞彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ嚭搴撳崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板璋冩嫧鍗�</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical"/>
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TransferOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { TransferOrderPage, TransferOrderDelete, TransferOrderLargeCategories, TransferOrderSubclass } from '@/api/modular/main/TransferOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍑哄簱鍗曞彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'materialBath'
+ },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '杞嚭浠撳簱',
+ align: 'center',
+ dataIndex: 'outAreaName'
+ },
+ {
+ title: '杞嚭搴撳尯',
+ align: 'center',
+ dataIndex: 'outwarehouseName'
+ },
+ {
+ title: '杞叆浠撳簱',
+ align: 'center',
+ dataIndex: 'inAreaName'
+ },
+ {
+ title: '杞叆搴撳尯',
+ align: 'center',
+ dataIndex: 'inwarehouseName'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TransferOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ TransferOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ TransferOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TransferOrderDelete (record) {
+ TransferOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue
new file mode 100644
index 0000000..b06fb54
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/TransferOrder/infoBlock.vue
@@ -0,0 +1,116 @@
+<template>
+ <div class="transfer-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { TransferOrderDetailPage } from '@/api/modular/main/TransferOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'transferOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鐗╂枡瀵嗗害', align:'center', dataIndex: 'materialSensity', key: 'materialSensity' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' },
+
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return TransferOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.transfer-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue
new file mode 100644
index 0000000..882e728
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_AccessDetails/index.vue
@@ -0,0 +1,268 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('View_AccessDetails:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鍙�">
+ <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+ <a-select-option v-for="(item,index) in taskmodelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+ <a-select-option v-for="(item,index) in tasktypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskstatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+ <a-select-option v-for="(item,index) in taskstatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏉ユ簮">
+ <a-input v-model="queryParam.sourceplace" allow-clear placeholder="璇疯緭鍏ユ潵婧�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣">
+ <a-input v-model="queryParam.toplace" allow-clear placeholder="璇疯緭鍏ョ洰鏍�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栫爜">
+ <a-input v-model="queryParam.containercode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialname" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栫爜">
+ <a-input v-model="queryParam.materialno" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialbatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡灏哄">
+ <a-input v-model="queryParam.materialspec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.taskNo"
+ >
+ <span slot="taskmodelscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':'#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="tasktypescopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':(text===2?'#87d068':'#108ee9')">{{ 'task_type' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskstatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'#2db7f5':(text===2?'#108ee9':'#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+ </span>
+ <template class="table-operator" slot="operator" >
+ <!-- <a-button type="info" v-if="hasPerm('View_AccessDetails:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('View_AccessDetails:exportExcel')" icon="download" @click="FoamingAgvTaskToExcel()">
+ 瀵煎嚭
+ </a-button> -->
+ </template>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { View_AccessDetailsPage } from '@/api/modular/main/View_AccessDetailsManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '浠诲姟鍙�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskNo'
+ },
+ {
+ title: '浠诲姟鏂瑰紡',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskModel',
+ scopedSlots: { customRender: 'taskmodelscopedSlots' }
+ },
+ {
+ title: '浠诲姟绫诲瀷',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskType',
+ scopedSlots: { customRender: 'tasktypescopedSlots' }
+ },
+ {
+ title: '浠诲姟鐘舵��',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskStatus',
+ scopedSlots: { customRender: 'taskstatusscopedSlots' }
+ },
+ {
+ title: '鏉ユ簮',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'description'
+ },
+ {
+ title: '鐩爣',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'toPlaceName'
+ },
+ {
+ title: '鎵樼洏缂栫爜',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鐗╂枡缂栫爜',
+ align: 'center',
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ dataIndex: 'materialSpec'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'taskCreatedTime',
+ width:170
+ },
+ {
+ title: '瀹屾垚鏃堕棿',
+ align: 'center',
+ dataIndex: 'taskUpdatedTime',
+ width:170
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return View_AccessDetailsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ taskmodelData: [],
+ tasktypeData: [],
+ taskstatusData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ // if (this.hasPerm('View_AccessDetails:edit') || this.hasPerm('View_AccessDetails:delete')) {
+ // this.columns.push({
+ // title: '鎿嶄綔',
+ // width: '150px',
+ // dataIndex: 'action',
+ // scopedSlots: { customRender: 'action' }
+ // })
+ // }
+ const taskmodelOption = this.$options
+ this.taskmodelData = taskmodelOption.filters['dictData']('task_model')
+ const tasktypeOption = this.$options
+ this.tasktypeData = tasktypeOption.filters['dictData']('task_type')
+ const taskstatusOption = this.$options
+ this.taskstatusData = taskstatusOption.filters['dictData']('task_status')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ View_AccessDetailsDelete (record) {
+ View_AccessDetailsDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue
new file mode 100644
index 0000000..1d1f2ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/addForm.vue
@@ -0,0 +1,92 @@
+锘�<template>
+ <a-modal
+ title="鏂板搴撳瓨鐗╂枡瑙嗗浘"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialNo']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBatch']" />
+ </a-form-item>
+ <a-form-item label="瀹炵墿搴撳瓨鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ疄鐗╁簱瀛樻暟" v-decorator="['stockNumber']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ View_Materialstock_MaterialAdd
+ } from '@/api/modular/main/View_Materialstock_MaterialManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ View_Materialstock_MaterialAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue
new file mode 100644
index 0000000..44443e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/editForm.vue
@@ -0,0 +1,107 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫搴撳瓨鐗╂枡瑙嗗浘"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" v-decorator="['materialName']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�" v-decorator="['materialNo']" />
+ </a-form-item>
+ <a-form-item label="鐗╂枡鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欐壒娆�" v-decorator="['materialBatch']" />
+ </a-form-item>
+ <a-form-item label="瀹炵墿搴撳瓨鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ疄鐗╁簱瀛樻暟" v-decorator="['stockNumber']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ View_Materialstock_MaterialEdit
+ } from '@/api/modular/main/View_Materialstock_MaterialManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ materialName: record.materialName,
+ materialNo: record.materialNo,
+ materialBatch: record.materialBatch,
+ stockNumber: record.stockNumber
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ View_Materialstock_MaterialEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue
new file mode 100644
index 0000000..0a0f962
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="view_Materialstock_MaterialDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { View_Materialstock_MaterialFromExcel, View_Materialstock_MaterialDownloadExcelTemplate} from '@/api/modular/main/View_Materialstock_MaterialManage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("view_Materialstock_MaterialDownloadExcelTemplate")
+ window.downloadFile = this.view_Materialstock_MaterialDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "View_Materialstock_Material"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ view_Materialstock_MaterialFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ view_Materialstock_MaterialDownloadExcelTemplate() {
+ view_Materialstock_MaterialDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue
new file mode 100644
index 0000000..733148f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/View_Materialstock_Material/index.vue
@@ -0,0 +1,172 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('View_Materialstock_Material:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('View_Materialstock_Material:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('view_Materialstock_Material:exportExcel')" icon="download" @click="view_Materialstock_MaterialToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('View_Materialstock_Material:add')" icon="plus" @click="$refs.addForm.add()">鏂板搴撳瓨鐗╂枡瑙嗗浘</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('View_Materialstock_Material:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('View_Materialstock_Material:edit') & hasPerm('View_Materialstock_Material:delete')"/>
+ <a-popconfirm v-if="hasPerm('View_Materialstock_Material:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => View_Materialstock_MaterialDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { View_Materialstock_MaterialPage, View_Materialstock_MaterialDelete } from '@/api/modular/main/View_Materialstock_MaterialManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '瀹炵墿搴撳瓨鏁�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'stockNumber'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return View_Materialstock_MaterialPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('View_Materialstock_Material:edit') || this.hasPerm('View_Materialstock_Material:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ this.columns = JSON.parse(columnStr)
+ }
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ View_Materialstock_MaterialDelete (record) {
+ View_Materialstock_MaterialDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue
new file mode 100644
index 0000000..b3d4a72
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+ <a-modal
+ title="鏂板搴撳尯淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['areaName', {rules: [{ required: true, message: '璇疯緭鍏ュ悕绉帮紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['areaDesc', {rules: [{ required: true, message: '璇疯緭鍏ユ弿杩帮紒' }]}]" />
+ </a-form-item>
+ <!-- <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐘舵��" v-decorator="['areaStatus', {rules: [{ required: true, message: '璇烽�夋嫨鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ <a-form-item label="鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍒嗙被" v-decorator="['areaType', {rules: [{ required: true, message: '璇烽�夋嫨鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鏄惁涓洪挗骞冲彴" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isSteel', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <!-- <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsAreaAdd
+ } from '@/api/modular/main/WmsAreaManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ areaStatusData: [],
+ areaTypeData: [],
+ workShopTypeData: [],
+ //issueStateData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const areaStatusOption = this.$options
+ this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+ const areaTypeOption = this.$options
+ this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ // const issueStateOption = this.$options
+ // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsAreaAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue
new file mode 100644
index 0000000..6872344
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/editForm.vue
@@ -0,0 +1,143 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫搴撳尯淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="鎻忚堪" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['areaDesc']" />
+ </a-form-item>
+ <!-- <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐘舵��" v-decorator="['areaStatus', {rules: [{ required: true, message: '璇烽�夋嫨鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ <a-form-item label="鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍒嗙被" v-decorator="['areaType', {rules: [{ required: true, message: '璇烽�夋嫨鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鏄惁涓洪挗骞冲彴" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isSteel', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <!-- <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsAreaEdit
+ } from '@/api/modular/main/WmsAreaManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ areaStatusData: [],
+ areaTypeData: [],
+ workShopTypeData: [],
+ //issueStateData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const areaStatusOption = this.$options
+ this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+ const areaTypeOption = this.$options
+ this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ // const issueStateOption = this.$options
+ // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ areaName: record.areaName,
+ areaDesc: record.areaDesc,
+ areaStatus: record.areaStatus,
+ areaType: record.areaType,
+ isSteel: record.isSteel,
+ workShopType: record.workShopType,
+ issueState: record.issueState
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsAreaEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue
new file mode 100644
index 0000000..9d1db00
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsArea/index.vue
@@ -0,0 +1,232 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsArea:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍚嶇О">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒嗙被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaType" placeholder="璇烽�夋嫨鍒嗙被">
+ <a-select-option v-for="(item,index) in areaTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaStatus" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in areaStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炶溅闂�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="绛炬牳鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.issueState" placeholder="璇烽�夋嫨绛炬牳鐘舵��">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsArea:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsArea:exportExcel')" icon="download" @click="wmsAreaToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsArea:add')" icon="plus" @click="$refs.addForm.add()">鏂板</a-button>
+ </template>
+ <span slot="areaStatusscopedSlots" slot-scope="text">
+ {{ 'common_status' | dictType(text) }}
+ </span>
+ <span slot="areaTypescopedSlots" slot-scope="text">
+ {{ 'area_type' | dictType(text) }}
+ </span>
+ <span slot="workShopTypescopedSlots" slot-scope="text">
+ {{ 'les_workshop_type' | dictType(text) }}
+ </span>
+ <!-- <span slot="issueStatescopedSlots" slot-scope="text">
+ {{ 'issue_state' | dictType(text) }}
+ </span> -->
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsArea:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsArea:edit') & hasPerm('WmsArea:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsArea:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsAreaDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsAreaPage, WmsAreaDelete } from '@/api/modular/main/WmsAreaManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍚嶇О',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鎻忚堪',
+ align: 'center',
+ dataIndex: 'areaDesc'
+ },
+ {
+ title: '鍒嗙被',
+ align: 'center',
+ dataIndex: 'areaType',
+ scopedSlots: { customRender: 'areaTypescopedSlots' }
+ },
+ // {
+ // title: '鐘舵��',
+ // align: 'center',
+ // dataIndex: 'areaStatus',
+ // scopedSlots: { customRender: 'areaStatusscopedSlots' }
+ // },
+ {
+ title: '鏄惁涓洪挗骞冲彴',
+ align: 'center',
+ customRender: (value) => (value ? <a-tag color="#87d068">鏄�</a-tag> : <a-tag color="gray">鍚�</a-tag>),
+ dataIndex: 'isSteel'
+ },
+ {
+ title: '鎵�灞炶溅闂�',
+ align: 'center',
+ dataIndex: 'workShopType',
+ scopedSlots: { customRender: 'workShopTypescopedSlots' }
+ },
+ // {
+ // title: '绛炬牳鐘舵��',
+ // align: 'center',
+ // dataIndex: 'issueState',
+ // scopedSlots: { customRender: 'issueStatescopedSlots' }
+ // }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsAreaPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ res.data.rows = res.data.rows.map((_obj)=>{
+ _obj.areaStatus= _obj.areaStatus.toString()
+ _obj.areaType= _obj.areaType.toString()
+ _obj.workShopType= _obj.workShopType.toString()
+ _obj.issueState= _obj.issueState.toString()
+ return _obj;
+ })
+ return res.data
+ })
+ },
+ areaStatusData: [],
+ areaTypeData: [],
+ workShopTypeData: [],
+ issueStateData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsArea:edit') || this.hasPerm('WmsArea:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const areaStatusOption = this.$options
+ this.areaStatusData = areaStatusOption.filters['dictData']('common_status')
+ const areaTypeOption = this.$options
+ this.areaTypeData = areaTypeOption.filters['dictData']('area_type')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ // const issueStateOption = this.$options
+ // this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsAreaDelete (record) {
+ WmsAreaDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue
new file mode 100644
index 0000000..098707d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/addForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+ <a-modal
+ title="鏂板缁勮杞﹂棿鐗╂枡淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐗╂枡鍚嶇О" v-decorator="['materialId']">
+ <a-select-option v-for="(item,index) in WmsAssembleMaterialData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="搴撳尯鍙傛暟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+ </a-form-item>
+ <a-form-item label="宸ヤ綔鍖哄弬鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+ </a-form-item>
+ <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+ </a-form-item>
+ <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="閫昏緫鍖哄煙" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ラ�昏緫鍖哄煙" style="width: 100%" v-decorator="['logicalName']" />
+ </a-form-item>
+ <a-form-item label="宸ユ" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨宸ユ" v-decorator="['lesWorkshopSection', {rules: [{ required: true, message: '璇烽�夋嫨宸ユ锛�' }]}]">
+ <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList,
+ WmsAssembleMaterialAttributAdd
+ } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ lesWorkshopSectionData: [],
+ issueStateData: [],
+ WmsAssembleMaterialData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList().then(res => {
+ this.WmsAssembleMaterialData = res.data
+ })
+ },
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const lesWorkshopSectionOption = this.$options
+ this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+ const issueStateOption = this.$options
+ this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ this.WmsAssembleMaterialAttributFkWmsAssembleMaterialList()
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsAssembleMaterialAttributAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue
new file mode 100644
index 0000000..d370126
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/editForm.vue
@@ -0,0 +1,145 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫缁勮杞﹂棿鐗╂枡淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鐗╂枡鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鐗╂枡鍚嶇О" v-decorator="['materialId']">
+ <a-select-option v-for="(item,index) in WmsAssembleMaterialData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="搴撳尯鍙傛暟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+ </a-form-item>
+ <a-form-item label="宸ヤ綔鍖哄弬鏁�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+ </a-form-item>
+ <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+ </a-form-item>
+ <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="閫昏緫鍖哄煙" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ラ�昏緫鍖哄煙" style="width: 100%" v-decorator="['logicalName']" />
+ </a-form-item>
+ <a-form-item label="宸ユ" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨宸ユ" v-decorator="['lesWorkshopSection', {rules: [{ required: true, message: '璇烽�夋嫨宸ユ锛�' }]}]">
+ <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨绛炬牳鐘舵��" v-decorator="['issueState', {rules: [{ required: true, message: '璇烽�夋嫨绛炬牳鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList,
+ WmsAssembleMaterialAttributEdit
+ } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ lesWorkshopSectionData: [],
+ issueStateData: [],
+ WmsAssembleMaterialData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList() {
+ WmsAssembleMaterialAttributFkWmsAssembleMaterialList().then(res => {
+ this.WmsAssembleMaterialData = res.data
+ })
+ },
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const lesWorkshopSectionOption = this.$options
+ this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+ const issueStateOption = this.$options
+ this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ materialId: record.materialId,
+ areaNameParameter: record.areaNameParameter,
+ stationNameParameter: record.stationNameParameter,
+ maturationTime: record.maturationTime,
+ isMaturation: record.isMaturation,
+ logicalName: record.logicalName,
+ lesWorkshopSection: record.lesWorkshopSection,
+ issueState: record.issueState
+ }
+ )
+ })
+ this.WmsAssembleMaterialAttributFkWmsAssembleMaterialList()
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsAssembleMaterialAttributEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue
new file mode 100644
index 0000000..4584ecf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsAssembleMaterialAttribut/index.vue
@@ -0,0 +1,215 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsAssembleMaterialAttribut:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撳尯鍙傛暟">
+ <a-input v-model="queryParam.areaNameParameter" allow-clear placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="宸ヤ綔鍖哄弬鏁�">
+ <a-input v-model="queryParam.stationNameParameter" allow-clear placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鐔熷寲鏃堕棿">
+ <a-input-number v-model="queryParam.maturationTime" style="width: 100%" allow-clear placeholder="璇疯緭鍏ョ啛鍖栨椂闂�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="閫昏緫鍖哄煙">
+ <a-input-number v-model="queryParam.logicalName" style="width: 100%" allow-clear placeholder="璇疯緭鍏ラ�昏緫鍖哄煙"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="宸ユ">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.lesWorkshopSection" placeholder="璇烽�夋嫨宸ユ">
+ <a-select-option v-for="(item,index) in lesWorkshopSectionData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="绛炬牳鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.issueState" placeholder="璇烽�夋嫨绛炬牳鐘舵��">
+ <a-select-option v-for="(item,index) in issueStateData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsAssembleMaterialAttribut:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsAssembleMaterialAttribut:exportExcel')" icon="download" @click="wmsAssembleMaterialAttributToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsAssembleMaterialAttribut:add')" icon="plus" @click="$refs.addForm.add()">鏂板缁勮杞﹂棿鐗╂枡淇℃伅</a-button>
+ </template>
+ <span slot="lesWorkshopSectionscopedSlots" slot-scope="text">
+ {{ 'lesworkshop_section' | dictType(text) }}
+ </span>
+ <span slot="issueStatescopedSlots" slot-scope="text">
+ {{ 'issue_state' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsAssembleMaterialAttribut:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsAssembleMaterialAttribut:edit') & hasPerm('WmsAssembleMaterialAttribut:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsAssembleMaterialAttribut:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsAssembleMaterialAttributDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsAssembleMaterialAttributPage, WmsAssembleMaterialAttributDelete } from '@/api/modular/main/WmsAssembleMaterialAttributManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ customRender: (value, record) => record.wmsAssembleMaterial.materialName,
+ dataIndex: 'materialId'
+ },
+ {
+ title: '搴撳尯鍙傛暟',
+ align: 'center',
+ dataIndex: 'areaNameParameter'
+ },
+ {
+ title: '宸ヤ綔鍖哄弬鏁�',
+ align: 'center',
+ dataIndex: 'stationNameParameter'
+ },
+ {
+ title: '鐔熷寲鏃堕棿',
+ align: 'center',
+ dataIndex: 'maturationTime'
+ },
+ {
+ title: '鏄惁闇�瑕佺啛鍖�',
+ align: 'center',
+ customRender: (value) => (value ? <a-tag color="green">True</a-tag> : <a-tag color="volcano">False</a-tag>),
+ dataIndex: 'isMaturation'
+ },
+ {
+ title: '閫昏緫鍖哄煙',
+ align: 'center',
+ dataIndex: 'logicalName'
+ },
+ {
+ title: '宸ユ',
+ align: 'center',
+ dataIndex: 'lesWorkshopSection',
+ scopedSlots: { customRender: 'lesWorkshopSectionscopedSlots' }
+ },
+ {
+ title: '绛炬牳鐘舵��',
+ align: 'center',
+ dataIndex: 'issueState',
+ scopedSlots: { customRender: 'issueStatescopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsAssembleMaterialAttributPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ lesWorkshopSectionData: [],
+ issueStateData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsAssembleMaterialAttribut:edit') || this.hasPerm('WmsAssembleMaterialAttribut:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const lesWorkshopSectionOption = this.$options
+ this.lesWorkshopSectionData = lesWorkshopSectionOption.filters['dictData']('lesworkshop_section')
+ const issueStateOption = this.$options
+ this.issueStateData = issueStateOption.filters['dictData']('issue_state')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsAssembleMaterialAttributDelete (record) {
+ WmsAssembleMaterialAttributDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue
new file mode 100644
index 0000000..514186b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsBindIn/index.vue
@@ -0,0 +1,16 @@
+锘�<template>
+ <div>
+
+ </div>
+</template>
+<script>
+
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue
new file mode 100644
index 0000000..26f876e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/addForm.vue
@@ -0,0 +1,142 @@
+锘�<template>
+ <a-modal
+ title="鏂板鎵樼洏淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" v-decorator="['containerCode', {rules: [{ required: true, message: '璇疯緭鍏ユ墭鐩樼紪鍙凤紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="鎵樼洏绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏绫诲瀷" v-decorator="['containerType', {rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in containerTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <!-- <a-form-item label="鎵樼洏鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鐘舵��" v-decorator="['containerStatus', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in containerStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ <!-- <a-form-item label="鏁伴噺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ暟閲�" style="width: 100%" v-decorator="['Quantity', {rules: [{ required: true, message: '璇疯緭鍏ユ暟閲忥紒' }]}]" />
+ </a-form-item> -->
+ <a-form-item label="闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ暱搴�" v-decorator="['specLength']" />
+ </a-form-item>
+ <a-form-item label="瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ュ搴�" v-decorator="['specWidth']" />
+ </a-form-item>
+ <a-form-item label="楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ珮搴�" v-decorator="['specHeight']" />
+ </a-form-item>
+ <!-- <a-form-item label="闄愰暱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺闀�" v-decorator="['limitLength']" />
+ </a-form-item>
+ <a-form-item label="闄愬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺瀹�" v-decorator="['limitWidth']" />
+ </a-form-item>
+ <a-form-item label="闄愰珮" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺楂�" v-decorator="['limitHeight']" />
+ </a-form-item>
+ <a-form-item label="杞介噸涓婇檺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ヨ浇閲嶄笂闄�" v-decorator="['maxWeight']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="鐖舵墭鐩業d" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ埗鎵樼洏Id" v-decorator="['parentContainerId']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="鎵樼洏鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被" v-decorator="['containerCategory', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsContainerAdd
+ } from '@/api/modular/main/WmsContainerManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ containerTypeData: [],
+ containerStatusData: [],
+ containerCategoryData: [],
+ workShopTypeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ })
+ const containerTypeOption = this.$options
+ this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+ const containerCategoryOption = this.$options
+ this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsContainerAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue
new file mode 100644
index 0000000..c7dfa1e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/editForm.vue
@@ -0,0 +1,165 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鎵樼洏淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鎵樼洏缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input disabled placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" v-decorator="['containerCode', {rules: [{ required: true, message: '璇疯緭鍏ユ墭鐩樼紪鍙凤紒' }]}]" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨绫诲瀷" v-decorator="['containerType', {rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in containerTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎵樼洏鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鐘舵��" v-decorator="['containerStatus', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in containerStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ暱搴�" v-decorator="['specLength']" />
+ </a-form-item>
+ <a-form-item label="瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ュ搴�" v-decorator="['specWidth']" />
+ </a-form-item>
+ <a-form-item label="楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ珮搴�" v-decorator="['specHeight']" />
+ </a-form-item>
+ <!-- <a-form-item label="闄愰暱" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺闀�" v-decorator="['limitLength']" />
+ </a-form-item>
+ <a-form-item label="闄愬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺瀹�" v-decorator="['limitWidth']" />
+ </a-form-item>
+ <a-form-item label="闄愰珮" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ラ檺楂�" v-decorator="['limitHeight']" />
+ </a-form-item>
+ <a-form-item label="杞介噸涓婇檺" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number style="width:100%" :min="0" placeholder="璇疯緭鍏ヨ浇閲嶄笂闄�" v-decorator="['maxWeight']" />
+ </a-form-item>
+ <a-form-item label="鐖舵墭鐩業d" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ埗鎵樼洏Id" v-decorator="['parentContainerId']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="鎵樼洏鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被" v-decorator="['containerCategory', {rules: [{ required: true, message: '璇烽�夋嫨鎵樼洏鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsContainerEdit
+ } from '@/api/modular/main/WmsContainerManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ containerTypeData: [],
+ containerStatusData: [],
+ containerCategoryData: [],
+ workShopTypeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ this.Id = record.id
+ this.$nextTick(() => {
+ })
+ // 娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const containerTypeOption = this.$options
+ this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+ const containerCategoryOption = this.$options
+ this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ containerCode: record.containerCode,
+ containerType: record.containerType,
+ containerStatus: record.containerStatus,
+ specLength: record.specLength,
+ specWidth: record.specWidth,
+ specHeight: record.specHeight,
+ limitLength: record.limitLength,
+ limitWidth: record.limitWidth,
+ limitHeight: record.limitHeight,
+ maxWeight: record.maxWeight,
+ parentContainerId: record.parentContainerId
+ // containerCategory: record.containerCategory,
+ // workShopType: record.workShopType
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsContainerEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue
new file mode 100644
index 0000000..c9b7831
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/excelForm.vue
@@ -0,0 +1,195 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger
+ accept=".xlsx,.xls"
+ :multiple="false"
+ :custom-request="customRequest"
+ :file-list="fileList"
+ :before-upload="beforeUpload"
+ :remove="handleRemove">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">
+ {{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="deskFactoryDownloadExcelTemplate" type="link">
+ 涓嬭浇瀵煎叆妯℃澘
+ </a-button>
+ 锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record,index) => index" :pagination="false">
+ </a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { WmsContainerFromExcel, WmsContainerDownloadExcelTemplate} from '@/api/modular/main/WmsContainerManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ fileContext: {},
+ importExcelTypeData: [],
+ importExcelType: '1',
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.fileContext = {};
+ this.fileList = [];
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText()
+ window.downloadFile = this.deskFactoryDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "DeskFactory"}).then(res => {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ customRequest(document) {
+ this.fileContext = document
+ },
+ beforeUpload(file) {
+ let res = checkFile(file, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {
+ this.fileContext.onSuccess(this.fileContext.file)
+ this.fileList = [this.fileContext.file]
+ }, 200)
+ },
+ handleRemove (file) {
+ const index = this.fileList.indexOf(file)
+ const newFileList = this.fileList.slice()
+ newFileList.splice(index, 1)
+ this.fileList = newFileList
+ },
+ handleSubmit() {
+ if(this.fileList.length < 1) {
+ this.$message.warning('璇峰厛涓婁紶鏂囦欢锛�')
+ return false
+ }
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.fileList[0])
+ WmsContainerFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=> {
+ this.confirmLoading = false
+ this.fileList = []
+ })
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ deskFactoryDownloadExcelTemplate() {
+ WmsContainerDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+<style scoped="">
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue
new file mode 100644
index 0000000..28cc998
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsContainer/index.vue
@@ -0,0 +1,306 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsContainer:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="缂栧彿">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ョ紪鍙�" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerType" placeholder="璇烽�夋嫨绫诲瀷">
+ <a-select-option v-for="(item, index) in containerTypeData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerStatus"
+ placeholder="璇烽�夋嫨鎵樼洏鐘舵��">
+ <a-select-option v-for="(item, index) in containerStatusData" :key="index" :value="item.code">{{
+ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="闀垮害">
+ <a-input v-model="queryParam.specLength" allow-clear placeholder="璇疯緭鍏ラ暱搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹藉害">
+ <a-input v-model="queryParam.specWidth" allow-clear placeholder="璇疯緭鍏ュ搴�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏鍒嗙被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.containerCategory" placeholder="璇烽�夋嫨鎵樼洏鍒嗙被">
+ <a-select-option v-for="(item,index) in containerCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炶溅闂�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('WmsContainer:add')">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+ @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsContainer:exportExcel')" icon="download" @click="wmsContainerToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsContainer:add')" icon="plus"
+ @click="$refs.addForm.add()">鏂板</a-button>
+ </template>
+ <span slot="containerTypescopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#cd853f' : (text === '2' ? '#d3d3d3' : (text === '3' ? '#1e90ff' : '#696969'))">{{
+ 'container_type'
+ | dictType(text) }}</a-tag>
+ </span>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#daa520' : (text === '2' ? '#cd5c5c' : (text === '3' ? '#add8e6' : '#696969'))">{{
+ 'container_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="containerCategoryscopedSlots" slot-scope="text">
+ <a-tag :color="text === '1' ? '#00ffff' : (
+ text === '2' ? '#ffe4c4' : (
+ text === '3' ? '#8a2be2' : (
+ text === '4' ? '#5f9ea0' : (
+ text === '5' ? '#00008b' : '#696969'
+ )
+ )
+ )
+ )
+ ">{{ 'container_category' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="workShopTypescopedSlots" slot-scope="text">
+ {{ 'les_workshop_type' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsContainer:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <!-- <a-divider type="vertical" v-if="hasPerm('WmsContainer:edit') & hasPerm('WmsContainer:delete')"/> -->
+ <!-- <a-popconfirm v-if="hasPerm('WmsContainer:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsContainerDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsContainerPage, WmsContainerDelete } from '@/api/modular/main/WmsContainerManage'
+import { exportExcel } from '@/utils/exportToExcel'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import excelForm from './excelForm.vue'
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '缂栧彿',
+ align: 'center',
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '绫诲瀷',
+ align: 'center',
+ dataIndex: 'containerType',
+ scopedSlots: { customRender: 'containerTypescopedSlots' }
+ },
+ {
+ title: '鎵樼洏鐘舵��',
+ align: 'center',
+ dataIndex: 'containerStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' }
+ },
+ {
+ title: '闀垮害',
+ align: 'center',
+ dataIndex: 'specLength'
+ },
+ {
+ title: '瀹藉害',
+ align: 'center',
+ dataIndex: 'specWidth'
+ },
+ {
+ title: '楂樺害',
+ align: 'center',
+ dataIndex: 'specHeight'
+ },
+ // {
+ // title: '闄愰暱',
+ // align: 'center',
+ // dataIndex: 'limitLength'
+ // },
+ // {
+ // title: '闄愬',
+ // align: 'center',
+ // dataIndex: 'limitWidth'
+ // },
+ // {
+ // title: '闄愰珮',
+ // align: 'center',
+ // dataIndex: 'limitHeight'
+ // },
+ // {
+ // title: '杞介噸涓婇檺',
+ // align: 'center',
+ // dataIndex: 'maxWeight'
+ // }
+ // {
+ // title: '鎵樼洏鍒嗙被',
+ // align: 'center',
+ // dataIndex: 'containerCategory',
+ // scopedSlots: { customRender: 'containerCategoryscopedSlots' }
+ // }
+ // ,{
+ // title: '鎵�灞炶溅闂�',
+ // align: 'center',
+ // dataIndex: 'workShopType',
+ // scopedSlots: { customRender: 'workShopTypescopedSlots' }
+ // }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsContainerPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ res.data.rows = res.data.rows.map((_obj) => {
+ _obj.containerType = _obj.containerType.toString()
+ _obj.containerStatus = _obj.containerStatus.toString()
+ _obj.containerCategory = _obj.containerCategory.toString()
+ _obj.workShopType = _obj.workShopType.toString()
+ return _obj
+ })
+ return res.data
+ })
+ },
+ containerTypeData: [],
+ containerStatusData: [],
+ containerCategoryData: [],
+ workShopTypeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsContainer:edit') || this.hasPerm('WmsContainer:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if (columnStr) {
+ this.columns = JSON.parse(columnStr)
+ }
+ const containerTypeOption = this.$options
+ this.containerTypeData = containerTypeOption.filters['dictData']('container_type')
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('container_status')
+ const containerCategoryOption = this.$options
+ this.containerCategoryData = containerCategoryOption.filters['dictData']('container_category')
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsContainerDelete(record) {
+ WmsContainerDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ //瀵煎嚭
+ wmsContainerToExcel() {
+ let entozh = {}
+ const path = this.$route.path
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ WmsContainerPage(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then(res => {
+ res.data.rows.map(item => {
+ item.containerType = this.$options.filters['dictType']('container_type',item.containerType)
+ item.containerStatus = this.$options.filters['dictType']('container_status',item.containerStatus)
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", "瀹瑰櫒鍩虹淇℃伅琛�")
+ })
+
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue
new file mode 100644
index 0000000..59d9883
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/addForm.vue
@@ -0,0 +1,105 @@
+锘�<template>
+ <a-modal
+ title="鏂板杞偍鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="鍒涘缓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-decorator="['billdate']" @change="onChangebilldate"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤轰汉" v-decorator="['creator']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsDumpOrderAdd
+ } from '@/api/modular/main/WmsDumpOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ billdateDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.billdate = this.billdateDateString
+ WmsDumpOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangebilldate(date, dateString) {
+ this.billdateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue
new file mode 100644
index 0000000..b8651b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/editForm.vue
@@ -0,0 +1,127 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫杞偍鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="鍒涘缓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-decorator="['billdate']" @change="onChangebilldate"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤轰汉" v-decorator="['creator']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ WmsDumpOrderEdit
+ } from '@/api/modular/main/WmsDumpOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ billdateDateString: '',
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ nO: record.nO,
+ creator: record.creator,
+ companyname: record.companyname,
+ orderStatus: record.orderStatus
+ }
+ )
+ })
+ this.form.getFieldDecorator('billdate', { initialValue: moment(record.billdate, 'YYYY-MM-DD') })
+ this.billdateDateString = moment(record.billdate).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.billdate = this.billdateDateString
+ this.record.billdate = this.billdateDateString
+ WmsDumpOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangebilldate(date, dateString) {
+ this.billdateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue
new file mode 100644
index 0000000..4c40d05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsDumpOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsDumpOrderFromExcel, wmsDumpOrderDownloadExcelTemplate} from '@/api/modular/main/WmsDumpOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsDumpOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsDumpOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsDumpOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsDumpOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsDumpOrderDownloadExcelTemplate() {
+ wmsDumpOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue
new file mode 100644
index 0000000..e691b2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsDumpOrder/index.vue
@@ -0,0 +1,201 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsDumpOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.nO" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃ユ湡">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃ユ湡" v-model="queryParam.billdateDate" @change="onChangebilldate"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓浜�">
+ <a-input v-model="queryParam.creator" allow-clear placeholder="璇疯緭鍏ュ垱寤轰汉"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsDumpOrder:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsDumpOrder:exportExcel')" icon="download" @click="wmsDumpOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsDumpOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板杞偍鍗�</a-button>
+ </template>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ {{ 'order_status' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsDumpOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsDumpOrder:edit') & hasPerm('WmsDumpOrder:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsDumpOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsDumpOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { WmsDumpOrderPage, WmsDumpOrderDelete } from '@/api/modular/main/WmsDumpOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'nO'
+ },
+ {
+ title: '鍒涘缓鏃ユ湡',
+ align: 'center',
+ dataIndex: 'billdate'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'creator'
+ },
+ {
+ title: '鍏徃',
+ align: 'center',
+ dataIndex: 'companyname'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsDumpOrderPage(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ orderStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsDumpOrder:edit') || this.hasPerm('WmsDumpOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_status')
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const queryParambilldate = this.queryParam.billdateDate
+ if (queryParambilldate != null) {
+ this.queryParam.billdate = moment(queryParambilldate).format('YYYY-MM-DD')
+ if (queryParambilldate.length < 1) {
+ delete this.queryParam.billdate
+ }
+ }else
+ {
+ delete this.queryParam.billdate
+ }
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsDumpOrderDelete (record) {
+ WmsDumpOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ onChangebilldate(date, dateString) {
+ this.billdateDateString = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue
new file mode 100644
index 0000000..7a9d0be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/DetailDrawer.vue
@@ -0,0 +1,248 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+<!-- 閫�璐у崟 - 璇︽儏 -->
+ <div v-if="visible" style="background-color: white">
+ <div class="">
+ <div class="">
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a
+ >鍗曟嵁璇︽儏
+ </span>
+ <div style="margin-top: 10px;">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :scroll="{x: true}"
+ >
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+ >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+ >
+ </span>
+ <!-- 瀹為檯閫�璐ф暟閲� -->
+ <template slot="qtyscopedSlots" slot-scope="text, record, index">
+ <a-input-number style="width:100%;" v-model="record.qty" :min="0" />
+ </template>
+ <!-- 宸紓鏁� -->
+ <!-- <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+ {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+ </template> -->
+
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+import { STable } from '@/components'
+
+export default {
+ components: {
+ STable
+ },
+ name: 'WmsReceiptOrderDetailDrawer',
+ emits: ['update:visible','postBjData'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ dataIndex:'projectCode',
+ title:'椤圭洰缂栧彿',
+ width:'120px'
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ minWidth:'120px'
+ },
+ {
+ dataIndex:'taCode',
+ title:'TA缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ // {
+ // dataIndex: 'batchno_WMS',
+ // title: '鎵规',
+ // align: 'center'
+ // },
+ // {
+ // dataIndex: 'qty',
+ // title: '鏁伴噺',
+ // align: 'center',
+ // scopedSlots: { customRender: 'qtyscopedSlots' }
+ // },
+ // {
+ // dataIndex: 'deliveryQty',
+ // title: '閫佽揣鏁伴噺',
+ // align: 'center'
+ // },
+ {
+ dataIndex: 'qty',
+ title: '閫�璐ф暟閲�',
+ align: 'center',
+ width:'200px',
+ scopedSlots: { customRender: 'qtyscopedSlots' }
+ },
+ // {
+ // dataIndex: 'chaQty',
+ // title: '宸紓鏁�',
+ // align: 'center',
+ // scopedSlots: { customRender: 'qtyChaScopedSlots' }
+ // },
+ // {
+ // dataIndex: 'containerCode',
+ // title: '鎵樼洏缂栫爜',
+ // align: 'center'
+ // },
+ // {
+ // title: '鐘舵��',
+ // align: 'center',
+ // dataIndex: 'orderStatus',
+ // scopedSlots: { customRender: 'containerStatusscopedSlots' }
+ // },
+ // {
+ // dataIndex:'unit',
+ // title:'鍩烘湰鍗曚綅'
+ // },
+
+ // {
+ // dataIndex:'customsUnitName',
+ // title:'鍗曚綅'
+ // },
+ // {
+ // dataIndex:'tradeName',
+ // title:'鍝佸悕'
+ // },
+
+
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10','20','30','40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size:'small'
+ },
+ selectedRowKeys: [],
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true
+ this.getList(() => {
+ this.loading = false
+ })
+ },
+ getList(row) {
+ WmsOrderLldDetail({ id: row.id })
+ .then(d => {
+ this.list = d.data.rows || []
+ this.$emit('update:visible', true)
+
+ // callback && callback(true)
+ })
+ .catch(() => {
+ this.list = []
+ this.$emit('update:visible', false)
+
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ this.$emit('postBjData', this.selectedRows)
+ },
+ clearAll(){
+ this.selectedRowKeys = []
+ this.selectedRows = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue
new file mode 100644
index 0000000..7485539
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/addForm.vue
@@ -0,0 +1,82 @@
+锘�<template>
+ <a-modal
+ title="鏂板閫�璐у崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsGoodsReturnOrderAdd
+ } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const goodsReturnStatusOption = this.$options
+ this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsGoodsReturnOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue
new file mode 100644
index 0000000..316b7e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/editForm.vue
@@ -0,0 +1,95 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫閫�璐у崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsGoodsReturnOrderEdit
+ } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const goodsReturnStatusOption = this.$options
+ this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsGoodsReturnOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue
new file mode 100644
index 0000000..f0d6f44
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsGoodsReturnOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsGoodsReturnOrderFromExcel, wmsGoodsReturnOrderDownloadExcelTemplate} from '@/api/modular/main/WmsGoodsReturnOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsGoodsReturnOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsGoodsReturnOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsGoodsReturnOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsGoodsReturnOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsGoodsReturnOrderDownloadExcelTemplate() {
+ wmsGoodsReturnOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue
new file mode 100644
index 0000000..3caf878
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsGoodsReturnOrder/index.vue
@@ -0,0 +1,304 @@
+锘�<template>
+ <div>
+ <!-- 閫�璐у崟 -->
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsGoodsReturnOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗙紪鐮�">
+ <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗗悕绉�">
+ <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撶鍛�">
+ <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳偍涓績">
+ <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="閫�璐х姸鎬�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.goodsReturnStatus" placeholder="璇烽�夋嫨閫�璐х姸鎬�">
+ <a-select-option v-for="(item,index) in goodsReturnStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsGoodsReturnOrder:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsGoodsReturnOrder:exportExcel')" icon="download" @click="wmsGoodsReturnOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsGoodsReturnOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板閫�璐у崟</a-button>
+ </template>
+
+
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+
+
+ <span slot="goodsReturnStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'GoodsReturnStatus' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+
+
+ <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 1 ? 'disabled' : '']"
+ @click="onDistributeBj(record)">閫�璐�</a>
+
+ <!-- <a v-if="hasPerm('WmsGoodsReturnOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsGoodsReturnOrder:edit') & hasPerm('WmsGoodsReturnOrder:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsGoodsReturnOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsGoodsReturnOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData"/>
+
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsGoodsReturnOrderPage, WmsGoodsReturnOrderDelete } from '@/api/modular/main/WmsGoodsReturnOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'no',
+ scopedSlots: { customRender: 'linkSlot' },
+ minWidth:"100px"
+
+ },
+ {
+ title: '鍒涘缓鏃ユ湡',
+ align: 'center',
+ dataIndex: 'billdate',
+ width:"150px"
+ },
+ {
+ title: '渚涘簲鍟嗙紪鐮�',
+ align: 'center',
+ dataIndex: 'vendorcode',
+ minWidth:"100px"
+ },
+ {
+ title: '渚涘簲鍟嗗悕绉�',
+ align: 'center',
+ dataIndex: 'vendorname',
+ minWidth:"100px"
+ },
+ {
+ title: '鍏徃鍚嶇О',
+ align: 'center',
+ dataIndex: 'companyname',
+ minWidth:"100px"
+ },
+ {
+ title: '浠撶鍛�',
+ align: 'center',
+ dataIndex: 'warehouseKeepername',
+ minWidth:"100px"
+ },
+ {
+ title: '浠撳偍涓績',
+ align: 'center',
+ dataIndex: 'warehouseCentername',
+ minWidth:"100px"
+ },
+ {
+ title: '閫�璐х姸鎬�',
+ align: 'center',
+ dataIndex: 'goodsReturnStatus',
+ scopedSlots: { customRender: 'goodsReturnStatusscopedSlots' },
+ minWidth:"100px"
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsGoodsReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.$nextTick(()=>{
+ if(res.data.rows && res.data.rows.length>0){
+ this.onOpenInfo(res.data.rows[0]);
+ }
+ })
+ return res.data
+ })
+ },
+ goodsReturnStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ //璇︽儏鍙橀噺
+ infoRow: {},
+ infoVisible: false,
+ postBjDataArr: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsGoodsReturnOrder:edit') || this.hasPerm('WmsGoodsReturnOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const goodsReturnStatusOption = this.$options
+ this.goodsReturnStatusData = goodsReturnStatusOption.filters['dictData']('GoodsReturnStatus')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsGoodsReturnOrderDelete (record) {
+ WmsGoodsReturnOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ //璇︽儏
+ onOpenInfo(row) {
+ this.infoVisible = true;
+ this.infoRow = row;
+ if(row){
+ this.$refs.tableDetailDrawer.getList(row);
+ }
+ },
+ // 閫変腑鐨勭墿鏂�
+ postBjData(data) {
+ this.postBjDataArr = data
+ },
+ // 閫�璐�
+ onDistributeBj(obj) {
+ // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+ // if (obj.orderStatus == 1) return false
+
+
+
+ // if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+ // this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+ // return
+ // }
+ // this.$confirm({
+ // title: '绯荤粺鎻愮ず',
+ // content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+ // okText: '纭',
+ // cancelText: '鍙栨秷',
+ // onOk: () => {
+ // let param = {
+ // ...obj,
+ // dtls: this.postBjDataArr
+ // }
+ // WmsOrderBaojian(param).then(res => {
+ // if (res.success) {
+ // this.$message.success('鎿嶄綔鎴愬姛')
+ // this.$refs.table.refresh()
+ // } else {
+ // this.$message.error('鎿嶄綔澶辫触')
+ // }
+ // })
+ // }
+ // })
+ },
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue
new file mode 100644
index 0000000..eba364c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/addForm.vue
@@ -0,0 +1,260 @@
+<template>
+ <a-modal
+ title="鏂板鐗╂枡淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-row>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡缂栧彿" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"
+ v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鍚嶇О" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"
+ v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡绫诲埆">
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鐗╂枡绫诲埆"
+ v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]"
+ >
+ <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡灏哄" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡瀵嗗害" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" />
+ </a-form-item>
+ </a-col>
+
+ <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback>
+ <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']">
+ <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback>
+ <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']">
+ <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鎵规" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"
+ v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡妫�楠�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鐗╂枡妫�楠�"
+ v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]"
+ >
+ <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鍗曚綅" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="瀹夊叏瀛橀噺" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�澶у瓨閲�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�灏忓簱榫�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�澶у簱榫�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鎻忚堪" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea>
+ </a-form-item>
+ </a-col>
+
+ <!-- <a-form-item label="搴撳尯Ids" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ簱鍖篒ds" v-decorator="['areaIds']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ簱鍖哄弬鏁�" v-decorator="['areaNameParameter']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="宸ヤ綔鍖篒ds" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐浣滃尯Ids" v-decorator="['stationIds']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐浣滃尯鍙傛暟" v-decorator="['stationNameParameter']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="宸ユ" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ伐娈�" v-decorator="['lesWorkshopSection']" />
+ </a-form-item> -->
+
+ <!-- <a-form-item label="绛炬牳鐘舵��" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+ </a-form-item> -->
+
+ <!-- <a-form-item label="鐔熷寲鏃堕棿" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+ </a-form-item> -->
+ <!-- <a-form-item label="鏄惁闇�瑕佺啛鍖�" >
+ <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+ </a-form-item> -->
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { WmsMaterialAdd, GetAreas, GetStations } from '@/api/modular/main/WmsMaterialManage'
+export default {
+ data() {
+ return {
+ labelCol: {
+ // xs: { span: 24 },
+ // sm: { span: 5 }
+ span: 8
+ },
+ wrapperCol: {
+ // xs: { span: 24 },
+ // sm: { span: 15 }
+ span: 13
+ },
+ inspectionMethodData: [],
+ materialTypeData: [],
+ areaNameParameterData: [],
+ stationNameParameterData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add(record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.getSelects()
+ })
+ const materialTypeOption = this.$options
+ this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+ const inspectionMethodOption = this.$options
+ this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+ },
+ getSelects() {
+ if (this.areaNameParameterData.length <= 0 || this.stationNameParameterData.length <= 0) {
+ this.confirmLoading = true
+ Promise.all([GetAreas(), GetStations()])
+ .then(response => {
+ this.areaNameParameterData = response[0].data || []
+ this.stationNameParameterData = response[1].data || []
+ this.confirmLoading = false
+ })
+ .catch(() => {
+ this.confirmLoading = false
+ })
+ }
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit() {
+ const {
+ form: { validateFields }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ if (this.$getObjectType(values.areas) === 'array') {
+ values.areaIds = values.areas.join(',')
+ values.areaNameParameterArr = values.areas.map(val => {
+ return this.parseSelectName(val, 'areaId', 'areaName', 'areaNameParameterData')
+ })
+ values.areaNameParameter = values.areaNameParameterArr.join(',')
+ }
+ if (this.$getObjectType(values.stations) === 'array') {
+ values.stationIds = values.stations.join(',')
+ values.stationNameParameterArr = values.stations.map(val => {
+ return this.parseSelectName(val, 'stationId', 'stationName', 'stationNameParameterData')
+ })
+ values.stationNameParameter = values.stationNameParameterArr.join(',')
+ }
+ WmsMaterialAdd(values)
+ .then(res => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ })
+ .finally(res => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ parseSelectName(val, field, nfield, pfield) {
+ let res = val
+ for (let i = 0; i < this[pfield].length; i++) {
+ if (val === this[pfield][i][field]) {
+ res = this[pfield][i][nfield]
+ break
+ }
+ }
+ return res
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue
new file mode 100644
index 0000000..01953b1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/editForm.vue
@@ -0,0 +1,263 @@
+<template>
+ <a-modal
+ title="缂栬緫鐗╂枡淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+
+ <a-row>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡缂栧彿" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"
+ disabled v-decorator="['materialNo', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欑紪鍙凤紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鍚嶇О" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"
+ v-decorator="['materialName', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉帮紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡绫诲埆">
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鐗╂枡绫诲埆"
+ v-decorator="['materialType', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡绫诲埆锛�' }] }]"
+ >
+ <a-select-option v-for="(item, index) in materialTypeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡灏哄" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�" v-decorator="['materialSpec']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡瀵嗗害" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�" v-decorator="['materialDensity']" />
+ </a-form-item>
+ </a-col>
+
+ <!-- <a-form-item label="搴撳尯鍙傛暟" has-feedback>
+ <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨搴撳尯鍙傛暟" v-decorator="['areas']">
+ <a-select-option v-for="(item,index) in areaNameParameterData" :key="index" :value="item.areaId">{{ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="宸ヤ綔鍖哄弬鏁�" has-feedback>
+ <a-select mode="multiple" style="width: 100%" placeholder="璇烽�夋嫨宸ヤ綔鍖哄弬鏁�" v-decorator="['stations']">
+ <a-select-option v-for="(item,index) in stationNameParameterData" :key="index" :value="item.stationId">{{ item.stationName }}</a-select-option>
+ </a-select>
+ </a-form-item> -->
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鎵规" has-feedback>
+ <a-input
+ disabled placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"
+ v-decorator="['materialBatch', { rules: [{ required: true, message: '璇疯緭鍏ョ墿鏂欐壒娆★紒' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡妫�楠�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鐗╂枡妫�楠�"
+ v-decorator="['inspectionMethod', { rules: [{ required: true, message: '璇烽�夋嫨鐗╂枡妫�楠岋紒' }] }]"
+ >
+ <a-select-option v-for="(item, index) in inspectionMethodData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鐗╂枡鍗曚綅" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欏崟浣�" v-decorator="['materialUnit']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="瀹夊叏瀛橀噺" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ュ畨鍏ㄥ瓨閲�" v-decorator="['safeqty']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�澶у瓨閲�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у瓨閲�" v-decorator="['maxImumqty']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�灏忓簱榫�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶灏忓簱榫�" v-decorator="['minstorageAge']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鏈�澶у簱榫�" has-feedback>
+ <a-input type="number" min="1" placeholder="璇疯緭鍏ユ渶澶у簱榫�" v-decorator="['maxstorageAge']" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="12">
+ <a-form-item label="鎻忚堪" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ユ弿杩�" v-decorator="['description']"></a-textarea>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <!-- <a-form-item label="鐔熷寲鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ啛鍖栨椂闂�" style="width: 100%" v-decorator="['maturationTime']" />
+ </a-form-item>
+ <a-form-item label="鏄惁闇�瑕佺啛鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-switch v-decorator="['isMaturation', { valuePropName: 'checked' }]" />
+ </a-form-item> -->
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsMaterialEdit,GetAreas,GetStations
+ } from '@/api/modular/main/WmsMaterialManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ // xs: { span: 24 },
+ // sm: { span: 5 }
+ span: 8
+ },
+ wrapperCol: {
+ // xs: { span: 24 },
+ // sm: { span: 15 }
+ span: 13
+ },
+ record: {},
+ inspectionMethodData: [],
+ materialTypeData: [],
+ areaNameParameterData: [],
+ stationNameParameterData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ this.getSelects()
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const materialTypeOption = this.$options
+ this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+ const inspectionMethodOption = this.$options
+ this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+
+ this.$nextTick(() => {
+ let {areas, stations, ...rest } = record
+ this.form.setFieldsValue(
+ {
+ ...rest,
+ // id: record.id,
+ // materialNo: record.materialNo,
+ // materialName: record.materialName,
+ // materialType: record.materialType,
+ // materialSpec: record.materialSpec,
+ // materialDensity: record.materialDensity,
+ // maxImumqty: record.maxImumqty,
+ areas: record.areaIds?record.areaIds.split(','):[],
+ stations: record.stationIds?record.stationIds.split(','):[],
+ // maturationTime: record.maturationTime,
+ // isMaturation: record.isMaturation
+ }
+ )
+ })
+ },
+ getSelects(){
+ if (this.areaNameParameterData.length<=0 || this.stationNameParameterData.length<=0) {
+ this.confirmLoading = true
+ Promise.all([
+ GetAreas(),
+ GetStations()
+ ]).then(response=>{
+ this.areaNameParameterData = response[0].data || []
+ this.stationNameParameterData = response[1].data || []
+ this.confirmLoading = false
+ }).catch(()=>{
+ this.confirmLoading = false
+ })
+ }
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ let params = {...this.record,...values}
+ if (this.$getObjectType(values.areas)==='array') {
+ params.areaIds = values.areas.join(',')
+ params.areaNameParameterArr = values.areas.map((val)=>{
+ return this.parseSelectName(val,'areaId','areaName','areaNameParameterData')
+ })
+ params.areaNameParameter = params.areaNameParameterArr.join(',')
+ }
+ if (this.$getObjectType(values.stations)==='array'){
+ params.stationIds = values.stations.join(',')
+ params.stationNameParameterArr = values.stations.map((val)=>{
+ return this.parseSelectName(val,'stationId','stationName','stationNameParameterData')
+ })
+ params.stationNameParameter = params.stationNameParameterArr.join(',')
+ }
+
+ WmsMaterialEdit(params).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', params)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ parseSelectName(val,field,nfield,pfield){
+ let res = val;
+ for (let i=0;i<this[pfield].length;i++) {
+ if (val===this[pfield][i][field]) {
+ res = this[pfield][i][nfield]
+ break
+ }
+ }
+ return res
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue
new file mode 100644
index 0000000..b67f90d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterial/index.vue
@@ -0,0 +1,349 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterial:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲埆">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡灏哄">
+ <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡瀵嗗害">
+ <a-input v-model="queryParam.materialDensity" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�"/>
+ </a-form-item>
+ </a-col> -->
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true}"
+ :rowKey="(record) => record.id"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsMaterial:add')" >
+ <a-button type="primary" v-if="hasPerm('WmsMaterial:add')" icon="plus" @click="$refs.addForm.add()">鏂板</a-button>
+ </template>
+ <template class="table-operator" slot="operator" >
+
+ <!-- <span>
+ <a-popconfirm v-if="hasPerm('WmsMaterial:tongbu')" placement="topRight" title="纭鍚屾锛�" @confirm="() => handleSubmit()">
+ <a class="tongbubut">鍚屾Desk鏁版嵁</a>
+ </a-popconfirm>
+ </span> -->
+ <!-- <a-button class="tongbubut" @click="handleSubmit">鍚屾Desk鏁版嵁</a-button> -->
+ </template>
+
+
+ <span slot="inspectionMethodscopedSlots" slot-scope="text">
+ {{ 'material_inspection' | dictType(text) }}
+ </span>
+
+
+ <span slot="materialTypescopedSlots" slot-scope="text">
+ {{ 'material_type' | dictType(text) }}
+ </span>
+
+
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsMaterial:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsMaterial:edit') & hasPerm('WmsMaterial:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsMaterial:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsMaterialDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ </a-spin>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsMaterialPage, WmsMaterialDelete,Getdeskdata } from '@/api/modular/main/WmsMaterialManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ loading:false,
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialNo',
+ width:"100px",
+ ellipsis:true
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ dataIndex: 'materialName',
+ width:"100px",
+ ellipsis:true
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialBatch',
+ width:"100px",
+ ellipsis:true
+ },
+ {
+ title: '鐗╂枡绫诲埆',
+ align: 'center',
+ dataIndex: 'materialType',
+ scopedSlots: { customRender: 'materialTypescopedSlots' },
+ width:"100px"
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ dataIndex: 'materialSpec',
+ width:"100px"
+ },
+ {
+ title: '鐗╂枡瀵嗗害',
+ align: 'center',
+ dataIndex: 'materialDensity',
+ width:"100px"
+ },
+ // {
+ // title: '搴撳尯鍙傛暟',
+ // align: 'center',
+ // dataIndex: 'areaNameParameter',
+ // width:"100px"
+ // // scopedSlots: { customRender: 'areaNameParameterscopedSlots' }
+ // },
+ // {
+ // title: '宸ヤ綔鍖哄弬鏁�',
+ // align: 'center',
+ // dataIndex: 'stationNameParameter',
+ // width:"120px"
+ // // scopedSlots: { customRender: 'stationNameParameterscopedSlots' }
+ // },
+ {
+ title: '鐗╂枡妫�楠�',
+ align: 'center',
+ dataIndex: 'inspectionMethod',
+ scopedSlots: { customRender: 'inspectionMethodscopedSlots' },
+ width:"100px"
+ },
+ {
+ title: '鐗╂枡鍗曚綅',
+ align: 'center',
+sorter: true,
+ dataIndex: 'materialUnit',
+ width:"100px"
+ },
+// {
+// title: '搴撳尯Ids',
+// align: 'center',
+// sorter: true,
+// dataIndex: 'areaIds'
+// },
+// {
+// title: '宸ヤ綔鍖篒ds',
+// align: 'center',
+// sorter: true,
+// dataIndex: 'stationIds'
+// },
+// {
+// title: '宸ユ',
+// align: 'center',
+// sorter: true,
+// dataIndex: 'lesWorkshopSection',
+// width:"100px"
+// },
+ {
+ title: '鎻忚堪',
+ align: 'center',
+sorter: true,
+ dataIndex: 'description',
+ width:"100px"
+ },
+ {
+ title: '瀹夊叏瀛橀噺',
+ align: 'center',
+sorter: true,
+ dataIndex: 'safeqty',
+ width:"100px"
+ },
+ {
+ title: '鏈�澶у瓨閲�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'maxImumqty',
+ width:"100px"
+ },
+ {
+ title: '鏈�灏忓簱榫�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'minstorageAge',
+ width:"100px"
+ },
+ {
+ title: '鏈�澶у簱榫�',
+ align: 'center',
+sorter: true,
+ dataIndex: 'maxstorageAge',
+ width:"100px"
+ },
+// {
+// title: '绛炬牳鐘舵��',
+// align: 'center',
+// sorter: true,
+// dataIndex: 'issueState'
+// }
+
+ // {
+ // title: '鐔熷寲鏃堕棿',
+ // align: 'center',
+ // dataIndex: 'maturationTime'
+ // },
+ // {
+ // title: '鏄惁闇�瑕佺啛鍖�',
+ // align: 'center',
+ // customRender: (value) => (value ? <a-tag color="#87d068">鏄�</a-tag> : <a-tag color="gray">鍚�</a-tag>),
+ // dataIndex: 'isMaturation'
+ // }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsMaterialPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ res.data.rows = res.data.rows.map((_obj)=>{
+ _obj.materialType= _obj.materialType.toString()
+ return _obj;
+ })
+ return res.data
+ })
+ },
+ inspectionMethodData: [],
+ materialTypeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsMaterial:edit') || this.hasPerm('WmsMaterial:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ fixed: 'right',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const materialTypeOption = this.$options
+ this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+ const inspectionMethodOption = this.$options
+ this.inspectionMethodData = inspectionMethodOption.filters['dictData']('material_inspection')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsMaterialDelete (record) {
+ WmsMaterialDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ handleSubmit() {
+ this.loading = true;
+ Getdeskdata().then((res) => {
+ console.log('res',res)
+ if (res.success) {
+ this.$message.success('鍚屾鎴愬姛')
+ this.$refs.table.refresh()
+ this.loading = false;
+ } else {
+ this.$message.error('鍚屾澶辫触锛�' + res.message)
+ this.loading = false;
+ }
+ }).catch((err) => {
+ this.$message.error('鍚屾閿欒锛�' + err.message)
+ this.loading = false;
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ .tongbubut{
+ border-radius: 2px;
+ padding: 6px 10px 8px 10px;
+ background-color: dodgerblue;color: #fff;
+ }
+ .tongbubut:hover{
+ opacity: 0.8;
+ background-color: dodgerblue;color: #fff;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue
new file mode 100644
index 0000000..09ccf9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMaterialStock/index.vue
@@ -0,0 +1,219 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡灏哄">
+ <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍥� 鍙�">
+ <a-input v-model="queryParam.DrawingNo" allow-clear placeholder="璇疯緭鍏ュ浘鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑸� 鍙�">
+ <a-input v-model="queryParam.ShipNo" allow-clear placeholder="璇疯緭鍏ヨ埞鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栫爜">
+ <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栫爜">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鎵�鍦ㄥ簱鍖�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaId" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�">
+ <a-select-option v-for="(item,index) in areaNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ >
+ <span slot="materialTypescopedSlots" slot-scope="text">
+ {{ 'material_type' | dictType(text) }}
+ </span>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsMaterialStockPage,WmsMaterialStockFkWmsAreaList } from '@/api/modular/main/WmsMaterialStockManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡绫诲瀷',
+ align: 'center',
+ dataIndex: 'materialType',
+ scopedSlots: { customRender: 'materialTypescopedSlots' }
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ dataIndex: 'materialSpec'
+ },
+ {
+ title: '鐗╂枡瀵嗗害',
+ align: 'center',
+ dataIndex: 'materialDensity'
+ },
+ {
+ title: '鑸瑰彿',
+ align: 'center',
+ dataIndex: 'shipNo'
+ },
+ {
+ title: '鍥惧彿',
+ align: 'center',
+ dataIndex: 'drawingNo'
+ },
+ {
+ title: '搴撳瓨鏁�',
+ align: 'center',
+ dataIndex: 'stockNumber'
+ },
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ dataIndex: 'placeCode'
+ },
+ {
+ title: '鎵樼洏缂栫爜',
+ align: 'center',
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '搴撳尯',
+ align: 'center',
+ // customRender: (value, record) => record.wmsArea.areaName,
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍏ュ簱鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime',
+ width:170
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsMaterialStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ materialTypeData: [],
+ areaNameData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const materialTypeOption = this.$options
+ this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+ },
+ mounted(){
+ this.WmsAreaLists()
+ },
+ methods: {
+ WmsAreaLists(){
+ WmsMaterialStockFkWmsAreaList().then((d)=>{
+ console.log(d)
+ this.areaNameData = d.data || []
+ }).catch(()=>{
+
+ })
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue
new file mode 100644
index 0000000..bb4cf30
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀹㈠晢淇℃伅琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀹㈠晢缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙紪鍙�" v-decorator="['merchantNo']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗悕绉�" v-decorator="['merchantName']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被" v-decorator="['merchantType', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="瀹㈠晢绠�绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙畝绉�" v-decorator="['merchantShort']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢绛夌骇" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇" v-decorator="['merchantGrade', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢绛夌骇锛�' }]}]">
+ <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="瀹㈠晢灞炴��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗睘鎬�" v-decorator="['merchantAttribute']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢琛屼笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗚涓�" v-decorator="['merchantTmt']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗚仈绯讳汉" v-decorator="['merchantContact']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙數璇�" v-decorator="['merchantPhone']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢浼犵湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗕紶鐪�" v-decorator="['merchantFax']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗛偖绠�" v-decorator="['merchantEmail']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗湴鍧�" v-decorator="['merchantAddress']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsMerchantinfoAdd
+ } from '@/api/modular/main/WmsMerchantinfoManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ merchantTypeData: [],
+ merchantGradeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const merchantTypeOption = this.$options
+ this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+ const merchantGradeOption = this.$options
+ this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsMerchantinfoAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue
new file mode 100644
index 0000000..a686a05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/editForm.vue
@@ -0,0 +1,151 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀹㈠晢淇℃伅琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀹㈠晢缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙紪鍙�" v-decorator="['merchantNo']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗悕绉�" v-decorator="['merchantName']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍒嗙被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被" v-decorator="['merchantType', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢鍒嗙被锛�' }]}]">
+ <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="瀹㈠晢绠�绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙畝绉�" v-decorator="['merchantShort']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢绛夌骇" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇" v-decorator="['merchantGrade', {rules: [{ required: true, message: '璇烽�夋嫨瀹㈠晢绛夌骇锛�' }]}]">
+ <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="瀹㈠晢灞炴��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗睘鎬�" v-decorator="['merchantAttribute']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢琛屼笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗚涓�" v-decorator="['merchantTmt']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鑱旂郴浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗚仈绯讳汉" v-decorator="['merchantContact']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗙數璇�" v-decorator="['merchantPhone']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢浼犵湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗕紶鐪�" v-decorator="['merchantFax']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢閭" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗛偖绠�" v-decorator="['merchantEmail']" />
+ </a-form-item>
+ <a-form-item label="瀹㈠晢鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鍟嗗湴鍧�" v-decorator="['merchantAddress']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsMerchantinfoEdit
+ } from '@/api/modular/main/WmsMerchantinfoManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ merchantTypeData: [],
+ merchantGradeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const merchantTypeOption = this.$options
+ this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+ const merchantGradeOption = this.$options
+ this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ merchantNo: record.merchantNo,
+ merchantName: record.merchantName,
+ merchantType: record.merchantType,
+ merchantShort: record.merchantShort,
+ merchantGrade: record.merchantGrade,
+ merchantAttribute: record.merchantAttribute,
+ merchantTmt: record.merchantTmt,
+ merchantContact: record.merchantContact,
+ merchantPhone: record.merchantPhone,
+ merchantFax: record.merchantFax,
+ merchantEmail: record.merchantEmail,
+ merchantAddress: record.merchantAddress
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsMerchantinfoEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue
new file mode 100644
index 0000000..608c91d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsMerchantinfoDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsMerchantinfoFromExcel, wmsMerchantinfoDownloadExcelTemplate} from '@/api/modular/main/WmsMerchantinfoManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsMerchantinfoDownloadExcelTemplate")
+ window.downloadFile = this.wmsMerchantinfoDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsMerchantinfo"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsMerchantinfoFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsMerchantinfoDownloadExcelTemplate() {
+ wmsMerchantinfoDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue
new file mode 100644
index 0000000..fae5665
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsMerchantinfo/index.vue
@@ -0,0 +1,230 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsMerchantinfo:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈠晢缂栧彿">
+ <a-input v-model="queryParam.merchantNo" allow-clear placeholder="璇疯緭鍏ュ鍟嗙紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈠晢鍚嶇О">
+ <a-input v-model="queryParam.merchantName" allow-clear placeholder="璇疯緭鍏ュ鍟嗗悕绉�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈠晢鍒嗙被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.merchantType" placeholder="璇烽�夋嫨瀹㈠晢鍒嗙被">
+ <a-select-option v-for="(item,index) in merchantTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈠晢绛夌骇">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.merchantGrade" placeholder="璇烽�夋嫨瀹㈠晢绛夌骇">
+ <a-select-option v-for="(item,index) in merchantGradeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈠晢琛屼笟">
+ <a-input v-model="queryParam.merchantTmt" allow-clear placeholder="璇疯緭鍏ュ鍟嗚涓�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsMerchantinfo:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsMerchantinfo:exportExcel')" icon="download" @click="wmsMerchantinfoToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsMerchantinfo:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀹㈠晢淇℃伅琛�</a-button>
+ </template>
+ <span slot="merchantTypescopedSlots" slot-scope="text">
+ {{ 'MerchantType' | dictType(text) }}
+ </span>
+ <span slot="merchantGradescopedSlots" slot-scope="text">
+ {{ 'MerchantGrade' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsMerchantinfo:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsMerchantinfo:edit') & hasPerm('WmsMerchantinfo:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsMerchantinfo:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsMerchantinfoDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsMerchantinfoPage, WmsMerchantinfoDelete } from '@/api/modular/main/WmsMerchantinfoManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '瀹㈠晢缂栧彿',
+ align: 'center',
+ dataIndex: 'merchantNo'
+ },
+ {
+ title: '瀹㈠晢鍚嶇О',
+ align: 'center',
+ dataIndex: 'merchantName'
+ },
+ {
+ title: '瀹㈠晢鍒嗙被',
+ align: 'center',
+ dataIndex: 'merchantType',
+ scopedSlots: { customRender: 'merchantTypescopedSlots' }
+ },
+ {
+ title: '瀹㈠晢绠�绉�',
+ align: 'center',
+ dataIndex: 'merchantShort'
+ },
+ {
+ title: '瀹㈠晢绛夌骇',
+ align: 'center',
+ dataIndex: 'merchantGrade',
+ scopedSlots: { customRender: 'merchantGradescopedSlots' }
+ },
+ {
+ title: '瀹㈠晢灞炴��',
+ align: 'center',
+ dataIndex: 'merchantAttribute'
+ },
+ {
+ title: '瀹㈠晢琛屼笟',
+ align: 'center',
+ dataIndex: 'merchantTmt'
+ },
+ {
+ title: '瀹㈠晢鑱旂郴浜�',
+ align: 'center',
+ dataIndex: 'merchantContact'
+ },
+ {
+ title: '瀹㈠晢鐢佃瘽',
+ align: 'center',
+ dataIndex: 'merchantPhone'
+ },
+ {
+ title: '瀹㈠晢浼犵湡',
+ align: 'center',
+ dataIndex: 'merchantFax'
+ },
+ {
+ title: '瀹㈠晢閭',
+ align: 'center',
+ dataIndex: 'merchantEmail'
+ },
+ {
+ title: '瀹㈠晢鍦板潃',
+ align: 'center',
+ dataIndex: 'merchantAddress'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsMerchantinfoPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ merchantTypeData: [],
+ merchantGradeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsMerchantinfo:edit') || this.hasPerm('WmsMerchantinfo:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const merchantTypeOption = this.$options
+ this.merchantTypeData = merchantTypeOption.filters['dictData']('MerchantType')
+ const merchantGradeOption = this.$options
+ this.merchantGradeData = merchantGradeOption.filters['dictData']('MerchantGrade')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsMerchantinfoDelete (record) {
+ WmsMerchantinfoDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue
new file mode 100644
index 0000000..5e8e087
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/DetailDrawer.vue
@@ -0,0 +1,199 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+
+ <div v-if="visible" style="background-color: white">
+
+ <!-- <a-spin :spinning="loading"> -->
+ <div class="wms-task-management-detail-div">
+
+ <div class="drawer-content">
+
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏
+ </span>
+ <div style="margin-top: 10px;">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :scroll="{x: true}">
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '1' ? '#daa520' : (text == '2' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{
+ 'orderdetails_statusenum' | dictType(text) }}</a-tag>
+ </span>
+ </a-table>
+ </div>
+
+ </div>
+ </div>
+ <!-- </a-spin> -->
+
+
+ </div>
+</template>
+
+<script>
+import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderManage'
+
+export default {
+ name: 'wmsOrderRukuManagementDetailDrawer',
+ emits: ['update:visible'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function () {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ dataIndex:'projectCode',
+ title:'椤圭洰缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ width:'150px'
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex:'taCode',
+ title:'TA缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'qty',
+ title: '鏁伴噺',
+ align: 'center',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'price',
+ title: '浠锋牸',
+ align: 'center',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'sumPrice',
+ title: '鎬婚噾棰�',
+ align: 'center',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' },
+ align: 'center'
+ },
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10','20','30','40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size:'small'
+ },
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options;
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum');
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true;
+ this.getList(() => {
+ this.loading = false;
+ })
+ },
+ getList(row) {
+ let params = { id: row.id }
+ WmsOrderRukuDetail(params).then(d => {
+ this.list = d.data.rows || []
+ this.$emit('update:visible', true)
+ // callback && callback(true)
+ }).catch(() => {
+ this.$emit('update:visible', false)
+ this.list = []
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue
new file mode 100644
index 0000000..d6a8fe6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍗曟嵁琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+ </a-form-item>
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+ </a-form-item>
+ <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+ <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+ </a-form-item>
+ <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+ </a-form-item>
+ <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsOrderAdd
+ } from '@/api/modular/main/WmsOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ tradeModeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue
new file mode 100644
index 0000000..549184d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/editForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍗曟嵁琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input disabled placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+ </a-form-item>
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+ </a-form-item>
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+ </a-form-item>
+ <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+ <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+ </a-form-item>
+ <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+ </a-form-item>
+ <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsOrderEdit
+ } from '@/api/modular/main/WmsOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ tradeModeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ no: record.no,
+ sourceBillNo: record.sourceBillNo,
+ vendorcode: record.vendorcode,
+ vendorname: record.vendorname,
+ companyname: record.companyname,
+ warehouseKeepername: record.warehouseKeepername,
+ tradeMode: record.tradeMode,
+ warehouseCentername: record.warehouseCentername,
+ storeRoomname: record.storeRoomname,
+ declarationCode: record.declarationCode,
+ majorname: record.majorname,
+ remarks: record.remarks
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue
new file mode 100644
index 0000000..a04d54e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsOrderFromExcel, wmsOrderDownloadExcelTemplate} from '@/api/modular/main/WmsOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsOrderDownloadExcelTemplate() {
+ wmsOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue
new file mode 100644
index 0000000..108ef58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrder/index.vue
@@ -0,0 +1,367 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+ <a-input v-model="queryParam.sourceBillNo" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗙紪鐮�">
+ <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗗悕绉�">
+ <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撶鍛�">
+ <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="璐告槗鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+ <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳偍涓績">
+ <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撻棿">
+ <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎶ュ叧鍗曞彿">
+ <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓撲笟">
+ <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ 聽 :scroll="{x: true}"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsOrder:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsOrder:exportExcel')" icon="download" @click="wmsOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <!-- <a-button type="primary" v-if="hasPerm('WmsOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍗曟嵁琛�</a-button> -->
+ </template>
+ <span slot="tradeModescopedSlots" slot-scope="text">
+ {{ 'trade_mode' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsOrder:edit') & hasPerm('WmsOrder:delete')"/>
+ <!-- <a-popconfirm v-if="hasPerm('WmsOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+
+ <span slot="action" slot-scope="text, record">
+ <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a> -->
+ <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a>
+
+ <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="$refs.editForm.edit(record)">缂栬緫</a> -->
+
+ <!-- <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="WmsOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown> -->
+ </span>
+
+
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'order_statusenum' | dictType(text) }}</a-tag>
+ </span>
+
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" />
+ </a-card>
+
+
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsOrderPage, WmsOrderDelete ,dealDistribute} from '@/api/modular/main/WmsOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer,
+
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'no',
+ scopedSlots: { customRender: 'linkSlot' },
+ width:"100px"
+ },
+ {
+ title: '閫佽揣閫氱煡鍗曞彿',
+ align: 'center',
+ dataIndex: 'sourceBillNo',
+ width:"100px"
+ },
+ {
+ title: '渚涘簲鍟嗙紪鐮�',
+ align: 'center',
+ dataIndex: 'vendorcode',
+ width:"100px"
+ },
+ {
+ title: '渚涘簲鍟嗗悕绉�',
+ align: 'center',
+ dataIndex: 'vendorname',
+ width:"100px"
+ },
+ {
+ title: '鍏徃鍚嶇О',
+ align: 'center',
+ dataIndex: 'companyname',
+ width:"100px"
+ },
+ {
+ title: '浠撶鍛�',
+ align: 'center',
+ dataIndex: 'warehouseKeepername',
+ width:"100px"
+ },
+ {
+ title: '璐告槗鏂瑰紡',
+ align: 'center',
+ dataIndex: 'tradeMode',
+ scopedSlots: { customRender: 'tradeModescopedSlots' },
+ width:"100px"
+ },
+ {
+ title: '浠撳偍涓績',
+ align: 'center',
+ dataIndex: 'warehouseCentername',
+ width:"100px"
+ },
+ {
+ title: '浠撻棿',
+ align: 'center',
+ dataIndex: 'storeRoomname',
+ width:"100px"
+ },
+ {
+ title: '鎶ュ叧鍗曞彿',
+ align: 'center',
+ dataIndex: 'declarationCode',
+ width:"100px"
+ },
+ {
+ title: '涓撲笟',
+ align: 'center',
+ dataIndex: 'majorname',
+ width:"100px"
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' },
+ width:"100px"
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks',
+ width:"100px"
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.$nextTick(()=>{
+ if(res.data.rows && res.data.rows.length>0){
+ this.onOpenInfo(res.data.rows[0]);
+ }
+ })
+ return res.data
+ })
+ },
+ tradeModeData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ infoRow: {},
+ infoVisible: false,
+ containerStatusData:[]
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsOrder:edit') || this.hasPerm('WmsOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '80px',
+ dataIndex: 'action',
+ fixed: 'right',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+
+ const containerStatusOption = this.$options;
+ this.containerStatusData = containerStatusOption.filters['dictData']('order_statusenum')
+
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsOrderDelete (record) {
+ WmsOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ onOpenInfo(row) {
+ this.infoVisible = true;
+ this.infoRow = row;
+ if(row){
+ this.$refs.tableDetailDrawer.getList(row);
+ }
+ },
+
+ onDistribute(obj){
+ if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ // this.dealDistribute([obj.id],(f)=>{
+ // if (f) {
+ // this.$message.success('鎿嶄綔鎴愬姛')
+ // this.$refs.table.refresh()
+ // }
+ // })
+ dealDistribute({
+ "id": [
+ obj.id
+ ]
+ }).then((res) => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('澶辫触')
+ }
+ })
+
+ }
+ });
+ },
+
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue
new file mode 100644
index 0000000..f3d01b3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/DetailDrawer.vue
@@ -0,0 +1,276 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+
+ <div v-if="visible" style="background-color: white">
+
+ <!-- <a-spin :spinning="loading"> -->
+ <div class="wms-task-management-detail-div">
+ <div class="drawer-content">
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a>鍗曟嵁璇︽儏
+ </span>
+ <div style="margin-top: 10px;">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+ :scroll="{ x: true }" :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="index" slot-scope="text, record, index">
+ <span>{{ index + 1 }}</span>
+ </template>
+ <span slot="InspectionResultsSlots" slot-scope="text">
+ {{ 'InspectionResults' | dictType(text) }}
+ </span>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text == '1' ? '#daa520' : (text == '2' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{
+ 'orderdetails_statusenum' | dictType(text) }}</a-tag>
+ </span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ <!-- </a-spin> -->
+
+
+ </div>
+</template>
+
+<script>
+import { WmsOrderRukuDetail } from '@/api/modular/main/WmsOrderInspectionManage'
+export default {
+ name: 'wmsOrderRukuManagementDetailDrawer',
+ emits: ['update:visible', 'postBjData'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function () {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+ selectedRowKeys: [],
+ columns: [
+ // {
+ // dataIndex: 'index',
+ // title: '搴忓彿',
+ // scopedSlots: { customRender: 'index' },
+ // align: 'center',
+ // width: '60'
+ // },
+ {
+ dataIndex: 'itemNo',
+ title: '琛屽彿',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ width: '100px'
+ },
+
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' },
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'contractCode',
+ title: '鍚堝悓缂栧彿',
+ align: 'center',
+ width: '100px'
+ },
+
+ {
+ dataIndex: 'price',
+ title: '鍗曚环',
+ align: 'center',
+ width: '100px'
+ },
+
+ {
+ dataIndex: 'projectCode',
+ title: '椤圭洰缂栧彿',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'unit',
+ title: '鍗曚綅',
+ align: 'center',
+ width: '100px'
+ },
+
+ {
+ dataIndex: 'qty',
+ title: '鏁伴噺',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'inspectionResults',
+ title: '妫�楠岀粨鏋�',
+ align: 'center',
+ width: '100px',
+ scopedSlots: { customRender: 'InspectionResultsSlots' },
+ },
+
+ {
+ dataIndex: 'customsNum',
+ title: '鎶ュ叧鏁伴噺',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'customsPrices',
+ title: '鎶ュ叧閲戦',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'customsUnitName',
+ title: '鎶ュ叧鍗曚綅',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'singleLength',
+ title: '鍗曟牴闀垮害',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'sumPrice',
+ title: '鎴愭湰閲戦',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'taCode',
+ title: 'TA鍙�',
+ align: 'center',
+ width: '100px'
+ },
+ {
+ dataIndex: 'theoreticalWeight',
+ title: '鐞嗚閲嶉噺',
+ align: 'center',
+ width: '100px'
+ },
+
+ {
+ dataIndex: 'specialNeeds',
+ title: '鐗规畩瑕佹眰',
+ align: 'center',
+ width: '100px'
+ },
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10', '20', '30', '40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size: 'small',
+ InspectionResultsData: []
+ },
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options;
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum');
+
+ // const InspectionResultsDataOption = this.$options
+ // this.InspectionResultsData = InspectionResultsDataOption.filters['dictData']('InspectionResults')
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true;
+ this.getList(() => {
+ this.loading = false;
+ })
+ },
+ getList(row) {
+ let params = { id: row.id }
+ WmsOrderRukuDetail(params).then(d => {
+ this.list = d.data.rows || []
+ this.$emit('update:visible', true)
+ // callback && callback(true)
+ }).catch(() => {
+ this.$emit('update:visible', false)
+ this.list = []
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ this.$emit('postBjData', this.selectedRows)
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue
new file mode 100644
index 0000000..33ac721
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/addForm.vue
@@ -0,0 +1,121 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍗曟嵁琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+ </a-form-item>
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+ </a-form-item>
+ <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+ <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+ </a-form-item>
+ <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+ </a-form-item>
+ <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsOrderAdd
+ } from '@/api/modular/main/WmsOrderInspectionManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ tradeModeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue
new file mode 100644
index 0000000..83953d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/editForm.vue
@@ -0,0 +1,145 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍗曟嵁琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input disabled placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+ </a-form-item>
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" v-decorator="['sourceBillNo']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗙紪鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" v-decorator="['vendorcode']" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟嗗悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" v-decorator="['vendorname']" />
+ </a-form-item>
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="浠撶鍛�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨绠″憳" v-decorator="['warehouseKeepername']" />
+ </a-form-item>
+ <a-form-item label="璐告槗鏂瑰紡" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨璐告槗鏂瑰紡" v-decorator="['tradeMode', {rules: [{ required: true, message: '璇烽�夋嫨璐告槗鏂瑰紡锛�' }]}]">
+ <a-select-option v-for="(item,index) in tradeModeData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="浠撻棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨闂�" v-decorator="['storeRoomname']" />
+ </a-form-item>
+ <a-form-item label="鎶ュ叧鍗曞彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" v-decorator="['declarationCode']" />
+ </a-form-item>
+ <a-form-item label="涓撲笟" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ笓涓�" v-decorator="['majorname']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea placeholder="璇疯緭鍏ュ娉�" v-decorator="['remarks']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import {
+ WmsOrderEdit
+ } from '@/api/modular/main/WmsOrderInspectionManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ tradeModeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ no: record.no,
+ sourceBillNo: record.sourceBillNo,
+ vendorcode: record.vendorcode,
+ vendorname: record.vendorname,
+ companyname: record.companyname,
+ warehouseKeepername: record.warehouseKeepername,
+ tradeMode: record.tradeMode,
+ warehouseCentername: record.warehouseCentername,
+ storeRoomname: record.storeRoomname,
+ declarationCode: record.declarationCode,
+ majorname: record.majorname,
+ remarks: record.remarks
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue
new file mode 100644
index 0000000..6cd242c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsOrderFromExcel, wmsOrderDownloadExcelTemplate} from '@/api/modular/main/WmsOrderInspectionManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsOrderDownloadExcelTemplate() {
+ wmsOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue
new file mode 100644
index 0000000..3fc7a9a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderInspection/index.vue
@@ -0,0 +1,403 @@
+锘�<template>
+ <!-- 鎶ユ鍗� -->
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+ <a-input v-model="queryParam.sourceBillNo" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" />
+ </a-form-item> </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗙紪鐮�">
+ <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗗悕绉�">
+ <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撶鍛�">
+ <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳" />
+ </a-form-item> </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="璐告槗鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+ <a-select-option v-for="(item, index) in tradeModeData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳偍涓績">
+ <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撻棿">
+ <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎶ュ叧鍗曞彿">
+ <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓撲笟">
+ <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�" />
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px">
+ {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="record => record.id"
+ :scroll="{ x: true }" :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsOrder:add')">
+ <!-- <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsOrder:exportExcel')" icon="download" @click="wmsOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍗曟嵁琛�</a-button> -->
+ </template>
+ <span slot="tradeModescopedSlots" slot-scope="text">
+ {{ 'trade_mode' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsOrder:edit') & hasPerm('WmsOrder:delete')" />
+ <!-- <a-popconfirm v-if="hasPerm('WmsOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+
+ <template slot="linkSlot" slot-scope="text, record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+
+ <span slot="action" slot-scope="text, record">
+ <!-- <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a> -->
+ <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 1 ? 'disabled' : '']"
+ @click="onDistribute(record)">鎶ユ</a>
+
+ <!-- <a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']" style="margin-right:10px;"
+ @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+ style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+ @click="WmsOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown> -->
+ </span>
+
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text === 2 ? '#daa520' : text === 1 ? '#cd5c5c' : text === 3 ? '#add8e6' : '#696969'">{{
+ 'order_statusenum' | dictType(text)
+ }}</a-tag>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData" />
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsOrderPage, WmsOrderDelete, WmsOrderBaojian } from '@/api/modular/main/WmsOrderInspectionManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'no',
+ scopedSlots: { customRender: 'linkSlot' },
+ width: '100px'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' },
+ width: '100px'
+ },
+
+ {
+ title: '渚涘簲鍟嗙紪鐮�',
+ align: 'center',
+ dataIndex: 'vendorcode',
+ width: '100px'
+ },
+ {
+ title: '渚涘簲鍟嗗悕绉�',
+ align: 'center',
+ dataIndex: 'vendorname',
+ width: '100px'
+ },
+
+
+ {
+ title: '鍒涘缓鏃ユ湡',
+ align: 'center',
+ dataIndex: 'billdate',
+ width: '100px'
+ },
+ {
+ title: '鍏徃鍚嶇О',
+ align: 'center',
+ dataIndex: 'companyname',
+ width: '100px'
+ },
+ {
+ title: '鎶ュ叧鍗曞彿',
+ align: 'center',
+ dataIndex: 'declarationCode',
+ width: '100px'
+ },
+
+ {
+ title: '涓撲笟',
+ align: 'center',
+ dataIndex: 'majorname',
+ width: '100px'
+ },
+
+ {
+ title: '閫佽揣閫氱煡鍗曞彿',
+ align: 'center',
+ dataIndex: 'sourceBillNo',
+ width: '100px'
+ },
+
+
+ {
+ title: '浠撳偍涓績',
+ align: 'center',
+ dataIndex: 'warehouseCentername',
+ width: '100px'
+ },
+
+ {
+ title: '浠撶鍛�',
+ align: 'center',
+ dataIndex: 'warehouseKeepername',
+ width: '100px'
+ },
+
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks',
+ width: '100px'
+ },
+
+ // {
+ // title: '閫佽揣閫氱煡鍗曞彿',
+ // align: 'center',
+ // dataIndex: 'sourceBillNo',
+ // width: '100px'
+ // },
+
+ // {
+ // title: '鍏徃鍚嶇О',
+ // align: 'center',
+ // dataIndex: 'companyname',
+ // width: '100px'
+ // },
+ // {
+ // title: '浠撶鍛�',
+ // align: 'center',
+ // dataIndex: 'warehouseKeepername',
+ // width: '100px'
+ // },
+ // {
+ // title: '璐告槗鏂瑰紡',
+ // align: 'center',
+ // dataIndex: 'tradeMode',
+ // scopedSlots: { customRender: 'tradeModescopedSlots' },
+ // width: '100px'
+ // },
+ // {
+ // title: '浠撳偍涓績',
+ // align: 'center',
+ // dataIndex: 'warehouseCentername',
+ // width: '100px'
+ // },
+ // {
+ // title: '浠撻棿',
+ // align: 'center',
+ // dataIndex: 'storeRoomname',
+ // width: '100px'
+ // },
+ // {
+ // title: '鎶ュ叧鍗曞彿',
+ // align: 'center',
+ // dataIndex: 'declarationCode',
+ // width: '100px'
+ // },
+ // {
+ // title: '涓撲笟',
+ // align: 'center',
+ // dataIndex: 'majorname',
+ // width: '100px'
+ // },
+
+
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsOrderPage(Object.assign(parameter, this.queryParam)).then(res => {
+ return res.data
+ })
+ },
+ tradeModeData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ infoRow: {},
+ infoVisible: false,
+ containerStatusData: [],
+ postBjDataArr: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsOrder:edit') || this.hasPerm('WmsOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '100px',
+ dataIndex: 'action',
+ fixed: 'right',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('order_statusenum')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsOrderDelete(record) {
+ WmsOrderDelete(record).then(res => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ onOpenInfo(row) {
+ this.infoVisible = true
+ this.infoRow = row
+ this.$refs.tableDetailDrawer.getList(row)
+ },
+
+ onDistribute(obj) {
+ // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+ if (obj.orderStatus == 1) return false
+ if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+ this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+ return
+ }
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+ okText: '纭',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ let param = {
+ ...obj,
+ dtls: this.postBjDataArr
+ }
+ WmsOrderBaojian(param).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触')
+ }
+ })
+ }
+ })
+ },
+ // 閫変腑鐨勭墿鏂�
+ postBjData(data) {
+ this.postBjDataArr = data
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue
new file mode 100644
index 0000000..a432631
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/editForm.vue
@@ -0,0 +1,186 @@
+锘�<template>
+ <a-modal
+ :title="title"
+ width="600px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="order-type-modal-content">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-form-item label="绫诲瀷缂栫爜">
+ <a-input placeholder="璇疯緭鍏ョ被鍨嬬紪鐮�" :disabled="type==='edit'" v-decorator="['code',{rules:[{required:true,message:'绫诲瀷缂栫爜涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷鍚嶇О">
+ <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name',{rules:[{required:true,message:'绫诲瀷鍚嶇О涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鎺掑簭">
+ <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort',{rules:[
+ {required:true,message:'鎺掑簭涓嶅彲涓虹┖锛�'},
+ { validator: sortValidate }
+ ],validateFirst:true}]" :min="1" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" v-if="pObj.id">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['lesWorkShopType', {rules: [{required:true,message:'鎵�灞炶溅闂翠笉鍙负绌猴紒'}]}]">
+ <a-select-option v-for="(item,index) in selectOptions1" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </div>
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import {WareOrderTypeAdd,WareOrderTypeEdit} from '@/api/modular/main/WmsOrderTypeManage'
+ export default {
+ name:'orderTypeModal',
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ type:{
+ type:String,
+ default:'add'
+ },
+ obj:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ },
+ pObj:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ watch:{
+ visible:{
+ immediate:true,
+ handler(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ }
+ }
+ }
+ },
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 4 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 20 }
+ },
+ confirmLoading: false,
+ title:'',
+ selectOptions1:[],
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ initShow(){
+ if (this.visible) {
+ this.getSelectOptions()
+ if (this.type==='add'){
+ this.title="鏂板鍗曟嵁绫诲瀷"
+ let _initForm = {sort:1}
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ } else {
+ this.title="缂栬緫鍗曟嵁绫诲瀷"
+ let _initForm = {
+ name:this.obj.name,
+ code:this.obj.code,
+ sort:this.obj.sort
+ }
+ if (this.pObj.id) {
+ _initForm.lesWorkShopType = this.obj.lesWorkShopType
+ }
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ }
+ }
+ },
+ getSelectOptions(){
+ if (this.selectOptions1.length<=0) {
+ this.selectOptions1 = this.$options.filters['dictData']('les_workshop_type')
+ }
+ },
+ sortValidate(rule, value, callback){
+ if (Number(value)!==parseInt(value)) {
+ callback('鍙兘鏄暣鏁�');
+ } else {
+ callback();
+ }
+ },
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.$loading.show()
+ this.handleSubmitAjax(values,(f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ this.$emit('callback')
+ }
+ })
+ }
+ })
+ },
+ handleSubmitAjax (params,callback){
+ if (this.type==='add') {
+ this.handleAddAjax(params,callback)
+ } else {
+ this.handleEditAjax(params,callback)
+ }
+ },
+ handleAddAjax(params,callback){
+ let _params = {...params}
+ if (!this.pObj.id) {
+ _params.pid = 0
+ } else {
+ _params.pid = this.pObj.id
+ }
+ WareOrderTypeAdd(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleEditAjax(params,callback){
+ let _params = {...params}
+ _params.pid = this.obj.pid;
+ _params.id = this.obj.id;
+ WareOrderTypeEdit(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.$emit('update:visible',false)
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.order-type-modal-content{
+ padding: 20px 16px 0 16px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue
new file mode 100644
index 0000000..a397798
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsOrderType/index.vue
@@ -0,0 +1,229 @@
+锘�<template>
+ <div class="base-order-type-manage-page">
+ <div class="divider"></div>
+ <div class="management-card main-management-card">
+ <div class="top-head">
+ <span>涓荤被鍨�</span>
+ <a @click="onMainAdd"><a-icon type="plus" /></a>
+ </div>
+ <div class="content" ref="content">
+ <a-table v-if="th" :data-source="list1" :columns="columns1" rowKey="id" :pagination="false" :scroll="{x:580,y:th}">
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onActiveMain(record)">{{text}}</a>
+ </template>
+ <template slot="action" slot-scope="text,record,index">
+ <a style="margin-right:8px;" @click="onEdit(record)"><a-icon type="edit" /></a>
+ <a @click="onDelete(record)"><a-icon type="delete" /></a>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ <div class="divider"></div>
+ <div class="management-card sub-management-card">
+ <div class="top-head">
+ <span><span style="margin-right:8px;" v-if="activeMainObj.name">{{activeMainObj.name}}</span>瀛愮被鍨嬫槑缁�</span>
+ <a @click="onDetailAdd" v-if="activeMainObj.id"><a-icon type="plus" /></a>
+ </div>
+ <div class="content" ref="content">
+ <a-table v-if="th" :data-source="list2" :columns="columns2" rowKey="id" :pagination="false" :scroll="{x:580,y:th}">
+ <template slot="lesWorkShopTypeSlot" slot-scope="text">
+ {{ 'les_workshop_type' | dictType(text) }}
+ </template>
+ <template slot="action" slot-scope="text,record,index">
+ <a style="margin-right:8px;" @click="onEdit(record)"><a-icon type="edit" /></a>
+ <a @click="onDelete(record)"><a-icon type="delete" /></a>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ <div class="divider"></div>
+
+ <edit-form :visible.sync="formVisible" :type="formType" :obj="formObj" :p-obj="formParentObj" @callback="editBack" />
+ </div>
+</template>
+<script>
+ import { WareOrderTypePage, WareOrderTypeDelete } from '@/api/modular/main/WmsOrderTypeManage'
+ import editForm from './editForm.vue'
+ let interval = null
+ export default {
+ components: {editForm},
+ data () {
+ return {
+ list1:[],
+ list2:[],
+ th:0,
+ columns1:[
+ { title: '绫诲瀷缂栫爜', dataIndex: 'code', scopedSlots: { customRender: 'linkSlot' } },
+ { title: '绫诲瀷鍚嶇О', dataIndex: 'name', scopedSlots: { customRender: 'linkSlot' } },
+ { title: '鎺掑簭', dataIndex: 'sort', key: 'sort' },
+ { title: '鎿嶄綔', key: 'action', width: 70, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ columns2:[
+ { title: '绫诲瀷缂栫爜', dataIndex: 'code', key: 'code' },
+ { title: '绫诲瀷鍚嶇О', dataIndex: 'name', key: 'name' },
+ { title: '鎺掑簭', dataIndex: 'sort', key: 'sort' },
+ { title: '鎵�灞炶溅闂�', dataIndex: 'lesWorkShopType', scopedSlots: { customRender: 'lesWorkShopTypeSlot' } },
+ { title: '鎿嶄綔', key: 'action', width: 70, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ formVisible:false,
+ formType:'',
+ formObj:{},
+ formParentObj:{},
+ activeMainObj:{}
+ }
+ },
+ mounted () {
+ this.calTh()
+ this.getMainList()
+ },
+ methods: {
+ calTh(){
+ interval = window.setInterval(()=>{
+ if (this.th) {
+ window.clearInterval(interval)
+ interval = null
+ } else {
+ this.th = this.$refs.content.clientHeight - 55
+ }
+ },100)
+ },
+ getMainList(){
+ this.getList(0)
+ this.list2 = []
+ this.activeMainObj = {}
+ },
+ getList(pid){
+ this.$loading.show()
+ WareOrderTypePage(pid).then(d=>{
+ let arr = (d.data || []).map((item)=>{
+ item.lesWorkShopType = String(item.lesWorkShopType)
+ return item
+ })
+ if (pid===0){
+ this.list1=arr
+ } else {
+ this.list2=arr
+ }
+ this.$loading.hide()
+ }).catch(()=>{
+ this.$loading.hide()
+ })
+ },
+ onMainAdd(){
+ this.formType = 'add'
+ this.formObj = {}
+ this.formParentObj = {}
+ this.formVisible = true
+ },
+ onDetailAdd(){
+ this.formType = 'add'
+ this.formObj = {}
+ this.formParentObj = this.activeMainObj
+ this.formVisible = true
+ },
+ onEdit(obj){
+ this.formType = 'edit'
+ this.formObj = obj
+ if (obj.pid===0) {
+ this.formParentObj = {}
+ } else {
+ this.formParentObj = this.activeMainObj
+ }
+ this.formVisible = true
+ },
+ editBack(){
+ if (!this.formParentObj.id) {
+ this.getMainList()
+ } else {
+ this.getList(this.formParentObj.id)
+ }
+ },
+ onDelete(obj){
+ this.$confirm({
+ title: '纭畾瑕佽繘琛屽垹闄ゆ搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk:()=>{
+ this.handleDelete(obj.id,(f)=>{
+ if (f) {
+ if (obj.pid===0) {
+ this.getMainList()
+ } else {
+ this.getList(this.activeMainObj.id)
+ }
+ }
+ })
+ }
+ });
+ },
+ handleDelete(id,callback){
+ this.$loading.show()
+ let params = {id}
+ WareOrderTypeDelete(params).then(()=>{
+ this.$loading.hide()
+ callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ onActiveMain(obj){
+ this.activeMainObj = obj
+ this.getList(obj.id)
+ }
+ },
+ beforeDestroy(){
+ try{
+ window.clearInterval(interval)
+ interval = null
+ }catch(e){
+ //TODO handle the exception
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.base-order-type-manage-page{
+ height: 100%;
+ background-color: #fff;
+ border-radius: 2px;
+ display: flex;
+ @dividerSize:16px;
+ padding: @dividerSize 0;
+ .divider {
+ width: @dividerSize;
+ flex-shrink: 0;
+ }
+ .management-card{
+ width: 1px;
+ flex-grow: 1;
+ box-sizing: border-box;
+ border: 1px solid #d9d9d9;
+ border-radius: 4px;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ &.main-management-card{
+ flex-grow: 2;
+ }
+ &.sub-management-card{
+ flex-grow: 3;
+ }
+ &>.top-head {
+ flex-shrink: 0;
+ border-bottom: 1px solid #d9d9d9;
+ padding: 8px 16px;
+ font-size: 1.2em;
+ font-weight: bold;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+ &>.content {
+ height: 1px;
+ flex-grow: 1;
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue
new file mode 100644
index 0000000..0308bc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/addForm.vue
@@ -0,0 +1,100 @@
+锘�<template>
+ <a-modal
+ title="鏂板PDA鑿滃崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍥炬爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ浘鏍�" v-decorator="['icon']" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+ </a-form-item>
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="棰滆壊" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鑹�" v-decorator="['clolor']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsPdaPowerAdd
+ } from '@/api/modular/main/WmsPdaPowerManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ workShopTypeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsPdaPowerAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue
new file mode 100644
index 0000000..f9ad61f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/editForm.vue
@@ -0,0 +1,118 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫PDA鑿滃崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍥炬爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ浘鏍�" v-decorator="['icon']" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+ </a-form-item>
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="棰滆壊" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鑹�" v-decorator="['clolor']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炶溅闂�" v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsPdaPowerEdit
+ } from '@/api/modular/main/WmsPdaPowerManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ workShopTypeData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ icon: record.icon,
+ code: record.code,
+ name: record.name,
+ clolor: record.clolor,
+ workShopType: String(record.workShopType)
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsPdaPowerEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue
new file mode 100644
index 0000000..626361e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPdaPower/index.vue
@@ -0,0 +1,194 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsPdaPower:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ョ紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炶溅闂�">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.workShopType" placeholder="璇烽�夋嫨鎵�灞炶溅闂�">
+ <a-select-option v-for="(item,index) in workShopTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="null"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsPdaPower:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="primary" v-if="hasPerm('WmsPdaPower:add')" icon="plus" @click="$refs.addForm.add()">鏂板PDA鑿滃崟</a-button>
+ </div>
+ </template>
+ <span slot="workShopTypescopedSlots" slot-scope="text">
+ {{ 'les_workshop_type' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsPdaPower:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsPdaPower:edit') & hasPerm('WmsPdaPower:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsPdaPower:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsPdaPowerDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsPdaPowerPage, WmsPdaPowerDelete } from '@/api/modular/main/WmsPdaPowerManage'
+ import setTableHtMixin from '@/mixins/handleTableHt.js'//鑷畾涔塼able楂樺害
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '鍥炬爣',
+ align: 'center',
+ dataIndex: 'icon'
+ },
+ {
+ title: '缂栫爜',
+ align: 'center',
+ dataIndex: 'code'
+ },
+ {
+ title: '鍚嶇О',
+ align: 'center',
+ dataIndex: 'name'
+ },
+ {
+ title: '棰滆壊',
+ align: 'center',
+ dataIndex: 'clolor'
+ },
+ {
+ title: '鎵�灞炶溅闂�',
+ align: 'center',
+ dataIndex: 'workShopType',
+ scopedSlots: { customRender: 'workShopTypescopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsPdaPowerPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ workShopTypeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsPdaPower:edit') || this.hasPerm('WmsPdaPower:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const workShopTypeOption = this.$options
+ this.workShopTypeData = workShopTypeOption.filters['dictData']('les_workshop_type')
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsPdaPowerDelete (record) {
+ WmsPdaPowerDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue
new file mode 100644
index 0000000..7b9af1a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/addForm.vue
@@ -0,0 +1,161 @@
+锘�<template>
+ <a-modal
+ title="鏂板搴撲綅淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['placecode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鎵�鍦ㄥ簱鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�" v-decorator="['areaid', {rules: [{ required: true, message: '璇烽�夋嫨鎵�鍦ㄥ簱鍖猴紒' }]}]">
+ <a-select-option v-for="(item,index) in WmsAreaData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ帓" style="width: 100%" v-decorator="['rowno', {rules: [{ required: true, message: '璇疯緭鍏ユ帓锛�' }]}]" :min="0"/>
+ </a-form-item>
+ <a-form-item label="鍒�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ垪" style="width: 100%" v-decorator="['columnno', {rules: [{ required: true, message: '璇疯緭鍏ュ垪锛�' }]}]" :min="0"/>
+ </a-form-item>
+ <a-form-item label="灞�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ眰" style="width: 100%" v-decorator="['layerno', {rules: [{ required: true, message: '璇疯緭鍏ュ眰锛�' }]}]" :min="0"/>
+ </a-form-item>
+ <a-form-item label="宸烽亾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ贩閬�" style="width: 100%" v-decorator="['aisle', {rules: [{ required: true, message: '璇疯緭鍏ュ贩閬擄紒' }]}]" :min="0"/>
+ </a-form-item>
+ <a-form-item label="杩涙繁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヨ繘娣卞彿" style="width: 100%" v-decorator="['deepcellno']" :min="0"/>
+ </a-form-item>
+
+ <a-form-item label="绾垮彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ嚎鍙�" style="width: 100%" v-decorator="['line']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="鍫嗗灈鏈哄唴閮ㄤ綅缃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ爢鍨涙満鍐呴儴浣嶇疆" v-decorator="['positionnoForSrm']" />
+ </a-form-item>
+ <a-form-item label="搴撲綅X鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峏鍧愭爣" style="width: 100%" v-decorator="['xzb']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅Y鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峐鍧愭爣" style="width: 100%" v-decorator="['yzb']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅Z鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峑鍧愭爣" style="width: 100%" v-decorator="['zzb']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉暱搴�" style="width: 100%" v-decorator="['length']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶅搴�" style="width: 100%" v-decorator="['width']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉珮搴�" style="width: 100%" v-decorator="['height']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="鏈�澶ф壙閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ渶澶ф壙閲�" style="width: 100%" v-decorator="['maxweight']" :min="0"/>
+ </a-form-item>
+ <a-form-item label="搴撲綅楂樺害绾у埆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨搴撲綅楂樺害绾у埆" v-decorator="['heightlevel']">
+ <a-select-option v-for="(item,index) in heightlevelData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" :min="0"/>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsPlaceFkWmsAreaList,
+ WmsPlaceAdd
+ } from '@/api/modular/main/WmsPlaceManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ WmsAreaData: [],
+ visible: false,
+ confirmLoading: false,
+ heightlevelData: [],
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ WmsPlaceFkWmsAreaList() {
+ WmsPlaceFkWmsAreaList().then(res => {
+ this.WmsAreaData = res.data
+ })
+ },
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ })
+ const placestatusOption = this.$options
+ this.placestatusData = placestatusOption.filters['dictData']('place_status')
+ const islockOption = this.$options
+ this.islockData = islockOption.filters['dictData']('yes_or_no')
+ const isfullOption = this.$options
+ this.isfullData = isfullOption.filters['dictData']('yes_or_no')
+ const hastaskdoingOption = this.$options
+ this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+ const heightlevelOption = this.$options
+ this.heightlevelData = heightlevelOption.filters['dictData']('height_level')
+ this.WmsPlaceFkWmsAreaList()
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) {
+ values[key] = 0
+ }
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsPlaceAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue
new file mode 100644
index 0000000..381b8cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/editForm.vue
@@ -0,0 +1,204 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫搴撲綅淇℃伅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ disabled
+ placeholder="璇疯緭鍏ョ紪鐮�"
+ v-decorator="['placecode', { rules: [{ required: true, message: '璇疯緭鍏ョ紪鐮侊紒' }] }]"
+ />
+ </a-form-item>
+ <a-form-item label="鎵�鍦ㄥ簱鍖�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�"
+ v-decorator="['areaid', { rules: [{ required: true, message: '璇烽�夋嫨鎵�鍦ㄥ簱鍖猴紒' }] }]"
+ >
+ <a-select-option v-for="(item, index) in WmsAreaData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鎺�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ帓" style="width: 100%" v-decorator="['rowno']" :min="0" />
+ </a-form-item>
+ <a-form-item label="鍒�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ垪" style="width: 100%" v-decorator="['columnno']" :min="0" />
+ </a-form-item>
+ <a-form-item label="灞�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ眰" style="width: 100%" v-decorator="['layerno']" :min="0" />
+ </a-form-item>
+ <a-form-item label="宸烽亾" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number
+ placeholder="璇疯緭鍏ュ贩閬�"
+ style="width: 100%"
+ v-decorator="['aisle', { rules: [{ required: true, message: '璇疯緭鍏ュ贩閬擄紒' }] }]"
+ :min="0"
+ />
+ </a-form-item>
+ <a-form-item label="杩涙繁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヨ繘娣卞彿" style="width: 100%" v-decorator="['deepcellno']" :min="0" />
+ </a-form-item>
+ <a-form-item label="绾垮彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ョ嚎鍙�" style="width: 100%" v-decorator="['line']" :min="0" />
+ </a-form-item>
+ <a-form-item label="鍫嗗灈鏈哄唴閮ㄤ綅缃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ爢鍨涙満鍐呴儴浣嶇疆" v-decorator="['positionnoForSrm']" />
+ </a-form-item>
+ <a-form-item label="搴撲綅X鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峏鍧愭爣" style="width: 100%" v-decorator="['xzb']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅Y鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峐鍧愭爣" style="width: 100%" v-decorator="['yzb']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅Z鍧愭爣" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣峑鍧愭爣" style="width: 100%" v-decorator="['zzb']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅闀垮害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉暱搴�" style="width: 100%" v-decorator="['length']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅瀹藉害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶅搴�" style="width: 100%" v-decorator="['width']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅楂樺害" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ簱浣嶉珮搴�" style="width: 100%" v-decorator="['height']" :min="0" />
+ </a-form-item>
+ <a-form-item label="鏈�澶ф壙閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ渶澶ф壙閲�" style="width: 100%" v-decorator="['maxweight']" :min="0" />
+ </a-form-item>
+ <a-form-item label="搴撲綅楂樺害绾у埆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨搴撲綅楂樺害绾у埆" v-decorator="['heightlevel']">
+ <a-select-option v-for="(item, index) in heightlevelData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="浼樺厛绾�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ヤ紭鍏堢骇" style="width: 100%" v-decorator="['priority']" :min="0" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { WmsPlaceFkWmsAreaList, WmsPlaceEdit } from '@/api/modular/main/WmsPlaceManage'
+export default {
+ data() {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ WmsAreaData: [],
+ heightlevelData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ WmsPlaceFkWmsAreaList() {
+ WmsPlaceFkWmsAreaList().then((res) => {
+ this.WmsAreaData = res.data
+ })
+ },
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.Id = record.id
+ this.$nextTick(() => {})
+ // 娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const placestatusOption = this.$options
+ this.placestatusData = placestatusOption.filters['dictData']('place_status')
+ const islockOption = this.$options
+ this.islockData = islockOption.filters['dictData']('yes_or_no')
+ const isfullOption = this.$options
+ this.isfullData = isfullOption.filters['dictData']('yes_or_no')
+ const hastaskdoingOption = this.$options
+ this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+ const heightlevelOption = this.$options
+ this.heightlevelData = heightlevelOption.filters['dictData']('height_level')
+ this.$nextTick(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ placecode: record.placecode,
+ areaid: record.areaid,
+ rowno: record.rowno,
+ columnno: record.columnno,
+ layerno: record.layerno,
+ deepcellno: record.deepcellno,
+ aisle: record.aisle,
+ line: record.line,
+ positionnoForSrm: record.positionnoForSrm,
+ xzb: record.xzb,
+ yzb: record.yzb,
+ zzb: record.zzb,
+ length: record.length,
+ width: record.width,
+ height: record.height,
+ maxweight: record.maxweight,
+ heightlevel: record.heightlevel + '',
+ priority: record.priority
+ })
+ })
+ this.WmsPlaceFkWmsAreaList()
+ },
+ handleSubmit() {
+ const {
+ form: { validateFields }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof values[key] === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsPlaceEdit(this.record)
+ .then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ })
+ .finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue
new file mode 100644
index 0000000..fdba0b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsPlace/index.vue
@@ -0,0 +1,420 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsPlace:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="缂栫爜">
+ <a-input v-model="queryParam.placecode" allow-clear placeholder="璇疯緭鍏ョ紪鐮�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select
+ :allowClear="true"
+ style="width: 100%"
+ v-model="queryParam.placestatus"
+ placeholder="璇烽�夋嫨鐘舵��"
+ >
+ <a-select-option v-for="(item, index) in placestatusData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�鍦ㄥ簱鍖�">
+ <a-select
+ :allowClear="true"
+ style="width: 100%"
+ v-model="queryParam.areaId"
+ placeholder="璇烽�夋嫨鎵�鍦ㄥ簱鍖�"
+ >
+ <a-select-option v-for="(item, index) in areaNameData" :key="index" :value="item.id">{{
+ item.areaName
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁閿佸畾">
+ <a-select
+ :allowClear="true"
+ style="width: 100%"
+ v-model="queryParam.islock"
+ placeholder="璇烽�夋嫨鏄惁閿佸畾"
+ >
+ <a-select-option v-for="(item, index) in islockData" :key="index" :value="item.code">{{
+ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px">
+ {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :scroll="{ x: 2000 }"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsPlace:add')">
+ <a-button
+ type="primary"
+ v-if="hasPerm('WmsPlace:add')"
+ icon="plus"
+ @click="$refs.addForm.add()"
+ >鏂板</a-button
+ >
+ <a-button
+ type="danger"
+ icon="lock"
+ :disabled="selectedCounldLocks.length === 0"
+ @click="onMulLock"
+ >鎵归噺閿佸畾</a-button
+ >
+ <a-button
+ type="danger"
+ icon="unlock"
+ :disabled="selectedCounldUnLocks.length === 0"
+ @click="onMulUnlock"
+ >鎵归噺瑙i攣</a-button
+ >
+ </template>
+ <span slot="placestatusscopedSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#87d068' : text === 2 ? '#2db7f5' : text === 3 ? '#D4B60F' : '#108ee9'">{{
+ 'place_status' | dictType(text)
+ }}</a-tag>
+ </span>
+ <span slot="islockscopedSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#108ee9' : 'gray'">{{ 'yes_or_no' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="emptyContainerSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#108ee9' : 'gray'">{{ 'yes_or_no' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="heightlevelscopedSlots" slot-scope="text">
+ {{ 'height_level' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsContainer:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsContainer:edit') & hasPerm('WmsContainer:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('WmsContainer:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => WmsPlaceDelete(record)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsPlacePage, WmsPlaceDelete, WmsPlaceLock, WmsPlaceUnlock } from '@/api/modular/main/WmsPlaceManage'
+import { WmsAreaList } from '@/api/modular/main/WmsAreaManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'placecode'
+ },
+ {
+ title: '搴撲綅鐘舵��',
+ align: 'center',
+ dataIndex: 'placestatus',
+ scopedSlots: { customRender: 'placestatusscopedSlots' }
+ },
+ {
+ title: '鎵�鍦ㄥ簱鍖�',
+ align: 'center',
+ customRender: (value, record) => record.wmsArea.areaName,
+ dataIndex: 'areaid'
+ },
+ {
+ title: '鎺�',
+ align: 'center',
+ dataIndex: 'rowno'
+ },
+ {
+ title: '鍒�',
+ align: 'center',
+ dataIndex: 'columnno'
+ },
+ {
+ title: '灞�',
+ align: 'center',
+ dataIndex: 'layerno'
+ },
+ {
+ title: '杩涙繁鍙�',
+ align: 'center',
+ dataIndex: 'deepcellno'
+ },
+ {
+ title: '宸烽亾',
+ align: 'center',
+ dataIndex: 'aisle'
+ },
+ {
+ title: '绾垮彿',
+ align: 'center',
+ dataIndex: 'line'
+ },
+ {
+ title: '鏄惁閿佸畾',
+ align: 'center',
+ dataIndex: 'islock',
+ scopedSlots: { customRender: 'islockscopedSlots' }
+ },
+ {
+ title: '鏄惁绌烘墭',
+ align: 'center',
+ dataIndex: 'emptyContainer',
+ scopedSlots: { customRender: 'emptyContainerSlots' }
+ },
+ {
+ title: '搴撲綅闀垮害(m)',
+ align: 'center',
+ dataIndex: 'length'
+ },
+ {
+ title: '搴撲綅瀹藉害(m)',
+ align: 'center',
+ dataIndex: 'width'
+ },
+ {
+ title: '搴撲綅楂樺害(m)',
+ align: 'center',
+ dataIndex: 'height'
+ },
+ {
+ title: '搴撲綅X鍧愭爣',
+ align: 'center',
+ dataIndex: 'xzb'
+ },
+ {
+ title: '搴撲綅Y鍧愭爣',
+ align: 'center',
+ dataIndex: 'yzb'
+ },
+ {
+ title: '搴撲綅Z鍧愭爣',
+ align: 'center',
+ dataIndex: 'zzb'
+ },
+ {
+ title: '鍫嗗灈鏈哄唴閮ㄤ綅缃�',
+ align: 'center',
+ dataIndex: 'positionnoForSrm'
+ },
+ {
+ title: '鏈�澶ф壙閲�',
+ align: 'center',
+ dataIndex: 'maxweight'
+ },
+ {
+ title: '搴撲綅楂樺害绛夌骇',
+ align: 'center',
+ dataIndex: 'heightlevel',
+ scopedSlots: { customRender: 'heightlevelscopedSlots' }
+ },
+ {
+ title: '浼樺厛绾�',
+ align: 'center',
+ dataIndex: 'priority'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: (parameter) => {
+ return WmsPlacePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ res.data.rows = res.data.rows.map((_obj) => {
+ _obj.placestatus = _obj.placestatus.toString()
+ return _obj
+ })
+ // 鍓嶅彴鑾峰彇鏁版嵁骞剁紪鍐欐垚绉嶅瓙鏁版嵁鐨勬ā鏉�
+ // console.log(res.data.rows[0]);
+ // var ShuChu="";
+ // for(var i=res.data.rows.length-1; i>=0 ; i--){
+ // ShuChu+="new 搴撲綅淇℃伅{Id="+res.data.rows[i]['id']+",Aisle="+res.data.rows[i]['aisle']+",Aisleside=\""+res.data.rows[i]['aisleside']+"\",Areaid="+res.data.rows[i]['areaid']+",Columnno="+res.data.rows[i]['columnno']+",Deepcellno="+res.data.rows[i]['deepcellno']+",Hastaskdoing="+res.data.rows[i]['hastaskdoing']+",Height="+res.data.rows[i]['height']+",Heightlevel="+res.data.rows[i]['heightlevel']+",Isfull="+res.data.rows[i]['isfull']+",Islock=\""+res.data.rows[i]['islock']+"\",Layerno="+res.data.rows[i]['layerno']+",Length="+res.data.rows[i]['length']+",Line="+res.data.rows[i]['line']+",Maxweight="+res.data.rows[i]['maxweight']+",Placecode=\""+res.data.rows[i]['placecode']+"\",Placestatus="+res.data.rows[i]['placestatus']+",Priority="+res.data.rows[i]['priority']+",Rowno="+res.data.rows[i]['rowno']+",Width="+res.data.rows[i]['width']+",}"
+ // }
+ // console.log(ShuChu)
+ return res.data
+ })
+ },
+ placestatusData: [],
+ islockData: [],
+ hastaskdoingData: [],
+ selectedRowKeys: [],
+ selectedCounldLocks: [],
+ selectedCounldUnLocks: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsPlace:edit') || this.hasPerm('WmsPlace:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ fixed: 'right',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const placestatusOption = this.$options
+ this.placestatusData = placestatusOption.filters['dictData']('place_status')
+ const islockOption = this.$options
+ this.islockData = islockOption.filters['dictData']('yes_or_no')
+ const hastaskdoingOption = this.$options
+ this.hastaskdoingData = hastaskdoingOption.filters['dictData']('yes_or_no')
+ },
+ mounted() {
+ this.WmsAreaLists()
+ },
+ methods: {
+ WmsAreaLists() {
+ WmsAreaList()
+ .then((d) => {
+ this.areaNameData = d.data || []
+ })
+ .catch(() => {})
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsPlaceDelete(record) {
+ WmsPlaceDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ const arr1 = []
+ const arr2 = []
+ selectedRows.forEach((item) => {
+ if (item.islock === 1) {
+ arr2.push(item.id)
+ } else {
+ arr1.push(item.id)
+ }
+ })
+ this.selectedCounldLocks = arr1
+ this.selectedCounldUnLocks = arr2
+ },
+ onMulLock() {
+ this.$confirm({
+ title: '纭畾瑕佽繘琛岄攣瀹氭搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ this.handleLock((f) => {
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ })
+ },
+ onMulUnlock() {
+ this.$confirm({
+ title: '纭畾瑕佽繘琛岃В閿佹搷浣滃悧锛�',
+ okText: '纭畾',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ this.handleUnlock((f) => {
+ if (f) {
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ })
+ },
+ handleLock(callback) {
+ this.$loading.show()
+ WmsPlaceLock(this.selectedCounldLocks)
+ .then(() => {
+ this.$loading.hide()
+ callback(true)
+ })
+ .catch(() => {
+ this.$loading.hide()
+ callback(false)
+ })
+ },
+ handleUnlock(callback) {
+ this.$loading.show()
+ WmsPlaceUnlock(this.selectedCounldUnLocks)
+ .then(() => {
+ this.$loading.hide()
+ callback(true)
+ })
+ .catch(() => {
+ this.$loading.hide()
+ callback(false)
+ })
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue
new file mode 100644
index 0000000..9d1e4b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/DetailDrawer.vue
@@ -0,0 +1,284 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+<!-- 鏀惰揣鍗曠鐞� - 璇︽儏 -->
+ <div v-if="visible" style="background-color: white">
+ <div class="">
+ <div class="">
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a
+ >鍗曟嵁璇︽儏
+ </span>
+ <div style="margin-top: 10px;">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+ :rowKey="(record) => record.id" :scroll="{x: true}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+ >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+ >
+ </span>
+ <!-- 瀹為檯鏀惰揣鏁伴噺 -->
+ <template slot="qtyscopedSlots" slot-scope="text, record, index">
+ <a-input-number style="width:100%;" v-model="record.receivedQty" :min="0" />
+ </template>
+ <!-- 宸紓鏁� -->
+ <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+ {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+ </template>
+
+
+
+ <span slot="receivingStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'ReceivingStatus'
+ | dictType(text) }}</a-tag>
+ </span>
+
+
+ <span slot="inspectionStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'InspectionStatus'
+ | dictType(text) }}</a-tag>
+ </span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail } from '@/api/modular/main/WmsReceiptOrderManage'
+import { STable } from '@/components'
+
+export default {
+ components: {
+ STable
+ },
+ name: 'WmsReceiptOrderDetailDrawer',
+ emits: ['update:visible','postBjData'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ title: '鏀惰揣鐘舵��',
+ align: 'center',
+ dataIndex: 'receivingStatus',
+ scopedSlots: { customRender: 'receivingStatusscopedSlots' },
+ width: "100px"
+ },
+ {
+ title: '鎶ユ鐘舵��',
+ align: 'center',
+ dataIndex: 'inspectionStatus',
+ scopedSlots: { customRender: 'inspectionStatusscopedSlots' },
+ width: "100px"
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ width: "100px"
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ width: "150px"
+ },
+ {
+ dataIndex:'taCode',
+ title:'TA缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ // {
+ // dataIndex: 'batchno_WMS',
+ // title: '鎵规',
+ // align: 'center'
+ // },
+ // {
+ // dataIndex: 'qty',
+ // title: '鏁伴噺',
+ // align: 'center',
+ // scopedSlots: { customRender: 'qtyscopedSlots' }
+ // },
+ {
+ dataIndex: 'deliveryQty',
+ title: '閫佽揣鏁伴噺',
+ align: 'center',
+ width: "100px"
+ },
+ {
+ dataIndex: 'receivedQty',
+ title: '瀹為檯鏀惰揣鏁伴噺',
+ align: 'center',
+ width:'180px',
+ scopedSlots: { customRender: 'qtyscopedSlots' }
+ },
+ {
+ dataIndex: 'chaQty',
+ title: '宸紓鏁�',
+ align: 'center',
+ scopedSlots: { customRender: 'qtyChaScopedSlots' }
+ },
+ // {
+ // dataIndex: 'containerCode',
+ // title: '鎵樼洏缂栫爜',
+ // align: 'center'
+ // },
+ // {
+ // title: '鐘舵��',
+ // align: 'center',
+ // dataIndex: 'orderStatus',
+ // scopedSlots: { customRender: 'containerStatusscopedSlots' }
+ // },
+ // {
+ // dataIndex:'unit',
+ // title:'鍩烘湰鍗曚綅'
+ // },
+ // {
+ // dataIndex:'projectCode',
+ // title:'椤圭洰缂栧彿'
+ // },
+ // {
+ // dataIndex:'customsUnitName',
+ // title:'鍗曚綅'
+ // },
+ // {
+ // dataIndex:'tradeName',
+ // title:'鍝佸悕'
+ // },
+
+
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10','20','30','40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size:'small'
+ },
+ selectedRowKeys: [],
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true
+ this.getList(() => {
+ this.loading = false
+ })
+ },
+ getList(row) {
+ this.selectedRowKeys = []
+ this.selectedRows = []
+ WmsOrderLldDetail({ id: row.id })
+ .then(d => {
+
+ // 娴嬭瘯鏁版嵁
+ // d.data.rows.forEach(element => {
+ // element.receivingStatus =1;
+ // element.inspectionStatus =1;
+ // });
+
+ this.list = d.data.rows || []
+
+
+ this.$emit('update:visible', true)
+
+ // callback && callback(true)
+ })
+ .catch(() => {
+ this.list = []
+ this.$emit('update:visible', false)
+
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ this.$emit('postBjData', this.selectedRows)
+ },
+ clearAll(){
+ this.selectedRowKeys = []
+ this.selectedRows = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue
new file mode 100644
index 0000000..9289d41
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/addForm.vue
@@ -0,0 +1,84 @@
+锘�<template>
+ <a-modal
+ title="鏂板鏀惰揣鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsReceiptOrderAdd
+ } from '@/api/modular/main/WmsReceiptOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsReceiptOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue
new file mode 100644
index 0000000..64a86f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/editForm.vue
@@ -0,0 +1,124 @@
+锘�<template>
+
+<a-modal
+ title="鏀惰揣"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form" layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀惰揣浜�">
+ <a-input v-model="shr" allow-clear placeholder="璇疯緭鍏ユ敹璐т汉"/>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <!-- <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item> -->
+ </a-form>
+ </a-spin>
+ </a-modal>
+
+ <!-- <a-modal
+ title="缂栬緫鏀惰揣鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal> -->
+</template>
+
+<script>
+ import {
+ WmsReceiptOrderEdit
+ } from '@/api/modular/main/WmsReceiptOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ shr:""
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ if(record.orderStatus == 4){
+ this.$message.warning('鐘舵�佸凡瀹屾垚锛屼笉鍙户缁敹璐э紒');
+ return;
+ }
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsReceiptOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue
new file mode 100644
index 0000000..3dafb69
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsReceiptOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsReceiptOrderFromExcel, wmsReceiptOrderDownloadExcelTemplate} from '@/api/modular/main/WmsReceiptOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsReceiptOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsReceiptOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsReceiptOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsReceiptOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsReceiptOrderDownloadExcelTemplate() {
+ wmsReceiptOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue
new file mode 100644
index 0000000..b271eea
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsReceiptOrder/index.vue
@@ -0,0 +1,448 @@
+锘�<template>
+ <div>
+ <!-- 鏀惰揣鍗� -->
+ <a-card :bordered="false" :bodyStyle="tstyle">
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsReceiptOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="閫佽揣閫氱煡鍗曞彿">
+ <a-input v-model="queryParam.sourceBillno" allow-clear placeholder="璇疯緭鍏ラ�佽揣閫氱煡鍗曞彿" />
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗙紪鐮�">
+ <a-input v-model="queryParam.vendorcode" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="渚涘簲鍟嗗悕绉�">
+ <a-input v-model="queryParam.vendorname" allow-clear placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撶鍛�">
+ <a-input v-model="queryParam.warehouseKeepername" allow-clear placeholder="璇疯緭鍏ヤ粨绠″憳" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="璐告槗鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tradeMode" placeholder="璇烽�夋嫨璐告槗鏂瑰紡">
+ <a-select-option v-for="(item, index) in tradeModeData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳偍涓績">
+ <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撻棿">
+ <a-input v-model="queryParam.storeRoomname" allow-clear placeholder="璇疯緭鍏ヤ粨闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎶ュ叧鍗曞彿">
+ <a-input v-model="queryParam.declarationCode" allow-clear placeholder="璇疯緭鍏ユ姤鍏冲崟鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="涓撲笟">
+ <a-input v-model="queryParam.majorname" allow-clear placeholder="璇疯緭鍏ヤ笓涓�" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table ref="table" :scroll="{ x: true }" :columns="columns" :data="loadData" :alert="true"
+ :rowKey="(record) => record.id" >
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsReceiptOrder:add')">
+
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsReceiptOrder:exportExcel')" icon="download" @click="wmsReceiptOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsReceiptOrder:add')" icon="plus" @click="$refs.addForm.add()">鏇存柊</a-button>
+ </template>
+ <span slot="tradeModescopedSlots" slot-scope="text">
+ {{ 'trade_mode' | dictType(text) }}
+ </span>
+ <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+ {{ 'order_statusenum' | dictType(text) }}
+ </span> -->
+ <span slot="action" slot-scope="text, record">
+ <!-- <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 4 ? 'disabled' : '']" @click="$refs.editForm.edit(record)">鏀惰揣</a> -->
+ <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.orderStatus == 4 ? 'disabled' : '']"
+ @click="onDistribute(record)">鏀惰揣</a>
+
+
+
+ <a v-if="hasPerm('WmsReceiptOrder:edit')" :class="[record.receivingStatus == 1 ? 'disabled' : '']"
+ @click="onDistributeBj(record)">鎶ユ</a>
+
+ <!-- <a v-if="hasPerm('WmsReceiptOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a> -->
+ <!-- <a-divider type="vertical" v-if="hasPerm('WmsReceiptOrder:edit') & hasPerm('WmsReceiptOrder:delete')"/> -->
+ <!-- <a-popconfirm v-if="hasPerm('WmsReceiptOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsReceiptOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+
+ <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'order_statusenum'
+ | dictType(text) }}</a-tag>
+ </span> -->
+
+
+ <span slot="receivingStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'ReceivingStatus'
+ | dictType(text) }}</a-tag>
+ </span>
+
+
+ <span slot="inspectionStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text == '2' ? '#daa520' : (text == '1' ? '#cd5c5c' : (text == '3' ? '#add8e6' : '#696969'))">{{ 'InspectionStatus'
+ | dictType(text) }}</a-tag>
+ </span>
+
+
+
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData"/>
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsReceiptOrderPage, WmsReceiptOrderDelete ,WmsReceiptOrderSh ,WmsOrderBaojian} from '@/api/modular/main/WmsReceiptOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ fixed: 'left',
+ dataIndex: 'no',
+ scopedSlots: { customRender: 'linkSlot' },
+ width: "140px"
+ },
+ // {
+ // title: '鍗曟嵁鐘舵��',
+ // align: 'center',
+ // dataIndex: 'orderStatus',
+ // scopedSlots: { customRender: 'orderStatusscopedSlots' },
+ // width: "100px"
+ // },
+
+ {
+ title: '鏀惰揣鐘舵��',
+ align: 'center',
+ dataIndex: 'receivingStatus',
+ scopedSlots: { customRender: 'receivingStatusscopedSlots' },
+ width: "100px"
+ },
+ {
+ title: '鎶ユ鐘舵��',
+ align: 'center',
+ dataIndex: 'inspectionStatus',
+ scopedSlots: { customRender: 'inspectionStatusscopedSlots' },
+ width: "100px"
+ },
+
+ {
+ title: '鍒涘缓鏃ユ湡',
+ align: 'center',
+ dataIndex: 'billdate',
+ width: "160px"
+ },
+ {
+ title: '閫佽揣閫氱煡鍗曞彿',
+ align: 'center',
+ dataIndex: 'sourceBillNo',
+ width: "160px"
+ },
+ {
+ title: '渚涘簲鍟嗙紪鐮�',
+ align: 'center',
+ dataIndex: 'vendorcode',
+ width: "160px"
+ },
+ {
+ title: '渚涘簲鍟嗗悕绉�',
+ align: 'center',
+ dataIndex: 'vendorname',
+ width: "160px"
+ },
+ {
+ title: '鍏徃鍚嶇О',
+ align: 'center',
+ dataIndex: 'companyname',
+ width: "160px"
+ },
+ {
+ title: '浠撶鍛�',
+ align: 'center',
+ dataIndex: 'warehouseKeepername',
+ width: "100px"
+ },
+ {
+ title: '璐告槗鏂瑰紡',
+ align: 'center',
+ dataIndex: 'tradeMode',
+ scopedSlots: { customRender: 'tradeModescopedSlots' },
+ width: "100px"
+ },
+ {
+ title: '浠撳偍涓績',
+ align: 'center',
+ dataIndex: 'warehouseCentername',
+ width: "160px"
+ },
+ {
+ title: '浠撻棿',
+ align: 'center',
+ dataIndex: 'storeRoomname',
+ width: "100px"
+ },
+ {
+ title: '鎶ュ叧鍗曞彿',
+ align: 'center',
+ dataIndex: 'declarationCode',
+ width: "100px"
+ },
+ {
+ title: '涓撲笟',
+ align: 'center',
+ dataIndex: 'majorname',
+ width: "100px"
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks',
+ width: "100px"
+ },
+
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+
+ return WmsReceiptOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+
+ this.$nextTick(()=>{
+ if(res.data.rows && res.data.rows.length>0){
+ this.onOpenInfo(res.data.rows[0]);
+ }
+ })
+// // 娴嬭瘯鏁版嵁
+// res.data.rows.forEach(element => {
+// element.receivingStatus =1;
+// element.inspectionStatus =1;
+// });
+ return res.data
+ })
+ },
+ tradeModeData: [],
+ orderStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ //璇︽儏鍙橀噺
+ infoRow: {},
+ infoVisible: false,
+ postBjDataArr: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsReceiptOrder:edit') || this.hasPerm('WmsReceiptOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ fixed: 'right',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const tradeModeOption = this.$options
+ this.tradeModeData = tradeModeOption.filters['dictData']('trade_mode')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsReceiptOrderDelete(record) {
+ WmsReceiptOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ //璇︽儏
+ onOpenInfo(row) {
+ this.infoVisible = true;
+ this.infoRow = row;
+ if(row){
+ this.$refs.tableDetailDrawer.getList(row);
+ }
+ },
+
+// 鏀惰揣
+ onDistribute(obj) {
+ // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+ // if (obj.orderStatus == 1) return false
+
+ if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+ this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+ return
+ }
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屾敹璐т换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText: '纭',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ let param = {
+ "no":obj.no,
+ getOrderDetailOutputList: this.postBjDataArr
+ }
+ WmsReceiptOrderSh(param).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ this.$refs.tableDetailDrawer.clearAll()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触')
+ }
+ })
+ }
+ })
+ },
+
+ // 閫変腑鐨勭墿鏂�
+ postBjData(data) {
+ this.postBjDataArr = data
+ },
+// 鎶ユ
+ onDistributeBj(obj) {
+ // if (obj.orderStatus !== 1 && obj.orderStatus !== 4) return false
+ // if (obj.orderStatus == 1) return false
+ if(this.postBjDataArr.length<=0 || obj.id != this.postBjDataArr[0].orderId){
+ this.$message.error('璇烽�変腑姝ゅ崟鎹笅鐨勭墿鏂�!')
+ return
+ }
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屾姤妫�浠诲姟鐨勬搷浣滐紝纭瑕佺户缁槢锛�',
+ okText: '纭',
+ cancelText: '鍙栨秷',
+ onOk: () => {
+ let param = {
+ ...obj,
+ dtls: this.postBjDataArr
+ }
+ WmsOrderBaojian(param).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触')
+ }
+ })
+ }
+ })
+ },
+
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue
new file mode 100644
index 0000000..8a5073f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/addForm.vue
@@ -0,0 +1,82 @@
+锘�<template>
+ <a-modal
+ title="鏂板鍒嗘嫞鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsSortOrderAdd
+ } from '@/api/modular/main/WmsSortOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const sortStatusOption = this.$options
+ this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsSortOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue
new file mode 100644
index 0000000..f3f21a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/editForm.vue
@@ -0,0 +1,95 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫鍒嗘嫞鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsSortOrderEdit
+ } from '@/api/modular/main/WmsSortOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const sortStatusOption = this.$options
+ this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsSortOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue
new file mode 100644
index 0000000..0aa0085
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsSortOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsSortOrderFromExcel, wmsSortOrderDownloadExcelTemplate} from '@/api/modular/main/WmsSortOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsSortOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsSortOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsSortOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsSortOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsSortOrderDownloadExcelTemplate() {
+ wmsSortOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue
new file mode 100644
index 0000000..02309d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSortOrder/index.vue
@@ -0,0 +1,224 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsSortOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏉ユ簮鍗曞彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ユ潵婧愬崟鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="椤圭洰缂栧彿">
+ <a-input v-model="queryParam.projectCode" allow-clear placeholder="璇疯緭鍏ラ」鐩紪鍙�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="TA鍙�">
+ <a-input v-model="queryParam.tACode" allow-clear placeholder="璇疯緭鍏A鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒嗘鍙�">
+ <a-input v-model="queryParam.partCode" allow-clear placeholder="璇疯緭鍏ュ垎娈靛彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栫爜">
+ <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹瑰櫒缂栧彿">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ュ鍣ㄧ紪鍙�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.sortStatus" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in sortStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsSortOrder:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsSortOrder:exportExcel')" icon="download" @click="wmsSortOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsSortOrder:add')" icon="plus" @click="$refs.addForm.add()">鏂板鍒嗘嫞鍗�</a-button>
+ </template>
+ <span slot="sortStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#daa520':(text===1?'#cd5c5c':(text===3?'#add8e6':'#696969'))">{{ 'SortStatusEnum' | dictType(text) }}</a-tag>
+
+ </span>
+ <!-- <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsSortOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsSortOrder:edit') & hasPerm('WmsSortOrder:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsSortOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsSortOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span> -->
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsSortOrderPage, WmsSortOrderDelete } from '@/api/modular/main/WmsSortOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鏉ユ簮鍗曞彿',
+ align: 'center',
+ dataIndex: 'orderNo'
+ },
+ {
+ title: '椤圭洰缂栧彿',
+ align: 'center',
+ dataIndex: 'projectCode'
+ },
+ {
+ title: 'TA鍙�',
+ align: 'center',
+ dataIndex: 'tACode'
+ },
+ {
+ title: '鍒嗘鍙�',
+ align: 'center',
+ dataIndex: 'partCode'
+ },
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ dataIndex: 'placeCode'
+ },
+ {
+ title: '瀹瑰櫒缂栧彿',
+ align: 'center',
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '鍒嗘嫞鏁�',
+ align: 'center',
+ dataIndex: 'sortQuantity'
+ },
+ {
+ title: '瀹為檯鍒嗘嫞鏁�',
+ align: 'center',
+ dataIndex: 'actualQuantity'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ dataIndex: 'remarks'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'sortStatus',
+ scopedSlots: { customRender: 'sortStatusscopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsSortOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ sortStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsSortOrder:edit') || this.hasPerm('WmsSortOrder:delete')) {
+ // this.columns.push({
+ // title: '鎿嶄綔',
+ // width: '150px',
+ // dataIndex: 'action',
+ // scopedSlots: { customRender: 'action' }
+ // })
+ }
+ const sortStatusOption = this.$options
+ this.sortStatusData = sortStatusOption.filters['dictData']('SortStatusEnum')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsSortOrderDelete (record) {
+ WmsSortOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue
new file mode 100644
index 0000000..dd82b3a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/DetailDrawer.vue
@@ -0,0 +1,239 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+<!-- 閫�搴撳崟 - 璇︽儏 -->
+ <div v-if="visible" style="background-color: white">
+ <div class="">
+ <div class="">
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a
+ >鍗曟嵁璇︽儏
+ </span>
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <div style="margin-top: 10px;">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false"
+ :rowKey="(record) => record.id"
+
+ >
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+ >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+ >
+ </span>
+ <!-- 瀹為檯閫�璐ф暟閲� -->
+ <template slot="qtyscopedSlots" slot-scope="text, record, index">
+ <a-input-number style="width:100%;" v-model="record.qty" :min="0" />
+ </template>
+ <!-- 宸紓鏁� -->
+ <!-- <template slot="qtyChaScopedSlots" slot-scope="text, record, index">
+ {{ Number(record.deliveryQty - record.receivedQty).toFixed(2) }}
+ </template> -->
+
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { WmsOrderRDetail } from '@/api/modular/main/WmsStockReturnOrderManage'
+import { STable } from '@/components'
+
+export default {
+ components: {
+ STable
+ },
+ name: 'WmsReceiptOrderDetailDrawer',
+ emits: ['update:visible','postBjData'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ dataIndex:'projectCode',
+ title:'椤圭洰缂栧彿'
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center'
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center'
+ },
+
+ // {
+ // dataIndex: 'batchno_WMS',
+ // title: '鎵规',
+ // align: 'center'
+ // },
+ // {
+ // dataIndex: 'qty',
+ // title: '鏁伴噺',
+ // align: 'center',
+ // scopedSlots: { customRender: 'qtyscopedSlots' }
+ // },
+ // {
+ // dataIndex: 'deliveryQty',
+ // title: '閫佽揣鏁伴噺',
+ // align: 'center'
+ // },
+ {
+ dataIndex: 'qty',
+ title: '閫�搴撴暟閲�',
+ align: 'center',
+ width:'200px',
+ // scopedSlots: { customRender: 'qtyscopedSlots' }
+ },
+ // {
+ // dataIndex: 'chaQty',
+ // title: '宸紓鏁�',
+ // align: 'center',
+ // scopedSlots: { customRender: 'qtyChaScopedSlots' }
+ // },
+ // {
+ // dataIndex: 'containerCode',
+ // title: '鎵樼洏缂栫爜',
+ // align: 'center'
+ // },
+ // {
+ // title: '鐘舵��',
+ // align: 'center',
+ // dataIndex: 'orderStatus',
+ // scopedSlots: { customRender: 'containerStatusscopedSlots' }
+ // },
+ // {
+ // dataIndex:'unit',
+ // title:'鍩烘湰鍗曚綅'
+ // },
+
+ // {
+ // dataIndex:'customsUnitName',
+ // title:'鍗曚綅'
+ // },
+ // {
+ // dataIndex:'tradeName',
+ // title:'鍝佸悕'
+ // },
+
+
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10','20','30','40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size:'small'
+ },
+ selectedRowKeys: [],
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true
+ this.getList(() => {
+ this.loading = false
+ })
+ },
+ getList(row) {
+ WmsOrderRDetail({ id: row.id })
+ .then(d => {
+ this.list = d.data.rows || []
+ this.$emit('update:visible', true)
+ // callback && callback(true)
+ })
+ .catch(() => {
+ this.list = []
+ this.$emit('update:visible', false)
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ this.$emit('postBjData', this.selectedRows)
+ },
+ clearAll(){
+ this.selectedRowKeys = []
+ this.selectedRows = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue
new file mode 100644
index 0000000..30778f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/addForm.vue
@@ -0,0 +1,120 @@
+锘�<template>
+ <a-modal
+ title="鏂板閫�搴撳崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷" v-decorator="['moveType', {rules: [{ required: true, message: '璇烽�夋嫨浜嬪姟绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in moveTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+ </a-form-item>
+ <a-form-item label="鏀剁泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" v-decorator="['costCenterID']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+ </a-form-item>
+ <a-form-item label="棰嗗彇浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鍙栦汉" v-decorator="['pickerID']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsStockReturnOrderAdd
+ } from '@/api/modular/main/WmsStockReturnOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ moveTypeData: [],
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const moveTypeOption = this.$options
+ this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsStockReturnOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue
new file mode 100644
index 0000000..856925f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/editForm.vue
@@ -0,0 +1,143 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫閫�搴撳崟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷" v-decorator="['moveType', {rules: [{ required: true, message: '璇烽�夋嫨浜嬪姟绫诲瀷锛�' }]}]">
+ <a-select-option v-for="(item,index) in moveTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['nO']" />
+ </a-form-item>
+ <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+ </a-form-item>
+ <a-form-item label="鏀剁泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" v-decorator="['costCenterID']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+ </a-form-item>
+ <a-form-item label="棰嗗彇浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鍙栦汉" v-decorator="['pickerID']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsStockReturnOrderEdit
+ } from '@/api/modular/main/WmsStockReturnOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ moveTypeData: [],
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const moveTypeOption = this.$options
+ this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ moveType: record.moveType,
+ nO: record.nO,
+ wBSElementcode: record.wBSElementcode,
+ benefitingDepartcode: record.benefitingDepartcode,
+ costCenterID: record.costCenterID,
+ fI_Client_Analysis_H: record.fI_Client_Analysis_H,
+ pickerID: record.pickerID,
+ companyname: record.companyname,
+ constructionTeamID: record.constructionTeamID,
+ orderStatus: record.orderStatus
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsStockReturnOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue
new file mode 100644
index 0000000..9a26227
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsStockReturnOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsStockReturnOrderFromExcel, wmsStockReturnOrderDownloadExcelTemplate} from '@/api/modular/main/WmsStockReturnOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsStockReturnOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsStockReturnOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsStockReturnOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsStockReturnOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsStockReturnOrderDownloadExcelTemplate() {
+ wmsStockReturnOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue
new file mode 100644
index 0000000..7340540
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsStockReturnOrder/index.vue
@@ -0,0 +1,293 @@
+锘�<template>
+ <div>
+ <!-- 閫�搴撳崟 -->
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsStockReturnOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48"><a-col :md="8" :sm="24">
+ <a-form-item label="浜嬪姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.moveType" placeholder="璇烽�夋嫨浜嬪姟绫诲瀷">
+ <a-select-option v-for="(item, index) in moveTypeData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗙敤椤圭洰鍙�">
+ <a-input v-model="queryParam.wBSElementcode" allow-clear placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗘枡閮ㄩ棬">
+ <a-input v-model="queryParam.benefitingDepartcode" allow-clear placeholder="璇疯緭鍏ラ鏂欓儴闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏀剁泭閮ㄩ棬">
+ <a-input v-model="queryParam.costCenterID" allow-clear placeholder="璇疯緭鍏ユ敹鐩婇儴闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈡埛">
+ <a-input v-model="queryParam.fI_Client_Analysis_H" allow-clear placeholder="璇疯緭鍏ュ鎴�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗗彇浜�">
+ <a-input v-model="queryParam.pickerID" allow-clear placeholder="璇疯緭鍏ラ鍙栦汉" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏂藉伐闃�">
+ <a-input v-model="queryParam.constructionTeamID" allow-clear placeholder="璇疯緭鍏ユ柦宸ラ槦" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <!-- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" -->
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+ >
+
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsStockReturnOrder:add')">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+ @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsStockReturnOrder:exportExcel')" icon="download"
+ @click="wmsStockReturnOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+
+
+ <a-button type="primary" v-if="hasPerm('WmsStockReturnOrder:add')" icon="plus"
+ @click="$refs.addForm.add()">鏂板閫�搴撳崟</a-button>
+ </template>
+
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+
+ <span slot="moveTypescopedSlots" slot-scope="text">
+ {{ 'MoveType' | dictType(text) }}
+ </span>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ {{ 'order_statusenum' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsStockReturnOrder:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsStockReturnOrder:edit') & hasPerm('WmsStockReturnOrder:delete')" />
+ <a-popconfirm v-if="hasPerm('WmsStockReturnOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�"
+ @confirm="() => WmsStockReturnOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" @postBjData="postBjData" />
+
+ </a-card>
+
+
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsStockReturnOrderPage, WmsStockReturnOrderDelete } from '@/api/modular/main/WmsStockReturnOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '浜嬪姟绫诲瀷',
+ align: 'center',
+ dataIndex: 'moveType',
+ scopedSlots: { customRender: 'moveTypescopedSlots' }
+ },
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'no',
+ scopedSlots: { customRender: 'linkSlot' },
+ minWidth: "100px"
+ },
+ {
+ title: '閫�鏂欑敵璇锋棩鏈�',
+ align: 'center',
+ dataIndex: 'billdate'
+ },
+ {
+ title: '棰嗙敤椤圭洰鍙�',
+ align: 'center',
+ dataIndex: 'wBSElementcode'
+ },
+ {
+ title: '棰嗘枡閮ㄩ棬',
+ align: 'center',
+ dataIndex: 'benefitingDepartcode'
+ },
+ {
+ title: '鏀剁泭閮ㄩ棬',
+ align: 'center',
+ dataIndex: 'costCenterID'
+ },
+ {
+ title: '瀹㈡埛',
+ align: 'center',
+ dataIndex: 'fI_Client_Analysis_H'
+ },
+ {
+ title: '棰嗗彇浜�',
+ align: 'center',
+ dataIndex: 'pickerID'
+ },
+ {
+ title: '鍏徃',
+ align: 'center',
+ dataIndex: 'companyname'
+ },
+ {
+ title: '鏂藉伐闃�',
+ align: 'center',
+ dataIndex: 'constructionTeamID'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsStockReturnOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.$nextTick(() => {
+ if (res.data.rows && res.data.rows.length > 0) {
+ this.onOpenInfo(res.data.rows[0]);
+ }
+ })
+ return res.data
+ })
+ },
+ moveTypeData: [],
+ orderStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ //璇︽儏鍙橀噺
+ infoRow: {},
+ infoVisible: false,
+ postBjDataArr: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsStockReturnOrder:edit') || this.hasPerm('WmsStockReturnOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const moveTypeOption = this.$options
+ this.moveTypeData = moveTypeOption.filters['dictData']('MoveType')
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsStockReturnOrderDelete(record) {
+ WmsStockReturnOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ //璇︽儏
+ onOpenInfo(row) {
+ this.infoVisible = true;
+ this.infoRow = row;
+ if (row) {
+ this.$refs.tableDetailDrawer.getList(row);
+ }
+ },
+ // 閫変腑鐨勭墿鏂�
+ postBjData(data) {
+ this.postBjDataArr = data
+ },
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue
new file mode 100644
index 0000000..a6b838a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/addForm.vue
@@ -0,0 +1,92 @@
+锘�<template>
+ <a-modal
+ title="鏂板渚涘簲鍟�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['supplierName', {rules: [{required: true, message: '璇疯緭鍏ュ悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['supplierCode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="鑱旂郴鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-decorator="['iphone']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsSupplierAdd
+ } from '@/api/modular/main/WmsSupplierManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsSupplierAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue
new file mode 100644
index 0000000..85a7c20
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/editForm.vue
@@ -0,0 +1,109 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫渚涘簲鍟�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['supplierName', {rules: [{required: true, message: '璇疯緭鍏ュ悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['supplierCode', {rules: [{required: true, message: '璇疯緭鍏ョ紪鐮侊紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="鍦板潃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ湴鍧�" v-decorator="['address']" />
+ </a-form-item>
+ <a-form-item label="鑱旂郴鐢佃瘽" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-decorator="['iphone']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsSupplierEdit
+ } from '@/api/modular/main/WmsSupplierManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ supplierName: record.supplierName,
+ supplierCode: record.supplierCode,
+ address: record.address,
+ iphone: record.iphone
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsSupplierEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue
new file mode 100644
index 0000000..4385733
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsSupplier/index.vue
@@ -0,0 +1,162 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsSupplier:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍚嶇О">
+ <a-input v-model="queryParam.supplierName" allow-clear placeholder="璇疯緭鍏ュ悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="缂栫爜">
+ <a-input v-model="queryParam.supplierCode" allow-clear placeholder="璇疯緭鍏ョ紪鐮�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑱旂郴鐢佃瘽">
+ <a-input v-model="queryParam.iphone" allow-clear placeholder="璇疯緭鍏ヨ仈绯荤數璇�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsSupplier:add')" >
+ <a-button type="primary" v-if="hasPerm('WmsSupplier:add')" icon="plus" @click="$refs.addForm.add()">鏂板渚涘簲鍟�</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsSupplier:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('WmsSupplier:edit') & hasPerm('WmsSupplier:delete')"/>
+ <a-popconfirm v-if="hasPerm('WmsSupplier:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsSupplierDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { WmsSupplierPage, WmsSupplierDelete } from '@/api/modular/main/WmsSupplierManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍚嶇О',
+ align: 'center',
+sorter: true,
+ dataIndex: 'supplierName'
+ },
+ {
+ title: '缂栫爜',
+ align: 'center',
+sorter: true,
+ dataIndex: 'supplierCode'
+ },
+ {
+ title: '鍦板潃',
+ align: 'center',
+sorter: true,
+ dataIndex: 'address'
+ },
+ {
+ title: '鑱旂郴鐢佃瘽',
+ align: 'center',
+sorter: true,
+ dataIndex: 'iphone'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsSupplierPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('WmsSupplier:edit') || this.hasPerm('WmsSupplier:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsSupplierDelete (record) {
+ WmsSupplierDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue
new file mode 100644
index 0000000..f5c06b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/DetailDrawer.vue
@@ -0,0 +1,205 @@
+<template>
+ <!-- <a-drawer
+ title="璁㈠崟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+
+ </a-spin>
+ </a-drawer> -->
+
+ <div v-if="visible" style="background-color: white">
+ <div class="">
+ <div class="">
+ <span style="font-weight:bold;cursor:default;">
+ <a style="cursor:default;">{{ row.no }}</a
+ >鍗曟嵁璇︽儏
+ </span>
+ <div style="margin-top: 10px;">
+ <a-table :scroll="{x: true}" :columns="columns" :data-source="list" row-key="id" :pagination="ipagination" :bordered="false">
+ <template slot="index" slot-scope="text, record, index">{{ index + 1 }}</template>
+ <span slot="containerStatusscopedSlots" slot-scope="text">
+ <a-tag
+ :color="text === '1' ? '#daa520' : text === '2' ? '#cd5c5c' : text === '3' ? '#add8e6' : '#696969'"
+ >{{ 'orderdetails_statusenum' | dictType(text) }}</a-tag
+ >
+ </span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { WmsOrderLldDetail } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import { STable } from '@/components'
+
+export default {
+ components: {
+ STable
+ },
+ name: 'wmsOrderLldManagementDetailDrawer',
+ emits: ['update:visible'],
+ props: {
+ visible: {
+ type: Boolean,
+ default: false
+ },
+ row: {
+ type: Object,
+ default: function() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ loading: false,
+ containerStatusData: [],
+ list: [],
+ columns: [
+ {
+ dataIndex: 'index',
+ title: '搴忓彿',
+ fixed: 'left',
+ width: '60',
+ scopedSlots: { customRender: 'index' },
+ align: 'center'
+ },
+ {
+ dataIndex: 'materialcode',
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ {
+ dataIndex: 'materialname',
+ title: '鐗╂枡鍚嶇О',
+ align: 'center'
+ },
+ {
+ dataIndex:'taCode',
+ title:'TA缂栧彿',
+ align: 'center',
+ width:'120px'
+ },
+ // {
+ // dataIndex: 'batchno_WMS',
+ // title: '鎵规',
+ // align: 'center'
+ // },
+ {
+ dataIndex: 'qty',
+ title: '鏁伴噺',
+ align: 'center',
+ width:'120px'
+ },
+ // {
+ // dataIndex: 'containerCode',
+ // title: '鎵樼洏缂栫爜',
+ // align: 'center'
+ // },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'containerStatusscopedSlots' }
+ },
+ // {
+ // dataIndex:'unit',
+ // title:'鍩烘湰鍗曚綅'
+ // },
+ // {
+ // dataIndex:'projectCode',
+ // title:'椤圭洰缂栧彿'
+ // },
+ // {
+ // dataIndex:'customsUnitName',
+ // title:'鍗曚綅'
+ // },
+ // {
+ // dataIndex:'tradeName',
+ // title:'鍝佸悕'
+ // },
+
+
+ ],
+ // 鍒嗛〉
+ ipagination: {
+ current: 1,
+ pageSize: 10,
+ pageSizeOptions: ['10','20','30','40'],
+ showTotal: (total, range) => {
+ return range[0] + '-' + range[1] + '鍏�' + total + '鏉�'
+ },
+ showQuickJumper: true,
+ showSizeChanger: true,
+ total: 0,
+ size:'small'
+ },
+ }
+ },
+
+ created() {
+ const containerStatusOption = this.$options
+ this.containerStatusData = containerStatusOption.filters['dictData']('orderdetails_statusenum')
+ },
+ methods: {
+ onClose() {
+ this.close()
+ },
+ close() {
+ this.$emit('update:visible', false)
+ },
+ afterVisibleChange(visible) {
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow() {
+ this.loading = true
+ this.getList(() => {
+ this.loading = false
+ })
+ },
+ getList(row) {
+ WmsOrderLldDetail({ id: row.id })
+ .then(d => {
+ this.list = d.data.rows || []
+ this.$emit('update:visible', true)
+
+ // callback && callback(true)
+ })
+ .catch(() => {
+ this.list = []
+ this.$emit('update:visible', false)
+
+ // callback && callback(false)
+ })
+ },
+ afterClsoe() {
+ this.list = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div {
+ height: 100%;
+ overflow: auto;
+
+ .drawer-content {
+ padding: 16px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue
new file mode 100644
index 0000000..ccbd6df
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/addForm.vue
@@ -0,0 +1,126 @@
+锘�<template>
+ <a-modal
+ title="鏂板棰嗘枡鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" v-decorator="['moveType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+ </a-form-item>
+ <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wBSElementcode']" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+ </a-form-item>
+ <a-form-item label="鍙楃泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" v-decorator="['costCenterID']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍏徃闂翠氦鏄�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isInnerCompany', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欎汉" v-decorator="['pickerID']" />
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsTakeMaterialOrderAdd
+ } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ if(values.isInnerCompany){
+ values.isInnerCompany = 1
+ }else{
+ values.isInnerCompany = 2
+ }
+ WmsTakeMaterialOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue
new file mode 100644
index 0000000..63d336b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/editForm.vue
@@ -0,0 +1,146 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫棰嗘枡鍗�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="浜嬪姟绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" v-decorator="['moveType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['no']" />
+ </a-form-item>
+ <a-form-item label="棰嗙敤椤圭洰鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" v-decorator="['wbsElementcode']" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欓儴闂�" v-decorator="['benefitingDepartcode']" />
+ </a-form-item>
+ <a-form-item label="鍙楃泭閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" v-decorator="['costCenterID']" />
+ </a-form-item>
+ <a-form-item label="瀹㈡埛" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鎴�" v-decorator="['fI_Client_Analysis_H']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍏徃闂翠氦鏄�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['isInnerCompany', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="棰嗘枡浜�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ鏂欎汉" v-decorator="['pickerID']" />
+ </a-form-item>
+ <a-form-item label="浠撳偍涓績" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" v-decorator="['warehouseCentername']" />
+ </a-form-item>
+ <a-form-item label="鍏徃" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙�" v-decorator="['companyname']" />
+ </a-form-item>
+ <a-form-item label="鏂藉伐闃�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ柦宸ラ槦" v-decorator="['constructionTeamID']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��" v-decorator="['orderStatus', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁鐘舵�侊紒' }]}]">
+ <a-select-option v-for="(item,index) in orderStatusData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsTakeMaterialOrderEdit
+ } from '@/api/modular/main/WmsTakeMaterialOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderStatusData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ moveType: record.moveType,
+ no: record.no,
+ wbsElementcode: record.wbsElementcode,
+ benefitingDepartcode: record.benefitingDepartcode,
+ costCenterID: record.costCenterID,
+ fI_Client_Analysis_H: record.fI_Client_Analysis_H,
+ isInnerCompany: record.isInnerCompany,
+ pickerID: record.pickerID,
+ warehouseCentername: record.warehouseCentername,
+ companyname: record.companyname,
+ constructionTeamID: record.constructionTeamID,
+ orderStatus: record.orderStatus
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsTakeMaterialOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue
new file mode 100644
index 0000000..9ee7fd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsTakeMaterialOrderDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsTakeMaterialOrderFromExcel, wmsTakeMaterialOrderDownloadExcelTemplate} from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsTakeMaterialOrderDownloadExcelTemplate")
+ window.downloadFile = this.wmsTakeMaterialOrderDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsTakeMaterialOrder"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsTakeMaterialOrderFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsTakeMaterialOrderDownloadExcelTemplate() {
+ wmsTakeMaterialOrderDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue
new file mode 100644
index 0000000..340ba87
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTakeMaterialOrder/index.vue
@@ -0,0 +1,339 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsTakeMaterialOrder:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浜嬪姟绫诲瀷">
+ <a-input v-model="queryParam.moveType" allow-clear placeholder="璇疯緭鍏ヤ簨鍔$被鍨�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.no" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�" />
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗙敤椤圭洰鍙�">
+ <a-input v-model="queryParam.wbsElementcode" allow-clear placeholder="璇疯緭鍏ラ鐢ㄩ」鐩彿" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗘枡閮ㄩ棬">
+ <a-input v-model="queryParam.benefitingDepartcode" allow-clear placeholder="璇疯緭鍏ラ鏂欓儴闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙楃泭閮ㄩ棬">
+ <a-input v-model="queryParam.costCenterID" allow-clear placeholder="璇疯緭鍏ュ彈鐩婇儴闂�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀹㈡埛">
+ <a-input v-model="queryParam.fI_Client_Analysis_H" allow-clear placeholder="璇疯緭鍏ュ鎴�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="棰嗘枡浜�">
+ <a-input v-model="queryParam.pickerID" allow-clear placeholder="璇疯緭鍏ラ鏂欎汉" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠撳偍涓績">
+ <a-input v-model="queryParam.warehouseCentername" allow-clear placeholder="璇疯緭鍏ヤ粨鍌ㄤ腑蹇�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃">
+ <a-input v-model="queryParam.companyname" allow-clear placeholder="璇疯緭鍏ュ叕鍙�" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatus" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item, index) in orderStatusData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :scroll="{x: true}" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsTakeMaterialOrder:add')">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+ @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsTakeMaterialOrder:exportExcel')" icon="download"
+ @click="wmsTakeMaterialOrderToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsTakeMaterialOrder:add')" icon="plus"
+ @click="$refs.addForm.add()">鏂板棰嗘枡鍗�</a-button>
+ </template>
+ <!-- <span slot="orderStatusscopedSlots" slot-scope="text">
+ {{ 'order_statusenum' | dictType(text) }}
+ </span> -->
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsTakeMaterialOrder:edit')" :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical"
+ v-if="hasPerm('WmsTakeMaterialOrder:edit') & hasPerm('WmsTakeMaterialOrder:delete')" />
+
+
+ <a-dropdown>
+ <a class="ant-dropdown-link" @click="e => e.preventDefault()">鏇村...</a>
+ <a-menu slot="overlay">
+ <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+ style="margin-right:10px;" @click="onDistribute(record)">涓嬪彂</a></a-menu-item>
+ <a-menu-item><a :class="[record.orderStatus === 1 || record.orderStatus === 4 ? '' : 'disabled']"
+ @click="WmsTakeMaterialOrderDelete(record)">鍒犻櫎</a></a-menu-item>
+ </a-menu>
+ </a-dropdown>
+
+
+ <!-- <a-popconfirm v-if="hasPerm('WmsTakeMaterialOrder:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => WmsTakeMaterialOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm> -->
+ </span>
+
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text=='2'?'#daa520':(text=='1'?'#cd5c5c':(text=='3'?'#add8e6':'#696969'))">{{ 'order_statusenum' | dictType(text) }}</a-tag>
+ </span>
+
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+
+ <detail-drawer ref="tableDetailDrawer" :visible.sync="infoVisible" :row="infoRow" />
+ </a-card>
+
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsTakeMaterialOrderPage, WmsTakeMaterialOrderDelete ,Distribute} from '@/api/modular/main/WmsTakeMaterialOrderManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+import DetailDrawer from './DetailDrawer.vue'
+
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ DetailDrawer
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'no',
+ width:"100px",
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '浜嬪姟绫诲瀷',
+ align: 'center',
+ dataIndex: 'moveType',
+ width:"100px"
+ },
+
+ {
+ title: '棰嗘枡鍗曠敵璇锋棩鏈�',
+ align: 'center',
+ dataIndex: 'billdate',
+ width:"160px"
+ },
+ {
+ title: '棰嗙敤椤圭洰鍙�',
+ align: 'center',
+ dataIndex: 'wbsElementcode',
+ width:"100px"
+ },
+ {
+ title: '棰嗘枡閮ㄩ棬',
+ align: 'center',
+ dataIndex: 'benefitingDepartcode',
+ width:"100px"
+ },
+ {
+ title: '鍙楃泭閮ㄩ棬',
+ align: 'center',
+ dataIndex: 'costCenterID',
+ width:"100px"
+ },
+ {
+ title: '瀹㈡埛',
+ align: 'center',
+ dataIndex: 'fI_Client_Analysis_H',
+ width:"100px"
+ },
+ {
+ title: '鏄惁鍏徃闂翠氦鏄�',
+ align: 'center',
+ customRender: (value) => (value ? <a-tag color="green">鏄�</a-tag> : <a-tag color="volcano">鍚�</a-tag>),
+ dataIndex: 'isInnerCompany',
+ width:"140px"
+ },
+ {
+ title: '棰嗘枡浜�',
+ align: 'center',
+ dataIndex: 'pickerID',
+ width:"100px"
+ },
+ {
+ title: '浠撳偍涓績',
+ align: 'center',
+ dataIndex: 'warehouseCentername',
+ width:"100px"
+ },
+ {
+ title: '鍏徃',
+ align: 'center',
+ dataIndex: 'companyname',
+ width:"100px"
+ },
+ {
+ title: '鏂藉伐闃�',
+ align: 'center',
+ dataIndex: 'constructionTeamID',
+ width:"100px"
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsTakeMaterialOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.$nextTick(()=>{
+ if(res.data.rows && res.data.rows.length>0){
+ this.onOpenInfo(res.data.rows[0]);
+ }
+ })
+ return res.data
+ })
+ },
+ orderStatusData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ //璇︽儏鍙橀噺
+ infoRow: {},
+ infoVisible: false,
+ containerStatusData: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsTakeMaterialOrder:edit') || this.hasPerm('WmsTakeMaterialOrder:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ fixed: 'right',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const orderStatusOption = this.$options
+ this.orderStatusData = orderStatusOption.filters['dictData']('order_statusenum')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsTakeMaterialOrderDelete(record) {
+ WmsTakeMaterialOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ //璇︽儏
+ onOpenInfo(row) {
+ this.infoVisible = true;
+ this.infoRow = row;
+ this.$refs.tableDetailDrawer.getList(row);
+ },
+ onDistribute(obj){
+ if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戜换鍔$殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ // [obj.id]
+ this.dealDistribute(obj.id,(f)=>{
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ dealDistribute(ids,callback){
+ this.$loading.show()
+ Distribute(ids).then(()=>{
+ this.$loading.hide()
+ this.$refs.table.refresh()
+ callback && callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback && callback(false)
+ })
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue
new file mode 100644
index 0000000..96ccdcf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/DetailDrawer.vue
@@ -0,0 +1,120 @@
+<template>
+ <a-drawer
+ title="浠诲姟璇︽儏"
+ wrapClassName="weiben-private-drawer"
+ width="70%"
+ :closable="false"
+ :maskClosable="true"
+ :visible="visible"
+ :after-visible-change="afterVisibleChange"
+ @close="onClose"
+ >
+ <a-spin :spinning="loading">
+ <div class="wms-task-management-detail-div">
+ <div class="drawer-content">
+ <a-table :columns="columns" :data-source="list" row-key="id" :pagination="false">
+ <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+ </a-table>
+ </div>
+ </div>
+ </a-spin>
+ </a-drawer>
+</template>
+
+<script>
+import { WmsTaskDetail } from '@/api/modular/main/WmsTaskManage'
+export default {
+ name:'wmsTaskManagementDetailDrawer',
+ emits:['update:visible'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ }
+ },
+ data(){
+ return {
+ loading:false,
+ list:[],
+ columns:[
+ {
+ dataIndex:'index',
+ title:'搴忓彿',
+ fixed:'left',
+ width:'60',
+ scopedSlots: { customRender: 'index' }
+ },
+ {
+ dataIndex:'materialNo',
+ title:'鐗╂枡缂栧彿'
+ },
+ {
+ dataIndex:'materialName',
+ title:'鐗╂枡鍚嶇О'
+ },
+ {
+ dataIndex:'materialSpec',
+ title:'灏哄'
+ },
+ {
+ dataIndex:'shipNo',
+ title:'鑸瑰彿'
+ },
+ {
+ dataIndex:'drawingNo',
+ title:'鍥惧彿'
+ }
+ ]
+ }
+ },
+ methods:{
+ onClose(){
+ this.close()
+ },
+ close(){
+ this.$emit('update:visible',false)
+ },
+ afterVisibleChange(visible){
+ if (visible) {
+ this.initShow()
+ } else {
+ this.afterClsoe()
+ }
+ },
+ initShow(){
+ this.loading = true;
+ this.getList(()=>{
+ this.loading = false;
+ })
+ },
+ getList(callback){
+ let params = {OrderNo:this.row.orderNo}
+ WmsTaskDetail(params).then(d=>{
+ this.list = d.data || []
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ afterClsoe(){
+ this.list = []
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-task-management-detail-div{
+ height:100%;
+ overflow: auto;
+ .drawer-content{
+ padding: 16px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue
new file mode 100644
index 0000000..f0b4ba4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/PriorityModal.vue
@@ -0,0 +1,108 @@
+<template>
+ <a-modal title="浠诲姟浼樺厛绾ц皟鏁�" v-model="innerVisible" @ok="onConfirm" :afterClose="afterClose">
+ <a-form :form="form" :label-col="{ span: 4 }" :wrapper-col="{ span: 20 }">
+ <a-form-item label="浼樺厛绾�">
+ <a-select v-decorator="rule" placeholder="璇烽�夋嫨..." >
+ <a-select-option :key="1" :value="1">1绾�</a-select-option>
+ <a-select-option :key="2" :value="2">2绾�</a-select-option>
+ <a-select-option :key="3" :value="3">3绾�</a-select-option>
+ <a-select-option :key="4" :value="4">4绾�</a-select-option>
+ <a-select-option :key="5" :value="5">5绾�</a-select-option>
+ <a-select-option :key="6" :value="6">6绾�</a-select-option>
+ <a-select-option :key="7" :value="7">7绾�</a-select-option>
+ <a-select-option :key="8" :value="8">8绾�</a-select-option>
+ <a-select-option :key="9" :value="9">9绾�</a-select-option>
+ <a-select-option :key="10" :value="10">10绾�</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-modal>
+</template>
+
+<script>
+import { WmsTaskUpdateLevel } from '@/api/modular/main/WmsTaskManage'
+export default {
+ name:'wmsTaskPriorityModal',
+ emits:['update:visible','confirm'],
+ props:{
+ row:{
+ type:Object,
+ default:function(){
+ return {}
+ }
+ },
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ title:'',
+ labelText:'',
+ innerVisible:false,
+ form: this.$form.createForm(this, { name: 'choose-site-form' }),
+ sites:[],
+ rule:['Tasklevel',{rules:[
+ { required: true, message: '璇风‘璁や紭鍏堢骇' }
+ ]}]
+ }
+ },
+ watch:{
+ visible(newVal,oldVal){
+ this.changeInnerVisible()
+ },
+ innerVisible(newVal,oldVal){
+ this.changeVisible()
+ }
+ },
+ methods:{
+ changeInnerVisible(){
+ if (this.visible!==this.innerVisible){
+ this.innerVisible = this.visible
+ if (this.innerVisible) {
+ this.$nextTick(()=>{
+ this.opened()
+ })
+ }
+ }
+ },
+ changeVisible(){
+ if (this.innerVisible!==this.visible){
+ this.$emit('update:visible',this.innerVisible)
+ }
+ },
+ opened(){
+ //this.getSites()
+ },
+ onConfirm(){
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ let params = {...values}
+ params.Id = this.row.id;
+ WmsTaskUpdateLevel(params).then(()=>{
+ this.innerVisible = false;
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$emit('confirm')
+ }).catch(()=>[
+
+ ])
+ }
+ });
+ },
+ afterClose(){
+ try{
+ this.form.resetFields()
+ }catch(e){
+
+ }
+ }
+ },
+ created(){
+ this.changeInnerVisible()
+ }
+}
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue
new file mode 100644
index 0000000..62f2957
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsTask/index.vue
@@ -0,0 +1,316 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsTask:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鍙�">
+ <a-input v-model="queryParam.taskno" allow-clear placeholder="璇疯緭鍏ヤ换鍔″彿" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鏂瑰紡">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskmodel" placeholder="璇烽�夋嫨浠诲姟鏂瑰紡">
+ <a-select-option v-for="(item, index) in taskmodelData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><template v-if="advanced"><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.tasktype" placeholder="璇烽�夋嫨浠诲姟绫诲瀷">
+ <a-select-option v-for="(item, index) in tasktypeData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.taskstatus" placeholder="璇烽�夋嫨浠诲姟鐘舵��">
+ <a-select-option v-for="(item, index) in taskstatusData" :key="index" :value="item.code">{{ item.name
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栧彿">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="璧峰搴撲綅">
+ <a-input v-model="queryParam.sourceplace" allow-clear placeholder="璇疯緭鍏ヨ捣濮嬪簱浣�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣搴撲綅">
+ <a-input v-model="queryParam.toplace" allow-clear placeholder="璇疯緭鍏ョ洰鏍囧簱浣�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撳尯鍚嶇О">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.areaName" placeholder="璇烽�夋嫨搴撳尯鍚嶇О">
+ <a-select-option v-for="(item, index) in areaNameData" :key="index" :value="item.areaName">{{
+ item.areaName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id">
+ <span slot="taskmodelscopedSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#2db7f5' : '#87d068'">{{ 'task_model' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="tasktypescopedSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#2db7f5' : '#87d068'">{{ 'task_type' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="taskstatusscopedSlots" slot-scope="text">
+ <a-tag :color="text === 1 ? '#2db7f5' : (text === 2 ? '#108ee9' : '#87d068')">{{ 'task_status' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="aisledSlots" slot-scope="text,record">
+ {{ record.aisle | enumsName(aisleList,'code','name') }}
+ </template>
+ <span slot="eqpScopedSlots" slot-scope="text">
+ <a-tag :color="text === 2 ? '#0000FF' : (
+ text === 3 ? '#00FFFF' : (
+ text === 5 ? '#FFD700' : (
+ text === 6 ? '#87d068' : '#808080'
+ )
+ )
+ )">
+ {{ 'zz_task_dodevice_status' | dictType(text) }}
+ </a-tag>
+ </span>
+ <span slot="taskdodevice_status" slot-scope="text">
+ {{ 'taskdodevice_statusenum' | dictType(text) }}
+ </span>
+ <template slot="agvStatusSlots" slot-scope="text,record">
+ {{ record.agvTaskDodeviceStatusEnum | enumsName(agvStatusEnums,'code','name') }}
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onOpenInfo(record)">{{ text }}</a>
+ </template>
+ <div slot="action" slot-scope="text, record">
+ <a @click="onFinish(record)">瀹屾垚</a>
+ <!-- <a-divider type="vertical" />
+ <a @click="onOpenPriorityModal(record)">浼樺厛绾�</a> -->
+ <a-divider type="vertical" />
+ <a @click="onCancel(record)">鍙栨秷</a>
+ </div>
+ </s-table>
+ </a-card>
+
+ <detail-drawer :visible.sync="infoVisible" :row="infoRow" />
+ <priority-modal :visible.sync="priorityVisible" :row="priorityRow" @confirm="onCallbackPriority" />
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsTaskPage, WmsTaskCancel, WmsTaskFinish } from '@/api/modular/main/WmsTaskManage'
+import { GetZuzhuangAreas } from '@/api/modular/main/WmsAreaManage'
+import DetailDrawer from './DetailDrawer.vue'
+import PriorityModal from './PriorityModal.vue'
+export default {
+ components: {
+ STable,
+ DetailDrawer,
+ PriorityModal
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ aisleList: [],
+ agvStatusEnums: [],
+ columns: [
+ {
+ title: '浠诲姟鍙�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'taskNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '浠诲姟鏂瑰紡',
+ align: 'center',
+ dataIndex: 'taskModel',
+ scopedSlots: { customRender: 'taskmodelscopedSlots' }
+ },
+ {
+ title: '浠诲姟绫诲瀷',
+ align: 'center',
+ dataIndex: 'taskType',
+ scopedSlots: { customRender: 'tasktypescopedSlots' }
+ },
+ {
+ title: '浠诲姟鐘舵��',
+ align: 'center',
+ dataIndex: 'taskStatus',
+ scopedSlots: { customRender: 'taskstatusscopedSlots' }
+ },
+ {
+ title: '鎵樼洏缂栧彿',
+ align: 'center',
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '璧峰搴撲綅',
+ align: 'center',
+ dataIndex: 'sourcePlace'
+ },
+ {
+ title: '鐩爣搴撲綅',
+ align: 'center',
+ dataIndex: 'toPlace'
+ },
+ {
+ title: '搴撳尯鍚嶇О',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '鍏ュ簱鏉ユ簮',
+ align: 'center',
+ dataIndex: 'description'
+ },
+ {
+ title: '璁惧鐘舵��',
+ align: 'center',
+ dataIndex: 'taskDodeviceStatus',
+ scopedSlots: { customRender: 'taskdodevice_status' }
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime',
+ width: 170
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ dataIndex: 'updatedTime',
+ width: 170
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsTaskPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ taskmodelData: [],
+ tasktypeData: [],
+ taskstatusData: [],
+ areaNameData: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ infoVisible: false,
+ infoRow: {},
+ priorityVisible: false,
+ priorityRow: {}
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsTask:edit') || this.hasPerm('WmsTask:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '120px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const taskmodelOption = this.$options
+ this.taskmodelData = taskmodelOption.filters['dictData']('task_model')
+ const tasktypeOption = this.$options
+ this.tasktypeData = tasktypeOption.filters['dictData']('task_type')
+ const taskstatusOption = this.$options
+ this.taskstatusData = taskstatusOption.filters['dictData']('task_status')
+ this.aisleList = this.$options.filters['dictData']('les_aisle')
+ this.agvStatusEnums = this.$options.filters['dictData']('agv_task_dodevice_status')
+ },
+ mounted() {
+ this.getAreas()
+ },
+ methods: {
+ getAreas() {
+ GetZuzhuangAreas().then((d) => {
+ this.areaNameData = d.data || []
+ }).catch(() => {
+
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ onOpenInfo(row) {
+ this.infoRow = row;
+ this.infoVisible = true
+ },
+ onOpenPriorityModal(row) {
+ this.priorityRow = row;
+ this.priorityVisible = true
+ },
+ onCallbackPriority() {
+ this.$refs.table.refresh()
+ },
+ onFinish(row) {
+ this.$confirm({
+ title: '鎿嶄綔纭',
+ content: '纭畾瑕佽繘琛屽己鍒跺畬鎴愭搷浣滃悧锛�',
+ onOk: () => {
+ this.dealFinish(row.id)
+ }
+ });
+ },
+ dealFinish(id) {
+ WmsTaskFinish(id).then(() => {
+ this.$message.success('鎿嶄綔鎴愬姛');
+ this.$refs.table.refresh()
+ }).catch(() => { })
+ },
+ onCancel(row) {
+ this.$confirm({
+ title: '鎿嶄綔纭',
+ content: '纭畾瑕佽繘琛屽彇娑堟搷浣滃悧锛�',
+ onOk: () => {
+ this.dealCalcel(row.id)
+ }
+ });
+ },
+ dealCalcel(id) {
+ WmsTaskCancel(id).then(() => {
+ this.$message.success('鎿嶄綔鎴愬姛');
+ this.$refs.table.refresh()
+ }).catch(() => { })
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue
new file mode 100644
index 0000000..e938d01
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/addForm.vue
@@ -0,0 +1,104 @@
+锘�<template>
+ <a-modal
+ title="鏂板搴撳彛琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" v-decorator="['type']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ墍灞炶溅闂�" v-decorator="['lesWorkShopType']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炲贩閬�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ墍灞炲贩閬�" style="width: 100%" v-decorator="['affiliatedRoadway']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+ </a-form-item>
+ <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ姸鎬�" v-decorator="['status']" />
+ </a-form-item>
+ <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsWarehouseEntranceAdd
+ } from '@/api/modular/main/WmsWarehouseEntranceManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ WmsWarehouseEntranceAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue
new file mode 100644
index 0000000..ae4ab82
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/editForm.vue
@@ -0,0 +1,125 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫搴撳彛琛�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ悕绉�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ紪鐮�" v-decorator="['code']" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" v-decorator="['type']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炶溅闂�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ墍灞炶溅闂�" v-decorator="['lesWorkShopType']" />
+ </a-form-item>
+ <a-form-item label="鎵�灞炲贩閬�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ユ墍灞炲贩閬�" style="width: 100%" v-decorator="['affiliatedRoadway']" />
+ </a-form-item>
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']" />
+ </a-form-item>
+ <a-form-item label="鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ姸鎬�" v-decorator="['status']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ <a-form-item label="绛炬牳鐘舵��" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鏍哥姸鎬�" v-decorator="['issueState']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ WmsWarehouseEntranceEdit
+ } from '@/api/modular/main/WmsWarehouseEntranceManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ type: record.type,
+ lesWorkShopType: record.lesWorkShopType,
+ affiliatedRoadway: record.affiliatedRoadway,
+ remark: record.remark,
+ status: record.status,
+ issueState: record.issueState
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ WmsWarehouseEntranceEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue
new file mode 100644
index 0000000..dde3faf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/excelForm.vue
@@ -0,0 +1,180 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="wmsWarehouseEntranceDownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+import { wmsWarehouseEntranceFromExcel, wmsWarehouseEntranceDownloadExcelTemplate} from '@/api/modular/main/WmsWarehouseEntranceManage'
+import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("wmsWarehouseEntranceDownloadExcelTemplate")
+ window.downloadFile = this.wmsWarehouseEntranceDownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "WmsWarehouseEntrance"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ wmsWarehouseEntranceFromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ wmsWarehouseEntranceDownloadExcelTemplate() {
+ wmsWarehouseEntranceDownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue
new file mode 100644
index 0000000..252085c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/WmsWarehouseEntrance/index.vue
@@ -0,0 +1,223 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsWarehouseEntrance:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ョ紪鐮�" />
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�">
+ <a-input v-model="queryParam.type" allow-clear placeholder="璇疯緭鍏ョ被鍨�-1.鍏ュ簱鍙2.鍑哄簱鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炶溅闂�">
+ <a-input v-model="queryParam.lesWorkShopType" allow-clear placeholder="璇疯緭鍏ユ墍灞炶溅闂�" />
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炲贩閬�">
+ <a-input-number v-model="queryParam.affiliatedRoadway" style="width: 100%" allow-clear
+ placeholder="璇疯緭鍏ユ墍灞炲贩閬�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="澶囨敞">
+ <a-input v-model="queryParam.remark" allow-clear placeholder="璇疯緭鍏ュ娉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-input v-model="queryParam.status" allow-clear placeholder="璇疯緭鍏ョ姸鎬�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绛炬牳鐘舵��">
+ <a-input v-model="queryParam.issueState" allow-clear placeholder="璇疯緭鍏ョ鏍哥姸鎬�" />
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table ref="table" :columns="columns" :data="loadData" :alert="true" :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('WmsWarehouseEntrance:add')">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload"
+ @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('wmsWarehouseEntrance:exportExcel')" icon="download"
+ @click="wmsWarehouseEntranceToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('WmsWarehouseEntrance:add')" icon="plus"
+ @click="$refs.addForm.add()">鏂板搴撳彛琛�</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('WmsWarehouseEntrance:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical"
+ v-if="hasPerm('WmsWarehouseEntrance:edit') & hasPerm('WmsWarehouseEntrance:delete')" />
+ <a-popconfirm v-if="hasPerm('WmsWarehouseEntrance:delete')" placement="topRight" title="纭鍒犻櫎锛�"
+ @confirm="() => WmsWarehouseEntranceDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable } from '@/components'
+import { WmsWarehouseEntrancePage, WmsWarehouseEntranceDelete } from '@/api/modular/main/WmsWarehouseEntranceManage'
+import addForm from './addForm.vue'
+import editForm from './editForm.vue'
+export default {
+ components: {
+ STable,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍚嶇О',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '缂栫爜',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'code'
+ },
+ {
+ title: '绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'type'
+ },
+ {
+ title: '鎵�灞炶溅闂�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'lesWorkShopType'
+ },
+ {
+ title: '鎵�灞炲贩閬�',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'affiliatedRoadway'
+ },
+ {
+ title: '澶囨敞',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'remark'
+ },
+ {
+ title: '鐘舵��',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'status'
+ },
+ {
+ title: '绛炬牳鐘舵��',
+ align: 'center',
+ sorter: true,
+ dataIndex: 'issueState'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return WmsWarehouseEntrancePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created() {
+ if (this.hasPerm('WmsWarehouseEntrance:edit') || this.hasPerm('WmsWarehouseEntrance:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if (columnStr) {
+ this.columns = JSON.parse(columnStr)
+ }
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate() {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ WmsWarehouseEntranceDelete(record) {
+ WmsWarehouseEntranceDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue
new file mode 100644
index 0000000..a49f667
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/addForm.vue
@@ -0,0 +1,111 @@
+锘�<template>
+ <a-modal
+ title="鏂板缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ ZZProductFinishedOrderAdd
+ } from '@/api/modular/main/ZZProductFinishedOrderManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ ZZProductFinishedOrderAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue
new file mode 100644
index 0000000..6124e02
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/editForm.vue
@@ -0,0 +1,132 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫缁勮杞﹂棿鎴愬搧瀹屽伐鍏ュ簱"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="鍗曟嵁缂栧彿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ崟鎹紪鍙�" v-decorator="['orderNo']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁澶х被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁澶х被" v-decorator="['orderLargeCategory', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁澶х被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderLargeCategoryData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍗曟嵁灏忕被" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鍗曟嵁灏忕被" v-decorator="['orderSubclass', {rules: [{ required: true, message: '璇烽�夋嫨鍗曟嵁灏忕被锛�' }]}]">
+ <a-select-option v-for="(item,index) in orderSubclassData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鐗╂枡绉嶇被" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ墿鏂欑绫�" v-decorator="['materialType']" />
+ </a-form-item>
+ <a-form-item label="鍗曟嵁鎬绘暟閲�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ崟鎹�绘暟閲�" style="width: 100%" v-decorator="['orderQuantity']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浠撳簱鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦粨搴撳悕绉�" v-decorator="['areaName']" />
+ </a-form-item>
+ <a-form-item label="璧峰浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ捣濮嬩綅缃�" v-decorator="['startingPosition']" />
+ </a-form-item>
+ <a-form-item label="鐩爣浣嶇疆" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ洰鏍囦綅缃�" v-decorator="['targetPosition']" />
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ ZZProductFinishedOrderEdit
+ } from '@/api/modular/main/ZZProductFinishedOrderManage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ orderLargeCategoryData: [],
+ orderSubclassData: [],
+ orderStatusEnumData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ orderNo: record.orderNo,
+ orderLargeCategory: record.orderLargeCategory,
+ orderSubclass: record.orderSubclass,
+ materialType: record.materialType,
+ orderQuantity: record.orderQuantity,
+ areaName: record.areaName,
+ startingPosition: record.startingPosition,
+ targetPosition: record.targetPosition
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ ZZProductFinishedOrderEdit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue
new file mode 100644
index 0000000..7af3b8f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/index.vue
@@ -0,0 +1,271 @@
+锘�<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁缂栧彿">
+ <a-input v-model="queryParam.orderNo" allow-clear placeholder="璇疯緭鍏ュ崟鎹紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderStatusEnum" placeholder="璇烽�夋嫨鍗曟嵁鐘舵��">
+ <a-select-option v-for="(item,index) in orderStatusEnumData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁澶х被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderLargeCategory" placeholder="璇烽�夋嫨..." @change="onLargeCategorySelect">
+ <a-select-option v-for="(item,index) in selectOptions.largeCategories" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁灏忕被">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.orderSubclass" placeholder="璇烽�夋嫨...">
+ <a-select-option v-for="(item,index) in selectOptions.subclasses" :key="index" :value="item.orderTypeId">{{ item.orderTypeName }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> -->
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐩爣浠撳簱">
+ <a-input v-model="queryParam.areaName" allow-clear placeholder="璇疯緭鍏ョ洰鏍囦粨搴�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" >
+ <a-button type="primary" icon="plus" @click="$refs.addForm.add()">鏂板缁勮鍏ュ簱</a-button>
+ </template>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="orderStatusEnumscopedSlots" slot-scope="text">
+ <a-tag :color="text===1?'gray':(text===2?'#0000ff':(text===3?'#7fff00':'#deb887'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" />
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => ZZProductFinishedOrderDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" @callback="infoCallback" />
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import {
+ ZZProductFinishedOrderPage,
+ ZZProductFinishedOrderDelete,
+ ZZProductFinishedOrderLargeCategories,
+ ZZProductFinishedOrderSubclass
+ } from '@/api/modular/main/ZZProductFinishedOrderManage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ editForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ selectOptions:{
+ largeCategories:[],
+ subclasses:[]
+ },
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ // {
+ // title: '鍗曟嵁澶х被',
+ // align: 'center',
+ // dataIndex: 'orderLargeCategory',
+ // //scopedSlots: { customRender: 'orderLargeCategoryscopedSlots' }
+ // },
+ // {
+ // title: '鍗曟嵁灏忕被',
+ // align: 'center',
+ // dataIndex: 'orderSubclass',
+ // //scopedSlots: { customRender: 'orderSubclassscopedSlots' }
+ // },
+ {
+ title: '鐗╂枡绉嶇被',
+ align: 'center',
+ dataIndex: 'materialType'
+ },
+ {
+ title: '鍗曟嵁鏁伴噺',
+ align: 'center',
+ dataIndex: 'orderQuantity'
+ },
+ {
+ title: '鐩爣浠撳簱',
+ align: 'center',
+ dataIndex: 'areaName'
+ },
+ {
+ title: '璧峰浣嶇疆',
+ align: 'center',
+ dataIndex: 'startingPosition'
+ },
+ {
+ title: '鐩爣浣嶇疆',
+ align: 'center',
+ dataIndex: 'targetPosition'
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatusEnum',
+ scopedSlots: { customRender: 'orderStatusEnumscopedSlots' }
+ },
+ {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return ZZProductFinishedOrderPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ orderStatusEnumData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const orderStatusEnumOption = this.$options
+ this.orderStatusEnumData = orderStatusEnumOption.filters['dictData']('order_status')
+ },
+ mounted(){
+ this.getLargeCategoriesOptions()
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ getLargeCategoriesOptions(){
+ ZZProductFinishedOrderLargeCategories().then(d=>{
+ this.selectOptions.largeCategories = d.data || []
+ }).catch(err=>{
+ console.log(err)
+ })
+ },
+ getSubclassOptions(id){
+ ZZProductFinishedOrderSubclass(id).then(d=>{
+ this.selectOptions.subclasses = d.data || []
+ this.queryParam.subclasses = undefined
+ }).catch(err=>{
+ this.clearSubclass()
+ console.log(err)
+ })
+ },
+ onLargeCategorySelect(val){
+ if (val) {
+ this.getSubclassOptions(val)
+ } else {
+ this.clearSubclass()
+ }
+ },
+ clearSubclass(){
+ this.selectOptions.subclasses = []
+ this.queryParam.subclasses = undefined
+ },
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ ZZProductFinishedOrderDelete (record) {
+ ZZProductFinishedOrderDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (this.infoId && record.id) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ infoCallback(){
+ this.$refs.table.refresh()
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue
new file mode 100644
index 0000000..7fc0d43
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/ZZProductFinishedOrder/infoBlock.vue
@@ -0,0 +1,115 @@
+<template>
+ <div class="zz-product-finished-order-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <template slot="statusSlots" slot-scope="text,record">
+ <a-tag :color="text==='瀹屾垚'?'#008000':(
+ text==='鎵ц涓�'?'#1e90ff':(
+ text==='鍙栨秷'?'#556b2f':(
+ text==='鏆傚仠'?'#8b0000':(
+ text==='鎾ゅ洖'?'#ff00ff':'gray'
+ )
+ )
+ )
+ )">{{text}}</a-tag>
+ </template>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { ZZProductFinishedOrderDetailPage } from '@/api/modular/main/ZZProductFinishedOrderManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'zzProductFinishedOrderInfoBlock',
+ emits:["callback"],
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡缂栧彿', align:'center', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', align:'center', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵樼洏鍙�', align:'center', dataIndex: 'containerCode', key: 'containerCode' },
+ { title: '鐗╂枡瑙勬牸', align:'center', dataIndex: 'materialSpec', key: 'materialSpec' },
+ { title: '鐗╂枡鎵规', align:'center', dataIndex: 'materialBath', key: 'materialBath' },
+ { title: '鏁伴噺', align:'center', dataIndex: 'orderDetailQuantity', key: 'orderDetailQuantity' }
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.Id = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return ZZProductFinishedOrderDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ },
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.zz-product-finished-order-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue
new file mode 100644
index 0000000..65340ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/addForm.vue
@@ -0,0 +1,122 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓淇℃伅琛↙iuying"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudent2Add
+ } from '@/api/modular/main/liuying/TestStudent2Manage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ brithDateDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ values.brithDate = this.brithDateDateString
+ TestStudent2Add(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ onChangebrithDate(date, dateString) {
+ this.brithDateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue
new file mode 100644
index 0000000..18abde7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/editForm.vue
@@ -0,0 +1,148 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓淇℃伅琛↙iuying"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" @change="onChangebrithDate"/>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudent2Edit
+ } from '@/api/modular/main/liuying/TestStudent2Manage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ brithDateDateString: '',
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ hasMoney: record.hasMoney,
+ startName: record.startName,
+ gender: record.gender,
+ createdTime: record.createdTime,
+ updatedTime: record.updatedTime,
+ createdUserName: record.createdUserName,
+ updatedUserName: record.updatedUserName
+ }
+ )
+ })
+ this.form.getFieldDecorator('brithDate', { initialValue: moment(record.brithDate, 'YYYY-MM-DD') })
+ this.brithDateDateString = moment(record.brithDate).format('YYYY-MM-DD')
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ values.brithDate = this.brithDateDateString
+ this.record.brithDate = this.brithDateDateString
+ TestStudent2Edit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ onChangebrithDate(date, dateString) {
+ this.brithDateDateString = dateString
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue
new file mode 100644
index 0000000..2b403dd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudent2DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudent2FromExcel, TestStudent2DownloadExcelTemplate} from '@/api/modular/main/liuying/TestStudent2Manage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudent2DownloadExcelTemplate")
+ window.downloadFile = this.testStudent2DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent2"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ TestStudent2FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudent2DownloadExcelTemplate() {
+ TestStudent2DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue
new file mode 100644
index 0000000..3590075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/liuying/TestStudent2/index.vue
@@ -0,0 +1,380 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent2:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="闆惰姳閽�">
+ <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-model="queryParam.brithDate" @change="onChangebrithDate"/>
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-model="queryParam.createdTime" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-model="queryParam.updatedTime" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent2:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('TestStudent2:exportExcel')" icon="download" @click="TestStudent2ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('TestStudent2:add')" icon="plus" @click="$refs.addForm.add()">鏂板瀛︾敓淇℃伅琛↙iuying</a-button>
+ </div>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('TestStudent2:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('TestStudent2:edit') & hasPerm('TestStudent2:delete')"/>
+ <a-popconfirm v-if="hasPerm('TestStudent2:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => TestStudent2Delete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudent2Page, TestStudent2Delete, TestStudent2ToExcel } from '@/api/modular/main/liuying/TestStudent2Manage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '闆惰姳閽�',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'hasMoney'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ customRender: (value) => (value ? value.split(" ")[0] : value),
+ customCutout:true,
+ dataIndex: 'brithDate'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ width:'120px',
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudent2Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('TestStudent2:edit') || this.hasPerm('TestStudent2:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudent2Delete (record) {
+ TestStudent2Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ TestStudent2ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudent2Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arr1 = Object.keys(item);
+ arr1.forEach(key => {
+ var str1 = key + 'Data';
+ //鏋氫妇杞��
+ if (this[str1] && this[str1].length > 0) {
+ let s1 = this[str1].filter(v => String(v.code) == String(item[key]));
+ if (s1.length > 0) {
+ item[key] = s1[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue
new file mode 100644
index 0000000..e6fe789
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/editForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+ <a-modal
+ :title="title"
+ width="600px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="bind-entrance2-edit-modal-content">
+ <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
+
+ <a-form-item label="鎵规">
+ <a-input placeholder="璇疯緭鍏ユ壒娆�" allow-clear v-decorator="['materialbatch',{rules:[{required:true,message:'鎵规涓嶅彲涓虹┖锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="渚涘簲鍟�">
+ <a-input placeholder="璇疯緭鍏ヤ緵搴斿晢" allow-clear v-decorator="['b',{rules:[]}]" />
+ </a-form-item>
+
+ <a-row :gutter="16">
+ <a-col :span="8">
+ <a-form-item label="闀�">
+ <a-input-number placeholder="璇疯緭鍏ラ暱" allow-clear style="width: 100%" v-decorator="['materiallength',{rules:[{required:true,message:'闀夸笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="瀹�">
+ <a-input-number placeholder="璇疯緭鍏ュ" allow-clear style="width: 100%" v-decorator="['materialwidth',{rules:[{required:true,message:'瀹戒笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ <a-col :span="8">
+ <a-form-item label="楂�">
+ <a-input-number placeholder="璇疯緭鍏ラ珮" allow-clear style="width: 100%" v-decorator="['materialhigh',{rules:[{required:true,message:'楂樹笉鍙负绌猴紒'},{ validator: numberValidate }]}]" :min="0" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-form-item label="鏁伴噺">
+ <a-input-number placeholder="璇疯緭鍏ユ暟閲�" allow-clear style="width: 100%" v-decorator="['bindquantity',{rules:[{required:true,message:'鏁伴噺涓嶅彲涓虹┖锛�'},{ validator: interalNumberValidate }]}]" :min="0" />
+ </a-form-item>
+
+ </a-form>
+ </div>
+ </a-spin>
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ const defaultForm = {
+ materialbatch:'',
+ b:'',
+ bindquantity:null
+ }
+ export default {
+ emits:['callback'],
+ data () {
+ return {
+ labelCol: {
+ span:24
+ },
+ wrapperCol: {
+ span:24
+ },
+ visible: false,
+ confirmLoading: false,
+ title:'鏂板鑳跺悎鏉�',
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ init () {
+ let _initForm = {...defaultForm}
+ this.visible = true
+ this.$nextTick(()=>{
+ this.form.setFieldsValue(_initForm)
+ })
+ },
+ interalNumberValidate(rule, value, callback){
+ if (value<=0){
+ callback('蹇呴』澶т簬0');
+ } else if (Number(value)!==parseInt(value)) {
+ callback('鍙兘鏄暣鏁�');
+ } else {
+ callback();
+ }
+ },
+ numberValidate(rule, value, callback){
+ if (value<=0){
+ callback('蹇呴』澶т簬0');
+ } else {
+ callback();
+ }
+ },
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ this.handleCancel()
+ this.$emit('callback',values)
+ }
+ })
+ },
+ handleCancel () {
+ this.visible = false
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.bind-entrance2-edit-modal-content{
+ padding: 20px 16px 0 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue
new file mode 100644
index 0000000..93c891a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/index.vue
@@ -0,0 +1,288 @@
+<template>
+ <a-spin :spinning="loading">
+ <div class="wms-in-bound2-page">
+ <div class="in-bound-page-block block-one">
+ <search-box
+ label="鎵樼洏鍙�"
+ v-model="prevFrom.containter"
+ :msg-type="msgType.containter"
+ :msg="msg.containter"
+ :label-width="labelWidth"
+ placeholder="璇疯緭鍏�..."
+ @search="onContainterSearch"
+ @reset="onContainterReset"
+ />
+ </div>
+ <div class="in-bound-page-block block-two">
+ <div class="table-top-box">
+ <a-button type="primary" @click="onAddMaterial">娣诲姞鐗╂枡</a-button>
+ </div>
+ <div class="table-box">
+ <a-table :columns="columns" :data-source="list" :row-key="tableKey" :pagination="false">
+ <template slot="index" slot-scope="text, record, index">{{index+1}}</template>
+ <template slot="specSlots" slot-scope="text, record">
+ {{record.materiallength}}*{{record.materialwidth}}*{{record.materialhigh}}
+ </template>
+ <template slot="action" slot-scope="text, record, index">
+ <a-button type="danger" @click.stop="onDel(record,index)">鍒� 闄�</a-button>
+ </template>
+ </a-table>
+ </div>
+ </div>
+ <div class="bottom-btns-view">
+ <a-button type="primary" :disabled="actionBtnDisabled" @click="onBind">缁勭洏</a-button>
+ <a-button type="primary" :disabled="actionBtnDisabled" @click="onManualIntrance">鎵嬪姩鍏ュ簱</a-button>
+ <a-button @click="onReset">閲� 缃�</a-button>
+ </div>
+
+ <edit-form ref="form" @callback="handleOk" />
+ </div>
+ </a-spin>
+</template>
+<script>
+import SearchBox from './searchBox.vue'
+import InputLayout from './inputLayout.vue'
+import editForm from './editForm.vue'
+import {
+ BindEntranceGetContainer,
+ BindAction,
+ BindEntranceManualWare
+} from '@/api/modular/main/BindEntranceManage2'
+export default {
+ name:'wmsBind2EntrancePage',
+ components:{SearchBox,InputLayout,editForm},
+ data(){
+ return {
+ loading:false,
+ labelWidth:'75px',
+ containter:null,
+ msg:{
+ containter:'',
+ },
+ msgType:{
+ containter:''
+ },
+ prevFrom:{
+ containter:''
+ },
+ tableKey:'tableKey',
+ list:[],
+ columns:[
+ {
+ dataIndex:'index',
+ title:'搴忓彿',
+ fixed:'left',
+ width:'60',
+ scopedSlots: { customRender: 'index' }
+ },
+ {
+ dataIndex:'materialbatch',
+ title:'鎵规'
+ },
+ {
+ dataIndex:'b',
+ title:'渚涘簲鍟�'
+ },
+ {
+ dataIndex:'materialspec',
+ title:'灏哄',
+ scopedSlots: { customRender: 'specSlots' }
+ },
+ {
+ dataIndex:'bindquantity',
+ title:'鏁伴噺'
+ },
+ {
+ dataIndex:'action',
+ title:'鎿嶄綔',
+ fixed:'right',
+ width:'70',
+ scopedSlots: { customRender: 'action' }
+ }
+ ]
+ }
+ },
+ computed:{
+ actionBtnDisabled(){
+ let res = true;
+ if (this.containter && (this.containter.containerStatus===1||this.containter.containerStatus===2) && this.list.length>0) {
+ res = false;
+ }
+ return res;
+ }
+ },
+ methods:{
+ onContainterReset(){
+ this.resetContainter()
+ },
+ onContainterSearch(){
+ if (!this.prevFrom.containter) {
+ this.msgType.containter = 'error'
+ this.msg.containter = '璇疯緭鍏ユ墭鐩樺彿锛�';
+ return false;
+ }
+
+ this.msg.containter = ''
+ this.loading = true;
+ this.getContainterInfo((f)=>{
+ this.loading = false;
+ })
+ },
+ resetContainter(){
+ this.clearContainter()
+ this.clearBackContainer()
+ },
+ clearContainter(){
+ this.prevFrom.container = ''
+ this.msg.container = ''
+ },
+ clearBackContainer(){
+ this.containter = null
+ },
+ getContainterInfo(callback){
+ let params = {Containercode:this.prevFrom.containter}
+ const __setErrMessage = function(__msg) {
+ if (!__msg) {
+ __msg = '缃戠粶閿欒锛岃绋嶅悗鍐嶅皾璇曪紒'
+ }
+ this.msgType.containter = 'error'
+ this.msg.containter = __msg;
+ }.bind(this)
+ BindEntranceGetContainer(params).then((d)=>{
+ if (d.data) {
+ if (d.data.wmsContainer) {
+ this.containter = d.data.wmsContainer
+ let _arr = (d.data.wmsMaterials || []).map((mapObj,mapIndex)=>{
+ let _temp = 'ply-'+new Date().getTime()
+ mapObj[this.tableKey] = _temp+'_'+mapIndex
+ return mapObj
+ })
+ if (_arr.length>0) {
+ this.list = _arr
+ }
+ this.msgType.containter = 'info'
+ this.msg.containter = `灏哄锛�${this.containter.specLength}*${this.containter.specWidth}`
+ callback && callback(true)
+ } else {
+ this.clearBackContainer()
+ __setErrMessage(d.message)
+ callback && callback(false)
+ }
+ } else {
+ this.clearBackContainer()
+ __setErrMessage(d.message)
+ callback && callback(false)
+ }
+ }).catch((err)=>{
+ this.clearBackContainer()
+ __setErrMessage()
+ callback && callback(false)
+ })
+ },
+ onAddMaterial(){
+ this.$refs.form.init()
+ },
+ handleOk(obj){
+ this.addToList(obj)
+ },
+ addToList(obj){
+ obj[this.tableKey] = 'ply-'+new Date().getTime()
+ this.list.unshift(obj)
+ },
+ onDel(obj,index){
+ this.list.splice(index,1)
+ },
+ onManualIntrance(){
+ this.loading = true;
+ this.dealManualIntrance((f)=>{
+ this.loading = false;
+ if (f) {
+ this.$message.success('鍏ュ簱鎴愬姛锛�');
+ this.resetContainter()
+ this.list = [];
+ }
+ })
+ },
+ onBind(){
+ this.loading = true;
+ this.dealBind((f)=>{
+ if (f) {
+ this.getContainterInfo((f1)=>{
+ this.loading = false;
+ this.$message.success('缁勭洏鎴愬姛锛�');
+ })
+ } else {
+ this.loading = false;
+ }
+ })
+ },
+ onReset(){
+ this.resetContainter()
+ this.list = [];
+ },
+ dealBind(callback){
+ let params = {
+ containercode:this.containter.containerCode,
+ wmsMaterials:this.list
+ }
+ BindAction(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ dealManualIntrance(callback){
+ let params = {
+ containercode:this.containter.containerCode,
+ wmsMaterials:this.list
+ }
+ BindEntranceManualWare(params).then(()=>{
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ }
+ }
+}
+</script>
+<style lang="less" scoped>
+.wms-in-bound2-page{
+ border-radius: 6px 6px 0 0;
+ background-color: #fff;
+}
+.in-bound-page-block{
+ border-bottom:2px solid #dcdcdc;
+ overflow: auto;
+ padding-top: 16px;
+ padding-bottom: 16px;
+ &.block-two{
+ padding-top:12px;
+ .table-box{
+ padding-top:20px;
+ min-height: 241px;
+ }
+ }
+ &.block-three{
+ overflow: hidden;
+ padding-left:8px;
+ padding-right:8px;
+ }
+}
+.bottom-btns-view{
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-wrap: wrap;
+ padding:16px 8px;
+ .ant-btn + .ant-btn {
+ margin-left:20px;
+ }
+}
+.block-three-input-box{
+ margin: 0 auto;
+ width: 600px;
+}
+.table-top-box{
+ padding-left: 20px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue
new file mode 100644
index 0000000..a4e7ec2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/inputLayout.vue
@@ -0,0 +1,50 @@
+<template>
+ <div class="wms-in-bound2-input-layout">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <slot></slot>
+ <div v-if="msg">
+ <a-alert :message="msg" type="error" show-icon />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBound2InputLayout',
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ }
+ },
+ mounted(){
+ console.log(this.$scopedSlots.err)
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound2-input-layout{
+ width:100%;
+ display:flex;
+ margin:0 auto;
+ .label-view{
+ flex-shrink: 0;
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .input-view{
+ flex-grow:1;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue
new file mode 100644
index 0000000..df76f8d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyBindEntrance/searchBox.vue
@@ -0,0 +1,109 @@
+<template>
+ <div class="wms-in-bound2-search-box">
+ <div class="label-view" v-if="label" :style="{width:labelWidth?labelWidth:'auto'}">{{label}}锛�</div>
+ <div class="input-view">
+ <a-input :placeholder="placeholder" v-model.trim="innerValue" />
+ <div v-if="msg" class="msg-row">
+ <a-alert v-if="msgType==='error'" :message="msg" type="error" show-icon />
+ <a-alert v-else :message="msg" type="info" show-icon />
+ </div>
+ </div>
+ <div class="btns-view">
+ <a-button type="primary" @click="onSearch" :disabled="btnDisabled">鎼� 绱�</a-button>
+ <a-button @click="onReset" :disabled="btnDisabled">閲� 缃�</a-button>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name:'wmsInBound2SearchBox',
+ emits:['input','search','reset'],
+ props:{
+ label:{
+ type:String,
+ default:''
+ },
+ labelWidth:{
+ type:String,
+ default:''
+ },
+ placeholder:{
+ type:String,
+ default:''
+ },
+ msgType:{
+ type:String,
+ default:''
+ },
+ msg:{
+ type:String,
+ default:''
+ },
+ value:{
+ type:[String,null],
+ default:''
+ },
+ btnDisabled:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerValue:''
+ }
+ },
+ created(){
+ this.innerValue = this.value
+ },
+ watch:{
+ innerValue(newVal,oldVal){
+ if (newVal!==this.value) {
+ this.$emit('input',newVal)
+ }
+ },
+ value(newVal,oldVal){
+ if (newVal!==this.innerValue) {
+ this.innerValue = newVal;
+ }
+ }
+ },
+ methods:{
+ onSearch(){
+ this.$emit('search',this.innerValue)
+ },
+ onReset(){
+ this.innerValue = ''
+ this.$emit('reset')
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.wms-in-bound2-search-box{
+ width:600px;
+ display:flex;
+ margin:0 auto;
+ .label-view,.btns-view{
+ flex-shrink: 0;
+ }
+ .label-view{
+ padding-top: 3.5px;
+ text-align: right;
+ }
+ .btns-view{
+ padding-left: 16px;
+ .ant-btn + .ant-btn {
+ margin-left:10px;
+ }
+ }
+ .input-view{
+ flex-grow:1;
+ .msg-row{
+ padding-top:4px;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue
new file mode 100644
index 0000000..3941b8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/index.vue
@@ -0,0 +1,236 @@
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�">
+ <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+ </a-form-item>
+ </a-col> -->
+ <!-- <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙枡绔欑偣">
+ <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐝粍">
+ <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="灏哄">
+ <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏鍙�">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template> -->
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a> -->
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDistribute(record)">涓嬪彂</a>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { PlywoodPreparationPage, Distribute } from '@/api/modular/main/PlyPrepareRecord'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '120px',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PlywoodPreparationPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ materialTypeData: [],
+ statusData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const statusOption = this.$options
+ this.statusData = statusOption.filters['dictData']('order_status')
+ console.log(this.statusData.map((obj)=>{
+ return {code:obj.code,name:obj.name}
+ }))
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onDistribute(obj){
+ if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屼笅鍙戠殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ this.dealDistribute([obj.id],(f)=>{
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ dealDistribute(ids,callback){
+ this.$loading.show()
+ Distribute(ids).then(()=>{
+ this.$loading.hide()
+ this.$refs.table.refresh()
+ callback && callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback && callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue
new file mode 100644
index 0000000..366c0b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plyPrepareRecord/infoBlock.vue
@@ -0,0 +1,104 @@
+<template>
+ <div class="ply-prepare-manage-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { PlywoodPreparationDetailPage } from '@/api/modular/main/PlyPrepareRecord'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'plyPrepareManageInfoBlock',
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 120 },
+ { title: '鏁伴噺', dataIndex: 'orderQuantity', key: 'orderQuantity', width: 100},
+ { title: '闇�姹傛棩鏈�', dataIndex: 'requireTime', key: 'requireTime', width: 170}
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.OrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return PlywoodPreparationDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.ply-prepare-manage-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue
new file mode 100644
index 0000000..38d6bb2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/plywoodStock/index.vue
@@ -0,0 +1,189 @@
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('WmsMaterialStock:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡缂栧彿">
+ <a-input v-model="queryParam.materialNo" allow-clear placeholder="璇疯緭鍏ョ墿鏂欑紪鍙�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡灏哄">
+ <a-input v-model="queryParam.materialSpec" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡瀵嗗害">
+ <a-input v-model="queryParam.materialDensity" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴撲綅缂栫爜">
+ <a-input v-model="queryParam.placeCode" allow-clear placeholder="璇疯緭鍏ュ簱浣嶇紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏缂栫爜">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樼紪鐮�"/>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <span slot="materialTypescopedSlots" slot-scope="text">
+ {{ 'material_type' | dictType(text) }}
+ </span>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { PlywoodStockPage } from '@/api/modular/main/PlywoodStockManage'
+ export default {
+ components: {
+ STable
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鐗╂枡缂栧彿',
+ align: 'center',
+ dataIndex: 'materialNo'
+ },
+ {
+ title: '鐗╂枡绫诲瀷',
+ align: 'center',
+ dataIndex: 'materialType',
+ scopedSlots: { customRender: 'materialTypescopedSlots' }
+ },
+ {
+ title: '鐗╂枡鎵规',
+ align: 'center',
+ dataIndex: 'materialBatch'
+ },
+ {
+ title: '鐗╂枡鍚嶇О',
+ align: 'center',
+ dataIndex: 'materialName'
+ },
+ {
+ title: '鐗╂枡灏哄',
+ align: 'center',
+ dataIndex: 'materialSpec'
+ },
+ {
+ title: '鐗╂枡瀵嗗害',
+ align: 'center',
+ dataIndex: 'materialDensity'
+ },
+ {
+ title: '搴撳瓨鏁�',
+ align: 'center',
+ dataIndex: 'stockNumber'
+ },
+ {
+ title: '搴撲綅缂栫爜',
+ align: 'center',
+ dataIndex: 'placeCode'
+ },
+ {
+ title: '鎵樼洏缂栫爜',
+ align: 'center',
+ dataIndex: 'containerCode'
+ },
+ {
+ title: '鍏ュ簱鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PlywoodStockPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ materialTypeData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const materialTypeOption = this.$options
+ this.materialTypeData = materialTypeOption.filters['dictData']('material_type')
+ },
+ methods: {
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue
new file mode 100644
index 0000000..0b030ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/addForm.vue
@@ -0,0 +1,248 @@
+锘�<template>
+ <a-modal
+ title="鏂板澶囨枡"
+ width="90vw"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div class="prepare-manage-modal-content">
+ <div class="form-view">
+ <a-form :form="form">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input disabled v-decorator="['OrderNo',{rules:[{required:true,message:'鍗曟嵁鍙蜂笉鍙负绌猴紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙枡绔欑偣" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-show="false" v-decorator="['takeMaterialsSiteId',{rules:[{required:true,message:'璇烽�夋嫨鍙枡绔欑偣锛�'}]}]" />
+ <station-select v-model="stationArr" :get-lines="getLines" :get-stations="getStations" @change="onChangeStation" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="action-view">
+ <a-button type="primary" icon="plus" @click="openChoose">
+ 娣诲姞鐗╂枡
+ </a-button>
+ </div>
+ <div class="list-view" ref="listWrapper">
+ <!-- 娉ㄦ剰scroll.x鐨勫�� -->
+ <a-table v-if="th" :data-source="list" :columns="columns" :rowKey="tableKey" :pagination="false" :scroll="{x:1100,y:th}">
+ <template slot="index" slot-scope="text,record,index">{{index+1}}</template>
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelListItem(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ <template slot="inputCell" slot-scope="text,record,index">
+ <a-input-number v-model="record.orderQuantity" :min="0" />
+ </template>
+ <template slot="dateCell" slot-scope="text,record,index">
+ <a-date-picker :value="record.requireTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD" @change="onChangeRequireDate(index,$event)" />
+ </template>
+ </a-table>
+ </div>
+ </div>
+ </a-spin>
+
+ <choose-modal :visible.sync="chooseVisible" @callback="chooseBack" />
+
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="submit" type="primary" :loading="confirmLoading" @click="handleSubmit" :disabled="!list.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+ import ChooseModal from './chooseMaterials.vue'
+ import { PrePareManageAdd,GetBillNumber } from '@/api/modular/main/prePareManage'
+ import StationSelect from '@/components/StationSelect.vue'
+ import { GetLines,GetStations } from '@/api/modular/main/LesStationManage'
+ export default {
+ components:{ChooseModal,StationSelect},
+ data () {
+ return {
+ getLines:GetLines,
+ getStations:GetStations,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ visible: false,
+ confirmLoading: false,
+ stationArr:[],
+ th:0,
+ tableKey:'materialName',
+ list:[],
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+ { title: '鏁伴噺', key: 'orderQuantity', scopedSlots: { customRender: 'inputCell' }, width: 220, align:'center'},
+ { title: '闇�姹傛棩鏈�', key: 'requireTime', scopedSlots: { customRender: 'dateCell' }, width: 220, align:'center'},
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ chooseVisible:false
+ }
+ },
+ beforeCreate(){
+ this.form = this.$form.createForm(this)
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+ this.th = this.$refs.listWrapper.clientHeight - 60
+ this.getInitData()
+ });
+ },
+ getInitData(){
+ this.confirmLoading = true;
+ GetBillNumber().then((d1)=>{
+ this.form.setFieldsValue({OrderNo:(d1.data.takeMaterialsNo || '')})
+ this.confirmLoading = false;
+ }).catch(()=>{
+ this.confirmLoading = false;
+ })
+ },
+ onChangeStation(arr){
+ this.form.setFieldsValue({takeMaterialsSiteId:arr[1]})
+ },
+ chooseBack(arr){
+ let newArr = [], reCount = 0;
+ arr.forEach((item)=>{
+ let f = false;
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ reCount++;
+ f = true
+ break;
+ }
+ }
+ if (!f) {
+ let _obj = {...item}
+ _obj.orderQuantity = 0
+ _obj.requireTime = ''
+ newArr.push(item)
+ }
+ })
+ this.list = [].concat(newArr,this.list)
+ if (reCount) {
+ this.$message.warning(`${reCount}绗旀暟鎹凡瀛樺湪锛屾湭娣诲姞锛乣);
+ }
+ },
+ cancelListItem(index){
+ this.list.splice(index,1)
+ },
+ onChangeRequireDate(index,val){
+ let arr = this.list.map((item,i)=>{
+ if (i===index) {
+ item.requireTime=val
+ } else {
+ if (!item.requireTime) {
+ item.requireTime=val
+ }
+ }
+ return item
+ })
+ this.list = arr
+ },
+ interalNumberValidate(val){
+ let res = 0
+ if (!val) {
+ res = 1 //鏁伴噺蹇呭~涓斿ぇ浜�0
+ } else if (Number(val)!==parseInt(val)) {
+ res = 2 //鍙兘鏄暣鏁�
+ }
+ return res
+ },
+ checkBeforeSubmit() {
+ let res = true, msg = '';
+ for (let i=0;i<this.list.length;i++) {
+ let numberTag = this.interalNumberValidate(this.list[i].orderQuantity)
+ if (numberTag!==0) {
+ res = false
+ if (numberTag===1) {
+ msg = `绗�${i+1}琛岋紝鏁伴噺蹇呭~涓斿ぇ浜�0锛乣
+ } else if (numberTag===2) {
+ msg = `绗�${i+1}琛岋紝鏁伴噺鍙兘鏄暣鏁帮紒`
+ }
+ break;
+ }
+ if (!this.list[i].requireTime) {
+ res = false
+ msg = `绗�${i+1}琛岋紝闇�姹傛棩鏈熷繀濉紒`
+ break;
+ }
+ }
+ if (!res) {
+ this.$message.warning(msg);
+ }
+ return res
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ this.form.validateFields((errors, values) => {
+ if (!errors) {
+ let f = this.checkBeforeSubmit()
+ if (f) {
+ this.confirmLoading = true
+ let params = {...values,...{WmsAssembleOrderDetails:this.list}}
+ PrePareManageAdd(params).then(()=>{
+ this.confirmLoading = false
+ this.handleCancel()
+ this.$emit('ok')
+ }).catch(()=>{
+ this.confirmLoading = false
+ })
+ }
+ }
+ })
+ },
+ handleCancel () {
+ this.visible = false
+ this.th = 0
+ this.list = []
+ this.chooseVisible = false
+ },
+ openChoose(){
+ this.chooseVisible = true
+ }
+ }
+ }
+</script>
+<style lang="less" scoped>
+.prepare-manage-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .form-view,.action-view{
+ flex-shrink: 0;
+ }
+ .form-view{
+ background-color: #F3F7FA;
+ padding-top: 20px;
+ }
+ .action-view{
+ padding: 8px 16px;
+ }
+ .list-view{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue
new file mode 100644
index 0000000..d3e4c42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/chooseMaterials.vue
@@ -0,0 +1,310 @@
+<template>
+ <a-modal
+ title="鐗╂枡閫夋嫨"
+ width="85vw"
+ :visible="innerVisible"
+ dialogClass="zero-modal"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="loading">
+ <div class="prepare-manage-choose-modal-content">
+ <div class="choose-bar">
+ <div class="choose-form-view">
+ <a-form layout="inline">
+ <a-row>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" v-model="query.MaterialType" placeholder="璇烽�夋嫨..." allowClear>
+ <a-select-option v-for="(item,index) in types" :value="item.code" :key="'types-sel-'+index">{{item.name}}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵规" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input v-model.trim="query.MaterialBatch" placeholder="璇疯緭鍏�..." allowClear />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ <div class="choose-btns-view">
+ <a-button type="primary" style="margin-bottom:6px;" @click.stop="onQuery">鏌ヨ</a-button>
+ <a-button @click.stop="onReset">閲嶇疆</a-button>
+ </div>
+ </div>
+ <div class="table-box" ref="listWrapper">
+ <div class="action-view" v-if="showType===1">
+ <a-table v-if="th1" :data-source="list" :columns="listColumns"
+ :pagination="{current:queried.PageNo,pageSize:queried.PageSize,total:listTotal}"
+ :rowKey="tableKey" :row-selection="{onChange:rowSelectionsChange,selectedRowKeys:selectedRowKeys}" :scroll="{y:th1}"
+ @change="chooseTablePageChange">
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ <div class="choosen-view" v-else>
+ <a-table v-if="th2" :data-source="choosen" :columns="choosenColumns" :rowKey="tableKey" :pagination="false" :scroll="{y:th2}">
+ <template slot="action" slot-scope="text,record,index">
+ <a-button type="danger" size="small" @click.stop="cancelChoosen(index)">鍒犻櫎</a-button>
+ </template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </a-table>
+ </div>
+ </div>
+ </div>
+ </a-spin>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button key="choosen" type="primary" @click="changeShowType">鎵�閫夌墿鏂�<span v-if="choosen.length>0">({{choosen.length}})</span></a-button>
+ <a-button key="submit" type="primary" :loading="loading" @click="handleSubmit" :disabled="!choosen.length">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { QueryMaterials } from '@/api/modular/main/prePareManage'
+const defaultQuery = {
+ MaterialType:undefined,
+ MaterialBatch:''
+}
+const pagination = {
+ PageNo:1,
+ PageSize:10
+}
+export default {
+ emits:['update:visible','callback'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ }
+ },
+ data(){
+ return {
+ innerVisible:false,
+ loading:false,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 18 }
+ },
+ types:[],
+ query:{...defaultQuery},
+ queried:{...pagination},
+ tableKey:'materialName',
+ listTotal:0,
+ list:[],
+ listColumns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 }
+ ],
+ selectedRowKeys:[],
+ choosen:[],
+ choosenColumns:[
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', key: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+ { title: '鎿嶄綔', key: 'action', width: 80, align:'center', fixed:"right", scopedSlots: { customRender: 'action' }}
+ ],
+ showType:1, //1鏄剧ず鏌ヨ椤甸潰锛� 2鏄剧ず宸查�夋暟鎹�
+ th1:0,
+ th2:0
+ }
+ },
+ created(){
+ this.innerVisible = this.visible
+ this.types = this.$options.filters['dictData']('material_type')
+ console.log(JSON.stringify(this.types))
+ },
+ watch:{
+ visible(newVal){
+ if (newVal!==this.innerVisible) {
+ this.innerVisible = newVal
+ }
+ },
+ innerVisible(newVal,oldVal){
+ if (newVal!==this.visible) {
+ this.$emit('update:visible',newVal)
+ }
+ if (newVal!==oldVal) {
+ if (newVal) {
+ this.init()
+ }
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.$nextTick(() => {
+ let h = this.$refs.listWrapper.clientHeight
+ this.th1 = h - 120
+ this.th2= h - 60
+ this.resetQuery()
+ });
+ },
+ handleSubmit(){
+ this.$emit('callback',this.choosen)
+ this.handleCancel()
+ },
+ handleCancel(){
+ this.innerVisible = false;
+ this.showType = 1
+ this.list = []
+ this.choosen = []
+ this.loading = false
+ this.query = {...defaultQuery}
+ this.queried = {...pagination}
+ },
+ onQuery(){
+ this.newQuery()
+ },
+ onReset(){
+ this.resetQuery()
+ },
+ resetQuery(){
+ this.query = {...defaultQuery}
+ this.newQuery()
+ },
+ newQuery(){
+ this.queried = {...this.query,...pagination}
+ this.queryChooseDataSource()
+ },
+ queryChooseDataSource(){
+ this.loading = true;
+ QueryMaterials(this.queried).then((d)=>{
+ this.list = d.data.rows || []
+ this.listTotal = d.data.totalRows || 0
+ this.setSelectedRowKeys()
+ this.loading = false;
+ }).catch(()=>{
+ this.loading = false;
+ })
+ },
+ rowSelectionsChange(selectedRowKeys, selectedRows){
+ let reduces = [], adds = []
+ /* 璁$畻闇�瑕佽绉诲嚭choosen鐨勫唴瀹� */
+ this.selectedRowKeys.forEach((val)=>{
+ let f1 = false;
+ for (let i=0;i<selectedRowKeys.length;i++) {
+ if (selectedRowKeys[i] === val) {
+ f1 = true;
+ break;
+ }
+ }
+ if (!f1) {
+ reduces.push(val)
+ }
+ })
+ /* 璁$畻闇�瑕佽鍔犲叆choosen鐨勫唴瀹� */
+ selectedRowKeys.forEach((val)=>{
+ let f2 = false;
+ for (let i=0;i<this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ f2 = true;
+ break;
+ }
+ }
+ if (!f2) {
+ adds.push(val)
+ }
+ })
+ /* 鎵ц瀹為檯鏁版嵁澶勭悊锛屽厛鍑忓悗鍔狅紝鍑忓皯澶勭悊鏃堕棿 */
+ this.selectedRowKeys = selectedRowKeys
+ this.reduceChoosen(reduces)
+ this.addChosen(adds)
+ },
+ chooseTablePageChange(pagination){
+ this.queried.PageNo = pagination.current
+ this.queryChooseDataSource()
+ },
+ reduceChoosen(arr){
+ arr.forEach((val)=>{
+ let reduceIndex = -1;
+ for (let i=0;this.choosen.length;i++) {
+ if (this.choosen[i][this.tableKey] === val) {
+ reduceIndex = i
+ break;
+ }
+ }
+ if (reduceIndex>=0) {
+ this.choosen.splice(reduceIndex,1)
+ }
+ })
+ },
+ cancelChoosen(index){
+ this.choosen.splice(index,1)
+ },
+ addChosen(arr){
+ arr.forEach((val)=>{
+ for (let i=0;this.list.length;i++) {
+ if (this.list[i][this.tableKey] === val) {
+ let obj = {...this.list[i]}
+ this.choosen.push(obj)
+ break;
+ }
+ }
+ })
+ },
+ setSelectedRowKeys(){
+ let arr = []
+ this.choosen.forEach((item)=>{
+ for (let i=0;i<this.list.length;i++) {
+ if (this.list[i][this.tableKey] === item[this.tableKey]) {
+ arr.push(item[this.tableKey])
+ break;
+ }
+ }
+ })
+ this.selectedRowKeys = arr
+ },
+ changeShowType(){
+ if (this.showType===1) {
+ this.showType = 2
+ } else {
+ this.showType = 1
+ this.setSelectedRowKeys()
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.prepare-manage-choose-modal-content{
+ height: 70vh;
+ display: flex;
+ flex-direction: column;
+ .choose-bar{
+ flex-shrink: 0;
+ padding: 8px 4px;
+ display: flex;
+ .choose-form-view{
+ flex-grow: 1;
+ }
+ .choose-btns-view{
+ flex-shrink: 0;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ }
+ }
+ .table-box{
+ flex-grow: 1;
+ padding: 0 16px;
+ overflow: auto;
+ }
+ .ant-form-inline{
+ .ant-form-item {
+ margin-right: 0;
+ width: 100%;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue
new file mode 100644
index 0000000..ca6525f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/index.vue
@@ -0,0 +1,257 @@
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('LesTakematerials:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍗曟嵁鍙�">
+ <a-input v-model="queryParam.OrderNo" allow-clear placeholder="璇疯緭鍏�..."/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <!-- <a-col :md="8" :sm="24">
+ <a-form-item label="璁″垝鍙�">
+ <a-input v-model="queryParam.planNo" allow-clear placeholder="璇疯緭鍏ヨ鍒掑彿"/>
+ </a-form-item>
+ </a-col> -->
+ <!-- <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙枡绔欑偣">
+ <a-input v-model="queryParam.takeMaterialsSite" allow-clear placeholder="璇疯緭鍏ュ彨鏂欑珯鐐�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐝粍">
+ <a-input v-model="queryParam.teamName" allow-clear placeholder="璇疯緭鍏ョ彮缁�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鍚嶇О">
+ <a-input v-model="queryParam.materialName" allow-clear placeholder="璇疯緭鍏ョ墿鏂欏悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡绫诲瀷">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.materialType" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷">
+ <a-select-option v-for="(item,index) in materialTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀵嗗害">
+ <a-input v-model="queryParam.density" allow-clear placeholder="璇疯緭鍏ュ瘑搴�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="灏哄">
+ <a-input v-model="queryParam.specifications" allow-clear placeholder="璇疯緭鍏ュ昂瀵�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐗╂枡鎵规">
+ <a-input v-model="queryParam.materialBatch" allow-clear placeholder="璇疯緭鍏ョ墿鏂欐壒娆�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵樼洏鍙�">
+ <a-input v-model="queryParam.containerCode" allow-clear placeholder="璇疯緭鍏ユ墭鐩樺彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��">
+ <a-select-option v-for="(item,index) in statusData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template> -->
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <!-- <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a> -->
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :pageSize="5"
+ :pageSizeOptions="['5','10','20','30']"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('LesTakematerials:add')" >
+ <a-button type="primary" v-if="hasPerm('LesTakematerials:add')" icon="plus" @click="$refs.addForm.add()">鏂板澶囨枡</a-button>
+ </template>
+ <span slot="orderStatusscopedSlots" slot-scope="text">
+ <a-tag :color="text===2?'#0000ff':(text===3?'#008000':(text===4?'#ffd700':'gray'))">{{ 'order_status' | dictType(text) }}</a-tag>
+ </span>
+ <template slot="linkSlot" slot-scope="text,record">
+ <a @click="onViewDetail(record)">{{text}}</a>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a :class="[(record.orderStatus===1||record.orderStatus===4)?'':'disabled']" style="margin-right:10px;" @click="onEdit(record)">缂栬緫</a>
+ <a :class="[record.orderStatus===1||record.orderStatus===4?'':'disabled']" @click="onDel(record)">鍒犻櫎</a>
+ </span>
+ </s-table>
+
+ <info-block :query-id="infoId" v-if="infoId" :order-no="infoOrderNo" />
+
+ <add-form ref="addForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import { PrePareManagePage, PrePareManageDelete } from '@/api/modular/main/prePareManage'
+ import addForm from './addForm.vue'
+ import infoBlock from './infoBlock.vue'
+ export default {
+ components: {
+ STable,
+ addForm,
+ infoBlock
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title: '鍗曟嵁缂栧彿',
+ align: 'center',
+ dataIndex: 'orderNo',
+ scopedSlots: { customRender: 'linkSlot' }
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ align: 'center',
+ dataIndex: 'orderStatus',
+ scopedSlots: { customRender: 'orderStatusscopedSlots' }
+ },
+ {
+ title: '澶囨枡鎬绘暟',
+ align: 'center',
+ dataIndex: 'orderQuantityTotal'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鍒涘缓浜�',
+ align: 'center',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鎿嶄綔',
+ width: '120px',
+ align: 'center',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return PrePareManagePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ let _arr = res.data.rows || []
+ if (_arr.length>0){
+ this.onViewDetail(_arr[0])
+ }
+ return res.data
+ })
+ },
+ materialTypeData: [],
+ statusData: [],
+ infoId:null,
+ infoOrderNo:''
+ }
+ },
+ created () {
+ const statusOption = this.$options
+ this.statusData = statusOption.filters['dictData']('order_status')
+ console.log(this.statusData.map((obj)=>{
+ return {code:obj.code,name:obj.name}
+ }))
+ },
+ methods: {
+ onViewDetail(obj){
+ if (this.infoId===obj.id) {
+ this.infoId = null
+ this.infoOrderNo = ''
+ } else {
+ this.infoId = obj.id;
+ this.infoOrderNo = obj.orderNo
+ }
+ },
+ onEdit(){
+
+ },
+ onDel(obj){
+ if (obj.orderStatus!==1&&obj.orderStatus!==4) return false
+ this.$confirm({
+ title: '绯荤粺鎻愮ず',
+ content: '鎮ㄥ皢瑕佽繘琛屽垹闄ょ殑鎿嶄綔锛岀‘璁よ缁х画鍢涳紵',
+ okText:'纭',
+ cancelText:'鍙栨秷',
+ onOk:()=>{
+ this.dealDelete([obj.id],(f)=>{
+ if (f) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ if (obj.id===this.infoId) {
+ this.infoId = null
+ }
+ this.$refs.table.refresh()
+ }
+ })
+ }
+ });
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ dealDelete(ids,callback){
+ this.$loading.show()
+ PrePareManageDelete(ids).then(()=>{
+ this.$loading.hide()
+ this.$refs.table.refresh()
+ callback && callback(true)
+ }).catch(()=>{
+ this.$loading.hide()
+ callback && callback(false)
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue
new file mode 100644
index 0000000..a86fe57
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/prepareManage/infoBlock.vue
@@ -0,0 +1,105 @@
+<template>
+ <div class="prepare-manage-info-block">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ rowKey="tableRowKey"
+ :pageSize="queried.PageSize"
+ :pageSizeOptions="['5','10','20','30']"
+ :rowSelection="null">
+ <template class="table-operator" slot="operator" >
+ <span style="font-weight:bold;cursor:default;"><a style="cursor:default;">{{orderNo}}</a>鍗曟嵁璇︽儏</span>
+ </template>
+ <template slot="index" slot-scope="text,record,index">{{(queried.PageNo-1)*queried.PageSize+(index+1)}}</template>
+ <span slot="materialTyleSlot" slot-scope="text">{{ 'material_type' | dictType(text) }}</span>
+ </s-table>
+ </div>
+</template>
+
+<script>
+import { STable } from '@/components'
+import { CncTakeMaterialsDetailPage } from '@/api/modular/main/prePareManage'
+const pagination = {PageNo:1,PageSize:5}
+export default {
+ name:'prepareManageInfoBlock',
+ components:{STable},
+ props:{
+ queryId:{
+ type:[Number,null],
+ default:null
+ },
+ orderNo:{
+ type:String,
+ default:''
+ }
+ },
+ data(){
+ return {
+ columns:[
+ { title: '搴忓彿', key: 'index', width: 70, align:'center', fixed:"left", scopedSlots: { customRender: 'index' }},
+ { title: '鐗╂枡绫诲瀷', dataIndex: 'materialType', width: 120, scopedSlots: { customRender: 'materialTyleSlot' }},
+ { title: '鐗╂枡缂栫爜', dataIndex: 'materialNo', key: 'materialNo' },
+ { title: '鐗╂枡鍚嶇О', dataIndex: 'materialName', key: 'materialName' },
+ { title: '鎵规', dataIndex: 'materialBatch', key: 'materialBatch', width: 180 },
+ { title: '闇�姹傛暟閲�', dataIndex: 'orderQuantity', key: 'orderQuantity', width: 100},
+ { title: '宸插鏁伴噺', dataIndex: 'actualQuantity', key: 'actualQuantity', width: 100},
+ { title: '闇�姹傛棩鏈�', dataIndex: 'requireTime', key: 'requireTime', width: 170}
+ ],
+ queried:{...pagination},
+ refreshKey:true,
+ }
+ },
+ watch:{
+ queryId(newV,oldV){
+ if (newV!==oldV){
+ this.initData()
+ }
+ }
+ },
+ methods:{
+ initData(){
+ this.refreshKey = true
+ this.$refs.table.refresh()
+ },
+ loadData(parameter){
+ parameter.OrderId = this.queryId
+ if (this.queryId) {
+ if (this.refreshKey) {
+ parameter.pageNo = pagination.PageNo
+ parameter.pageSize = pagination.PageSize
+ }
+ this.refreshKey = false
+ this.queried.PageNo = parameter.pageNo
+ this.queried.PageSize = parameter.pageSize
+ return CncTakeMaterialsDetailPage(parameter).then((res) => {
+ if (res.data.rows) {
+ res.data.rows = res.data.rows.map((item,index)=>{
+ item.tableRowKey = index
+ return item
+ })
+ }
+ return res.data
+ })
+ } else {
+ return new Promise((resolve,reject)=>{
+ resolve({
+ pageNo:pagination.PageNo,
+ pageSize:pagination.PageSize,
+ rows:[],
+ totalPage:0,
+ totalRows:0
+ })
+ })
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.prepare-manage-info-block{
+ padding-top: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue
new file mode 100644
index 0000000..5bd56ac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/LabelTag.vue
@@ -0,0 +1,99 @@
+<template>
+ <div class="label-tag">
+ <template v-if="mergedConfig">
+ <div class="label-item" v-for="(label, i) in mergedConfig.data" :key="label">
+ {{ label }}
+ <div :style="`background-color: ${mergedConfig.colors[i % mergedConfig.colors.length]};`" />
+ </div>
+ </template>
+ </div>
+</template>
+
+<script>
+ import {
+ deepMerge
+ } from '@jiaminghi/charts/lib/util/index'
+
+ import {
+ deepClone
+ } from '@jiaminghi/c-render/lib/plugin/util'
+
+ export default {
+ name: 'LabelTag',
+ props: {
+ config: {
+ type: Object,
+ default: () => ([])
+ }
+ },
+ data() {
+ return {
+ defaultConfig: {
+ /**
+ * @description Label data
+ * @type {Array<String>}
+ * @default data = []
+ * @example data = ['label1', 'label2']
+ */
+ data: [],
+ /**
+ * @description Label color (Hex|Rgb|Rgba|color keywords)
+ * @type {Array<String>}
+ * @default colors = ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b']
+ * @example colors = ['#666', 'rgb(0, 0, 0)', 'rgba(0, 0, 0, 1)', 'red']
+ */
+ colors: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b']
+ },
+
+ mergedConfig: null
+ }
+ },
+ watch: {
+ config() {
+ const {
+ mergeConfig
+ } = this
+
+ mergeConfig()
+ }
+ },
+ methods: {
+ mergeConfig() {
+ const {
+ config,
+ defaultConfig
+ } = this
+
+ this.mergedConfig = deepMerge(deepClone(defaultConfig, true), config || {})
+ }
+ },
+ mounted() {
+ const {
+ mergeConfig
+ } = this
+
+ mergeConfig()
+ }
+ }
+</script>
+
+<style lang="less">
+ .label-tag {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .label-item {
+ margin: 5px;
+ font-size: 5px;
+ display: flex;
+ align-items: center;
+
+ div {
+ width: 12px;
+ height: 12px;
+ margin-left: 5px;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue
new file mode 100644
index 0000000..30261d9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/TopMiddleCmp.vue
@@ -0,0 +1,112 @@
+<template>
+ <div class="top-middle-cmp">
+ <div class="chart-name">
+
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-charts :option="option" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'TopMiddleCmp',
+ data() {
+ return {
+ option: {
+ legend: {
+ data: ['璁惧瀹屽ソ鐜�'],
+ textStyle: {
+ fill: '#fff'
+ }
+ },
+ xAxis: {
+ data: [
+ '10/01', '10/02', '10/03', '10/04', '10/05', '10/06',
+ '10/07', '10/07', '10/08', '10/09', '10/10', '10/11',
+ '10/12', '10/13', '10/14', '10/15'
+ ],
+ boundaryGap: false,
+ axisLine: {
+ style: {
+ stroke: '#999'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#999'
+ }
+ },
+ axisTick: {
+ show: false
+ }
+ },
+ yAxis: {
+ data: 'value',
+ splitLine: {
+ show: false
+ },
+ axisLine: {
+ style: {
+ stroke: '#999'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#999'
+ },
+ formatter({
+ value
+ }) {
+ return value.toFixed(2)
+ }
+ },
+ axisTick: {
+ show: false
+ },
+ min: 95,
+ max: 100,
+ interval: 1
+ },
+ series: [{
+ data: [
+ 99.56, 99.66, 99.84, 99.22, 99.11, 99.45,
+ 99.44, 99.81, 99.84, 99.32, 99.14, 99.45,
+ 99.15, 99.45, 99.64, 99.89
+ ],
+ type: 'line',
+ name: '璁惧瀹屽ソ鐜�',
+ smooth: true,
+ lineArea: {
+ show: true,
+ gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+ }
+ // linePoint: {
+ // radius: 4,
+ // style: {
+ // fill: '#00db95'
+ // }
+ // }
+ }]
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .top-middle-cmp {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .chart-name {
+ position: absolute;
+ left: 10px;
+ //text-align: right;
+ font-size: 20px;
+ top: 10px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue
new file mode 100644
index 0000000..41588a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/cards.vue
@@ -0,0 +1,188 @@
+<template>
+ <div id="cards">
+ <div class="card-item" v-for="(card, i) in cards" :key="card.title">
+ <div class="card-header">
+ <div class="card-header-left">{{ card.title }}</div>
+ <div class="card-header-right">{{ '0' + (i + 1) }}</div>
+ </div>
+ <dv-charts class="ring-charts" :option="card.ring" />
+ <div class="card-footer">
+ <div class="card-footer-item">
+ <div class="footer-title">绱閲戦</div>
+ <div class="footer-detail">
+ <dv-digital-flop :config="card.total" style="width:70%;height:35px;" />鍏�
+ </div>
+ </div>
+ <div class="card-footer-item">
+ <div class="footer-title">宸℃煡鐥呭</div>
+ <div class="footer-detail">
+ <dv-digital-flop :config="card.num" style="width:70%;height:35px;" />澶�
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Cards',
+ data() {
+ return {
+ cards: []
+ }
+ },
+ methods: {
+ createData() {
+ const {
+ randomExtend
+ } = this
+
+ this.cards = new Array(5).fill(0).map((foo, i) => ({
+ title: '娴嬭瘯璺' + (i + i),
+ total: {
+ number: [randomExtend(9000, 10000)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#ea6027',
+ fontWeight: 'bold'
+ }
+ },
+ num: {
+ number: [randomExtend(30, 60)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#26fcd8',
+ fontWeight: 'bold'
+ }
+ },
+ ring: {
+ series: [{
+ type: 'gauge',
+ startAngle: -Math.PI / 2,
+ endAngle: Math.PI * 1.5,
+ arcLineWidth: 13,
+ radius: '80%',
+ data: [{
+ name: '璧勯噾鍗犳瘮',
+ value: randomExtend(40, 60)
+ }],
+ axisLabel: {
+ show: false
+ },
+ axisTick: {
+ show: false
+ },
+ pointer: {
+ show: false
+ },
+ backgroundArc: {
+ style: {
+ stroke: '#224590'
+ }
+ },
+ details: {
+ show: true,
+ formatter: '璧勯噾鍗犳瘮{value}%',
+ style: {
+ fill: '#1ed3e5',
+ fontSize: 20
+ }
+ }
+ }],
+ color: ['#03d3ec']
+ }
+ }))
+ },
+ randomExtend(minNum, maxNum) {
+ if (arguments.length === 1) {
+ return parseInt(Math.random() * minNum + 1, 10)
+ } else {
+ return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+ }
+ }
+ },
+ mounted() {
+ const {
+ createData
+ } = this
+
+ createData()
+
+ setInterval(this.createData, 30000)
+ }
+ }
+</script>
+
+<style lang="less">
+ #cards {
+ display: flex;
+ justify-content: space-between;
+ height: 45%;
+
+ .card-item {
+ background-color: rgba(6, 30, 93, 0.5);
+ border-top: 2px solid rgba(1, 153, 209, .5);
+ width: 19%;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .card-header {
+ display: flex;
+ height: 20%;
+ align-items: center;
+ justify-content: space-between;
+
+ .card-header-left {
+ font-size: 18px;
+ font-weight: bold;
+ padding-left: 20px;
+ }
+
+ .card-header-right {
+ padding-right: 20px;
+ font-size: 40px;
+ color: #03d3ec;
+ }
+ }
+
+ .ring-charts {
+ height: 55%;
+ }
+
+ .card-footer {
+ height: 25%;
+ display: flex;
+ align-items: center;
+ justify-content: space-around;
+ }
+
+ .card-footer-item {
+ padding: 5px 10px 0px 10px;
+ box-sizing: border-box;
+ width: 40%;
+ background-color: rgba(6, 30, 93, 0.7);
+ border-radius: 3px;
+
+ .footer-title {
+ font-size: 15px;
+ margin-bottom: 5px;
+ }
+
+ .footer-detail {
+ font-size: 20px;
+ color: #1294fb;
+ display: flex;
+ font-size: 18px;
+ align-items: center;
+
+ .dv-digital-flop {
+ margin-right: 5px;
+ }
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue
new file mode 100644
index 0000000..8154503
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/digitalFlop.vue
@@ -0,0 +1,214 @@
+<template>
+ <div id="digital-flop">
+ <div class="digital-flop-item" v-for="item in digitalFlopData" :key="item.title">
+ <div class="digital-flop-title">{{ item.title }}</div>
+ <div class="digital-flop">
+ <dv-digital-flop :config="item.number" style="width:100px;height:50px;" />
+ <div class="unit">{{ item.unit }}</div>
+ </div>
+ </div>
+
+ <dv-decoration-10 />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'DigitalFlop',
+ data() {
+ return {
+ digitalFlopData: []
+ }
+ },
+ methods: {
+ createData() {
+ const {
+ randomExtend
+ } = this
+
+ this.digitalFlopData = [{
+ title: '绠″吇閲岀▼',
+ number: {
+ number: [randomExtend(20000, 30000)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#4d99fc',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '鍏噷'
+ },
+ {
+ title: '妗ユ',
+ number: {
+ number: [randomExtend(20, 30)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#f46827',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '搴�'
+ },
+ {
+ title: '娑垫礊闅ч亾',
+ number: {
+ number: [randomExtend(20, 30)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鍖濋亾',
+ number: {
+ number: [randomExtend(10, 20)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#4d99fc',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '闅ч亾',
+ number: {
+ number: [randomExtend(5, 10)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#f46827',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鏈嶅姟鍖�',
+ number: {
+ number: [randomExtend(5, 10)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鏀惰垂绔�',
+ number: {
+ number: [randomExtend(5, 10)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#4d99fc',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '瓒呴檺绔�',
+ number: {
+ number: [randomExtend(5, 10)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#f46827',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鍋滆溅鍖�',
+ number: {
+ number: [randomExtend(5, 10)],
+ content: '{nt}',
+ textAlign: 'right',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ }
+ ]
+ },
+ randomExtend(minNum, maxNum) {
+ if (arguments.length === 1) {
+ return parseInt(Math.random() * minNum + 1, 10)
+ } else {
+ return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+ }
+ }
+ },
+ mounted() {
+ const {
+ createData
+ } = this
+
+ createData()
+
+ setInterval(createData, 30000)
+ }
+ }
+</script>
+
+<style lang="less">
+ #digital-flop {
+ position: relative;
+ height: 15%;
+ flex-shrink: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .dv-decoration-10 {
+ position: absolute;
+ width: 95%;
+ left: 2.5%;
+ height: 5px;
+ bottom: 0px;
+ }
+
+ .digital-flop-item {
+ width: 11%;
+ height: 80%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-left: 3px solid rgb(6, 30, 93);
+ border-right: 3px solid rgb(6, 30, 93);
+ }
+
+ .digital-flop-title {
+ font-size: 20px;
+ margin-bottom: 20px;
+ }
+
+ .digital-flop {
+ display: flex;
+ }
+
+ .unit {
+ margin-left: 10px;
+ display: flex;
+ align-items: flex-end;
+ box-sizing: border-box;
+ padding-bottom: 13px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png
new file mode 100644
index 0000000..dbcebae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/bg.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg
new file mode 100644
index 0000000..8e1c4f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png
new file mode 100644
index 0000000..dfbc8ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png
new file mode 100644
index 0000000..5e40905
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/map2.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png
new file mode 100644
index 0000000..255f69c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapCenterPoint.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png
new file mode 100644
index 0000000..bb6c0be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/img/mapPoint.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue
new file mode 100644
index 0000000..000fd32
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/index.vue
@@ -0,0 +1,119 @@
+<template>
+ <div id="data-view">
+ <dv-full-screen-container>
+ <top-header />
+ <div class="main-container">
+ <div class="left1" style="width: 20%;display:flex;flex-direction:column">
+ <dv-border-box-12>
+ <left1 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <left12 />
+ </dv-border-box-12>
+ </div>
+ <div class="left2" style="width: 20%;display:flex;flex-direction:column">
+ <dv-border-box-12>
+ <left2 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <left22 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <left23 />
+ </dv-border-box-12>
+ </div>
+ <div class="middle" style="width: 40%;display:flex;flex-direction:column">
+ <dv-border-box-1 style="height: 15%;">
+ <middle1 />
+ </dv-border-box-1>
+ <dv-border-box-8 style="height: 60%;">
+ <middle2 />
+ </dv-border-box-8>
+ <dv-border-box-1 style="height: 25%;">
+ <middle3 />
+ </dv-border-box-1>
+ </div>
+ <div class="right" style="width:20%;display:flex;flex-direction:column">
+ <dv-border-box-12>
+ <right1 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <right2 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <right3 />
+ </dv-border-box-12>
+ <dv-border-box-12>
+ <right4 />
+ </dv-border-box-12>
+ </div>
+ </div>
+ </dv-full-screen-container>
+ </div>
+</template>
+
+<script>
+ import topHeader from './topHeader'
+ import left1 from './left1'
+ import left12 from './left12'
+ import left2 from './left2'
+ import left22 from './left22'
+ import left23 from './left23'
+ import right1 from './right1'
+ import right2 from './right2'
+ import right3 from './right3'
+ import right4 from './right4'
+ import middle1 from './middle1'
+ import middle2 from './middle2'
+ import middle3 from './middle3'
+
+ export default {
+ name: 'DataView',
+ components: {
+ topHeader,
+ left1,
+ left12,
+ left2,
+ left22,
+ left23,
+ right1,
+ right2,
+ right3,
+ right4,
+ middle1,
+ middle2,
+ middle3
+ },
+ data() {
+ return {}
+ },
+ methods: {}
+ }
+</script>
+
+<style lang="less">
+ #data-view {
+ width: 100%;
+ height: 100%;
+ background-color: #030409;
+ color: #fff;
+
+ #dv-full-screen-container {
+ background-image: url('./img/bg.png');
+ background-size: 100% 100%;
+ box-shadow: 0 0 3px blue;
+ display: flex;
+ flex-direction: column;
+ }
+
+ .main-container {
+ // height: calc(~"100% - 80px");
+ // flex: 1;
+ height: 100%;
+ padding: 5px;
+ display: flex;
+ box-sizing: border-box;
+ flex-direction: row;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue
new file mode 100644
index 0000000..a706a81
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left1.vue
@@ -0,0 +1,70 @@
+<template>
+ <div id="left1">
+ <dv-scroll-board :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Left1',
+ data() {
+ return {
+ config: {
+ // header: ['鏃堕棿', '鐥呭淇℃伅', '鏁伴噺', '鏍囨'],
+ data: [
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж1鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;color:#32A1FB;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж2鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж3鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж4鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж5鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж6鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж7鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ],
+ [
+ '<span style="color:#37a2da;">杩愬煄甯傚紶闃垮Ж8鑰佷汉鍦╔XX鍏昏�佺ぞ鍖鸿喘涔颁簡xxx鏈嶅姟<span style="font-size:5px;">2019-07-02 17:25:00</span></span>'
+ ]
+ ],
+ // index: true,
+ // columnWidth: [45],
+ align: ['left'],
+ rowNum: 12,
+ // headerBGC: '#1981f6',
+ // headerHeight: 45,
+ oddRowBGC: 'rgba(0, 44, 81, 0.0)',
+ evenRowBGC: 'rgba(10, 29, 50, 0.0)'
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #left1 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .dv-scroll-board {
+ position: absolute;
+ top: 1%;
+ bottom: 0px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue
new file mode 100644
index 0000000..4d6ce24
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left12.vue
@@ -0,0 +1,87 @@
+<template>
+ <div id="left12">
+ <div class="ranking-board-title">
+ 鏈烘瀯璇勪及绛夌骇
+ <dv-decoration-6 style="width:200px;height:20px;" />
+ </div>
+ <dv-scroll-ranking-board class="board" :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Left12',
+ data() {
+ return {
+ config: {
+ data: [{
+ name: 'XXX鏈烘瀯',
+ value: 55
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 120
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 78
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 66
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 80
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 45
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 29
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 29
+ },
+ {
+ name: 'XXX鏈烘瀯',
+ value: 29
+ }
+ ],
+ unit: '鍒�',
+ rowNum: 8
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #left12 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .ranking-board-title {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .board {
+ width: 90%;
+ position: absolute;
+ top: 50px;
+ bottom: 40px;
+ padding: 0px 15px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue
new file mode 100644
index 0000000..fd87237
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left2.vue
@@ -0,0 +1,68 @@
+<template>
+ <div class="left2">
+ <div class="lc1-header">
+ 鏈嶅姟鏁版嵁
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-capsule-chart class="lc1-chart" :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Left2',
+ data() {
+ return {
+ config: {
+ data: [{
+ name: '鏈烘瀯鎬绘暟',
+ value: 150
+ },
+ {
+ name: '搴婁綅鎬绘暟',
+ value: 5000
+ },
+ {
+ name: '鑰佷汉鎬绘暟',
+ value: 10000
+ },
+ {
+ name: '鍛樺伐鎬绘暟',
+ value: 1000
+ }
+ ],
+ colors: ['#00baff', '#3de7c9', '#ffc530', '#469f4b'],
+ showValue: true,
+ unit: '鍗曚綅'
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .left2 {
+ width: 100%;
+ //height: 100%;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .lc1-header {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .lc1-chart {
+ width: 98%;
+ position: absolute;
+ top: 20%;
+ left: 1%;
+ bottom: 0px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue
new file mode 100644
index 0000000..baad4ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left22.vue
@@ -0,0 +1,152 @@
+<template>
+ <div class="left22">
+ <div class="chart-name">
+ 浜嬩欢缁熻
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-charts :option="option" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Left22',
+ data() {
+ return {
+ option: {
+ legend: {
+ data: [{
+ name: '鍟嗗搧璁㈠崟',
+ color: '#00baff'
+ },
+ {
+ name: '鍛煎彨',
+ color: '#ff5ca9'
+ },
+ {
+ name: '鏈嶅姟宸ュ崟',
+ color: '#3de7c9'
+ }
+ ],
+ textStyle: {
+ fill: '#fff'
+ }
+ },
+ xAxis: {
+ data: [
+ '12/01', '12/02', '12/03', '12/04', '12/05', '12/06', '12/07'
+ ],
+ axisLine: {
+ style: {
+ stroke: '#F6F8FA'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#F6F8FA'
+ }
+ },
+ axisTick: {
+ show: false
+ }
+ },
+ yAxis: {
+ data: 'value',
+ splitLine: {
+ show: false
+ },
+ axisLine: {
+ style: {
+ stroke: '#F6F8FA'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#F6F8FA'
+ }
+ },
+ axisTick: {
+ show: false
+ },
+ min: 0,
+ max: 8
+ },
+ series: [{
+ name: '鍟嗗搧璁㈠崟',
+ data: [
+ 2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5
+ ],
+ type: 'bar',
+ barStyle: {
+ fill: 'rgba(0, 186, 255, 0.4)'
+ }
+ },
+ {
+ name: '鍛煎彨',
+ data: [
+ 2.5, 3.5, 6.5, 6.5, 7.5, 6.5, 2.5
+ ],
+ type: 'line',
+ lineStyle: {
+ stroke: '#ff5ca9'
+ },
+ linePoint: {
+ radius: 4,
+ style: {
+ fill: '#ff5ca9',
+ stroke: 'transparent'
+ }
+ }
+ },
+ {
+ name: '鏈嶅姟宸ュ崟',
+ data: [
+ 1.3, 2.3, 5.3, 5.3, 6.3, 5.3, 1.3
+ ],
+ type: 'line',
+ smooth: true,
+ lineArea: {
+ show: true,
+ gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+ },
+ lineStyle: {
+ lineDash: [5, 5]
+ },
+ linePoint: {
+ radius: 4,
+ style: {
+ fill: '#00db95'
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .left22 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .chart-name {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .dv-charts-container {
+ width: 98%;
+ position: absolute;
+ top: 1%;
+ left: 1%;
+ bottom: 0px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue
new file mode 100644
index 0000000..b4069c0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/left23.vue
@@ -0,0 +1,50 @@
+<template>
+ <div id="left23">
+ <div class="water-level-chart-title">
+ 鏈烘瀯璇勪及杩涘害
+ <!-- <dv-decoration-12 style="width:200px;height:20px;" /> -->
+ </div>
+
+ <dv-decoration-9>66%</dv-decoration-9>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Left23',
+ data() {
+ return {}
+ }
+ }
+</script>
+
+<style lang="less">
+ #left23 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+ display: flex;
+ flex-direction: column;
+
+ .water-level-chart-title {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .dv-decoration-9 {
+ width: 80%;
+ height: 80%;
+ position: absolute;
+ left: 50%;
+ top: 52%;
+ transform: translate(-50%, -48%);
+ color: #6BD4E0;
+ font-weight: bold;
+ font-size: 40px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue
new file mode 100644
index 0000000..0928ea1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle1.vue
@@ -0,0 +1,121 @@
+<template>
+ <div id="middle1">
+ <div class="digital-flop-item" v-for="item in digitalFlopData" :key="item.title">
+ <div class="digital-flop">
+ <dv-digital-flop :config="item.number" />
+ </div>
+ <div class="digital-flop-title">{{ item.title }}</div>
+ </div>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Middle1',
+ data() {
+ return {
+ digitalFlopData: []
+ }
+ },
+ methods: {
+ createData() {
+ this.digitalFlopData = [{
+ title: '鏈烘瀯鎬绘暟',
+ number: {
+ number: [150],
+ content: '{nt}',
+ textAlign: 'center',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '搴婁綅鎬绘暟',
+ number: {
+ number: [40000],
+ content: '{nt}',
+ textAlign: 'center',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鑰佷汉鎬绘暟',
+ number: {
+ number: [98760],
+ content: '{nt}',
+ textAlign: 'center',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ },
+ {
+ title: '鍛樺伐鎬绘暟',
+ number: {
+ number: [1200],
+ content: '{nt}',
+ textAlign: 'center',
+ style: {
+ fill: '#40faee',
+ fontWeight: 'bold'
+ }
+ },
+ unit: '涓�'
+ }
+ ]
+ }
+ },
+ mounted() {
+ const {
+ createData
+ } = this
+
+ createData()
+ }
+ }
+</script>
+
+<style lang="less">
+ #middle1 {
+ height: 100%;
+ padding: 5px 20px 5px 20px;
+ flex-shrink: 0;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .digital-flop-item {
+ width: 100%;
+ //height: 60%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ border-left: 3px solid rgb(6, 30, 93);
+ border-right: 3px solid rgb(6, 30, 93);
+ }
+
+ .digital-flop-title {
+ font-size: 10px;
+ margin-bottom: 10px;
+ color: #40faee;
+ margin-top: -20px;
+ font-family: "寰蒋闆呴粦";
+ }
+
+ .digital-flop {
+ display: flex;
+ font-family: "榛戜綋";
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue
new file mode 100644
index 0000000..7e6e989
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle2.vue
@@ -0,0 +1,157 @@
+<template>
+ <div id="middle2">
+ <dv-flyline-chart-enhanced :config="config" :dev="true" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Middle2',
+ data() {
+ return {
+ config: {
+ points: [{
+ name: '杩愬煄',
+ coordinate: [0.43, 0.66],
+ halo: {
+ show: true
+ },
+ icon: {
+ src: require('./img/mapCenterPoint.png'),
+ width: 30,
+ height: 30
+ },
+ text: {
+ // show: false
+ }
+ },
+ {
+ name: '骞抽檰鍘�',
+ coordinate: [0.53, 0.80]
+ },
+ {
+ name: '鑺煄鍘�',
+ coordinate: [0.27, 0.91]
+ },
+ {
+ name: '姘告祹甯�',
+ coordinate: [0.14, 0.77]
+ },
+ {
+ name: '涓寸寳鍘�',
+ coordinate: [0.31, 0.54]
+ },
+ {
+ name: '澶忓幙',
+ coordinate: [0.55, 0.54]
+ },
+ {
+ name: '鍨f洸鍘�',
+ coordinate: [0.78, 0.42]
+ },
+ {
+ name: '闂诲枩鍘�',
+ coordinate: [0.55, 0.37]
+ },
+ {
+ name: '涓囪崳鍘�',
+ coordinate: [0.35, 0.33]
+ },
+ {
+ name: '缁涘幙',
+ coordinate: [0.73, 0.26]
+ },
+ {
+ name: '鏂扮粵鍘�',
+ coordinate: [0.55, 0.17]
+ },
+ {
+ name: '绋峰北鍘�',
+ coordinate: [0.43, 0.17]
+ },
+ {
+ name: '娌虫触甯�',
+ coordinate: [0.28, 0.18]
+ }
+ ],
+ lines: [{
+ source: '骞抽檰鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '鑺煄鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '姘告祹甯�',
+ target: '杩愬煄'
+ },
+ {
+ source: '涓寸寳鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '澶忓幙',
+ target: '杩愬煄'
+ },
+ {
+ source: '鍨f洸鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '闂诲枩鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '涓囪崳鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '缁涘幙',
+ target: '杩愬煄'
+ },
+ {
+ source: '鏂扮粵鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '绋峰北鍘�',
+ target: '杩愬煄'
+ },
+ {
+ source: '娌虫触甯�',
+ target: '杩愬煄'
+ }
+ ],
+ icon: {
+ show: true,
+ src: require('./img/mapPoint.png')
+ },
+ text: {
+ show: true
+ },
+ bgImgSrc: require('./img/map2.png')
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #middle2 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .dv-flyline-chart-enhanced {
+ width: 100%;
+ height: 100%;
+ // position: absolute;
+ // top: 5px;
+ // right: 5px;
+ // bottom: 5px;
+ // left: 5px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue
new file mode 100644
index 0000000..b2d06cb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/middle3.vue
@@ -0,0 +1,208 @@
+<template>
+ <div class="middle3">
+ <div class="bc-chart-item">
+ <div class="bcci-header">XXX鏈烘瀯1</div>
+ <dv-active-ring-chart :config="config1" />
+ <!-- <Label-Tag :config="labelConfig" /> -->
+ </div>
+ <dv-decoration-2 class="decoration-1" :reverse="true" style="width:5px;" />
+
+ <div class="bc-chart-item">
+ <div class="bcci-header">XXX鏈烘瀯2</div>
+ <dv-active-ring-chart :config="config2" />
+ <!-- <Label-Tag :config="labelConfig" /> -->
+ </div>
+
+ <dv-decoration-2 class="decoration-2" :reverse="true" style="width:5px;" />
+
+ <div class="bc-chart-item">
+ <div class="bcci-header">XXX鏈烘瀯3</div>
+ <dv-active-ring-chart :config="config3" />
+ <!-- <Label-Tag :config="labelConfig" /> -->
+ </div>
+
+ <dv-decoration-2 class="decoration-3" :reverse="true" style="width:5px;" />
+
+ <div class="bc-chart-item">
+ <div class="bcci-header">XXX鏈烘瀯4</div>
+ <dv-active-ring-chart :config="config4" />
+ <!-- <Label-Tag :config="labelConfig" /> -->
+ </div>
+
+ </div>
+</template>
+
+<script>
+ // import LabelTag from './LabelTag'
+
+ export default {
+ name: 'Middle3',
+ components: {
+ // LabelTag
+ },
+ data() {
+ return {
+ config1: {
+ data: [{
+ name: '搴婁綅',
+ value: 356
+ },
+ {
+ name: '鍗犲湴闈㈢Н',
+ value: 215
+ },
+ {
+ name: '鎶ょ悊浜哄憳',
+ value: 90
+ },
+ {
+ name: '鍏朵粬',
+ value: 317
+ }
+ ],
+ color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+ radius: '65%',
+ activeRadius: '70%',
+ showOriginValue: true,
+ activeTimeGap: 5000,
+ digitalFlopStyle: {
+ fontSize: 12
+ }
+ },
+
+ config2: {
+ data: [{
+ name: '搴婁綅',
+ value: 615
+ },
+ {
+ name: '鍗犲湴闈㈢Н',
+ value: 322
+ },
+ {
+ name: '鎶ょ悊浜哄憳',
+ value: 198
+ },
+ {
+ name: '鍏朵粬',
+ value: 80
+ }
+ ],
+ color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+ radius: '65%',
+ activeRadius: '70%',
+ showOriginValue: true,
+ activeTimeGap: 5000,
+ digitalFlopStyle: {
+ fontSize: 12
+ }
+ },
+
+ config3: {
+ data: [{
+ name: '搴婁綅',
+ value: 452
+ },
+ {
+ name: '鍗犲湴闈㈢Н',
+ value: 512
+ },
+ {
+ name: '鎶ょ悊浜哄憳',
+ value: 333
+ },
+ {
+ name: '鍏朵粬',
+ value: 255
+ }
+ ],
+ color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+ radius: '65%',
+ activeRadius: '70%',
+ showOriginValue: true,
+ activeTimeGap: 5000,
+ digitalFlopStyle: {
+ fontSize: 12
+ }
+ },
+
+ config4: {
+ data: [{
+ name: '搴婁綅',
+ value: 156
+ },
+ {
+ name: '鍗犲湴闈㈢Н',
+ value: 415
+ },
+ {
+ name: '鎶ょ悊浜哄憳',
+ value: 90
+ },
+ {
+ name: '鍏朵粬',
+ value: 210
+ }
+ ],
+ color: ['#00baff', '#3de7c9', '#fff', '#ffc530', '#469f4b'],
+ radius: '65%',
+ activeRadius: '70%',
+ showOriginValue: true,
+ activeTimeGap: 5000,
+ digitalFlopStyle: {
+ fontSize: 12
+ }
+ }
+ // labelConfig: {
+ // data: ['鏀惰垂绔�', '鐩戞帶涓績', '閬撹矾澶栧満', '鍏朵粬']
+ // }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .middle3 {
+ width: 100%;
+ height: 100%;
+ display: flex;
+ position: relative;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .bc-chart-item {
+ width: 25%;
+ height: 100%;
+ padding-top: 20px;
+ box-sizing: border-box;
+ }
+
+ .bcci-header {
+ height: 50px;
+ text-align: center;
+ line-height: 50px;
+ font-size: 14px;
+ color: #6BD4E0;
+ }
+
+ .dv-active-ring-chart {
+ height: calc(~"100% - 80px");
+ font-size: 5px;
+ }
+
+ .label-tag {
+ height: 30px;
+ }
+
+ .active-ring-name {
+ color: #6BD4E0 !important;
+ font-size: 3px !important;
+ }
+
+ .decoration-1,
+ .decoration-2,
+ .decoration-3 {
+ display: absolute;
+ left: 0%;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue
new file mode 100644
index 0000000..eff2713
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/rankingBoard.vue
@@ -0,0 +1,81 @@
+<template>
+ <div id="ranking-board">
+ <div class="ranking-board-title">宸℃煡涓婃姤璁板綍鏁伴噺</div>
+ <dv-scroll-ranking-board :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'RankingBoard',
+ data() {
+ return {
+ config: {
+ data: [{
+ name: '鏃ュ父鍏绘姢',
+ value: 55
+ },
+ {
+ name: '浜ら�氫簨鏁�',
+ value: 120
+ },
+ {
+ name: '璺潰',
+ value: 78
+ },
+ {
+ name: '妗ラ��',
+ value: 66
+ },
+ {
+ name: '璁℃棩宸�',
+ value: 80
+ },
+ {
+ name: '璺熀',
+ value: 45
+ },
+ {
+ name: '浜ゅ畨璁炬柦',
+ value: 29
+ },
+ {
+ name: '闄ら洩',
+ value: 29
+ },
+ {
+ name: '缁垮寲',
+ value: 29
+ }
+ ],
+ rowNum: 9
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #ranking-board {
+ width: 20%;
+ box-shadow: 0 0 3px blue;
+ display: flex;
+ flex-direction: column;
+ background-color: rgba(6, 30, 93, 0.5);
+ border-top: 2px solid rgba(1, 153, 209, .5);
+ box-sizing: border-box;
+ padding: 0px 30px;
+
+ .ranking-board-title {
+ font-weight: bold;
+ height: 50px;
+ display: flex;
+ align-items: center;
+ font-size: 20px;
+ }
+
+ .dv-scroll-ranking-board {
+ flex: 1;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue
new file mode 100644
index 0000000..f085869
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right1.vue
@@ -0,0 +1,109 @@
+<template>
+ <div id="right1">
+ <div class="rose-chart-title">
+ 骞撮緞鍒嗗竷
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-charts :option="option" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Right1',
+ data() {
+ return {
+ option: {}
+ }
+ },
+ methods: {
+ createData() {
+ const {
+ randomExtend
+ } = this
+
+ this.option = {
+ series: [{
+ type: 'pie',
+ radius: '80%',
+ roseSort: false,
+ data: [{
+ name: '60-69宀�',
+ value: randomExtend(40, 70)
+ },
+ {
+ name: '70-79宀�',
+ value: randomExtend(20, 30)
+ },
+ {
+ name: '80-89宀�',
+ value: randomExtend(10, 50)
+ },
+ {
+ name: '90-99宀�',
+ value: randomExtend(5, 20)
+ },
+ {
+ name: '鍏朵粬',
+ value: randomExtend(40, 50)
+ }
+ ],
+ insideLabel: {
+ show: true
+ },
+ outsideLabel: {
+ formatter: '{name} {percent}%',
+ labelLineEndLength: 10,
+ style: {
+ fill: '#fff'
+ },
+ labelLineStyle: {
+ stroke: '#fff'
+ }
+ }
+ // roseType: true
+ }],
+ color: ['#00baff', '#fa3600', '#3de7c9', '#ff724c', '#ffc530', '#469f4b', '#a02200', '#5d1400', '#b72700']
+ }
+ },
+ randomExtend(minNum, maxNum) {
+ if (arguments.length === 1) {
+ return parseInt(Math.random() * minNum + 1, 10)
+ } else {
+ return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10)
+ }
+ }
+ },
+ mounted() {
+ const {
+ createData
+ } = this
+
+ createData()
+
+ setInterval(createData, 30000)
+ }
+ }
+</script>
+
+<style lang="less">
+ #right1 {
+ width: 100%;
+ height: 100%;
+ //box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .rose-chart-title {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .dv-charts-container {
+ height: calc(~"100% - 50px");
+ padding-top: 13%;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue
new file mode 100644
index 0000000..d073fb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right2.vue
@@ -0,0 +1,65 @@
+<template>
+ <div class="right2">
+ <div class="chart-name">
+ 鑰佷汉绫诲瀷
+ <dv-decoration-1 style="width:200px;height:20px;" />
+ </div>
+ <dv-conical-column-chart :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Right2',
+ data() {
+ return {
+ config: {
+ data: [{
+ name: '涓変簲鑰佷汉',
+ value: 3500
+ },
+ {
+ name: '浜斾繚鑰佷汉',
+ value: 2500
+ },
+ {
+ name: '绀句細浠e吇',
+ value: 2000
+ },
+ {
+ name: '鍏朵粬',
+ value: 1000
+ }
+ ],
+ img: [],
+ showValue: true
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .right2 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .chart-name {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .dv-conical-column-chart {
+ // width: 98%;
+ // position: absolute;
+ // top: 20%;
+ // left: 2px;
+ // bottom: 0px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue
new file mode 100644
index 0000000..a778c4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right3.vue
@@ -0,0 +1,72 @@
+<template>
+ <div class="right3">
+ <div class="lc1-header">
+ 搴婁綅鎯呭喌
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-capsule-chart class="lc1-chart" :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Right3',
+ data() {
+ return {
+ config: {
+ data: [{
+ name: '浣跨敤',
+ value: 3000
+ },
+ {
+ name: '绌洪棽',
+ value: 1000
+ },
+ {
+ name: '棰勭害',
+ value: 5000
+ },
+ {
+ name: '鍖呮埧',
+ value: 200
+ },
+ {
+ name: '鍏朵粬',
+ value: 1000
+ }
+ ],
+ colors: ['#00baff', '#3de7c9', '#ffc530', '#FA3600', '#44934b'],
+ showValue: true,
+ unit: '寮�'
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .right3 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .lc1-header {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .lc1-chart {
+ width: 98%;
+ position: absolute;
+ top: 20%;
+ left: 1%;
+ bottom: 0px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue
new file mode 100644
index 0000000..967d067
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/right4.vue
@@ -0,0 +1,106 @@
+<template>
+ <div class="right4">
+ <div class="chart-name">
+ 鏈嶅姟鍣ㄧ姸鎬�
+ <dv-decoration-3 style="width:200px;height:20px;" />
+ </div>
+ <dv-charts :option="option" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'Right4',
+ data() {
+ return {
+ option: {
+ // title: {
+ // text: '鍛ㄩ攢鍞瓒嬪娍'
+ // },
+ xAxis: {
+ // name: '绗簩鍛�',
+ data: ['鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚', '鍛ㄦ棩'],
+ axisLine: {
+ style: {
+ stroke: '#F6F8FA'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#F6F8FA'
+ }
+ },
+ axisTick: {
+ show: false
+ }
+ },
+ yAxis: {
+ // name: '閿�鍞',
+ data: 'value',
+ splitLine: {
+ show: false
+ },
+ axisLine: {
+ style: {
+ stroke: '#F6F8FA'
+ }
+ },
+ axisLabel: {
+ style: {
+ fill: '#F6F8FA'
+ }
+ },
+ axisTick: {
+ show: false
+ }
+ },
+ series: [{
+ data: [1200, 2230, 1900, 2100, 3500, 4200, 3985],
+ type: 'line',
+ lineArea: {
+ show: true,
+ gradient: ['rgba(55, 162, 218, 0.6)', 'rgba(55, 162, 218, 0)']
+ },
+ label: {
+ show: true,
+ formatter: '{value}'
+ },
+ smooth: true,
+ lineStyle: {
+ lineDash: [5, 5]
+ },
+ linePoint: {
+ radius: 0
+ }
+ }]
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .right4 {
+ width: 100%;
+ height: 100%;
+ box-sizing: border-box;
+ background-color: rgba(6, 30, 93, 0.5);
+
+ .chart-name {
+ position: absolute;
+ left: 10px;
+ font-size: 14px;
+ top: 10px;
+ color: #6BD4E0;
+ }
+
+ .dv-charts-container {
+ //height: calc(~"100% - 40px");
+ //padding-top: 35px 10px 10px 10px;
+ height: 100%;
+ top: 10%;
+ left: 4%;
+ position: absolute;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue
new file mode 100644
index 0000000..a64ca29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/scrollBoard.vue
@@ -0,0 +1,48 @@
+<template>
+ <div id="scroll-board">
+ <dv-scroll-board :config="config" />
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'ScrollBoard',
+ data() {
+ return {
+ config: {
+ header: ['鏃堕棿', '鐥呭淇℃伅', '鏁伴噺', '鏍囨'],
+ data: [
+ ['2019-07-01 19:25:00', '璺潰鍗卞-鏉炬暎', '5', 'xxxxxxx'],
+ ['2019-07-02 17:25:00', '璺潰鍗卞-璺潰娌规薄娓呯悊', '13', 'xxxxxxx'],
+ ['2019-07-03 16:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '6', 'xxxxxxx'],
+ ['2019-07-04 15:25:00', '璺熀鍗卞-闃插皹缃�', '2', 'xxxxxxx'],
+ ['2019-07-05 14:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '1', 'xxxxxxx'],
+ ['2019-07-06 13:25:00', '璺潰鍗卞-鏉炬暎', '3', 'xxxxxxx'],
+ ['2019-07-07 12:25:00', '璺熀鍗卞-闃插皹缃�', '4', 'xxxxxxx'],
+ ['2019-07-08 11:25:00', '璺潰鍗卞-璺潰娌规薄娓呯悊', '2', 'xxxxxxx'],
+ ['2019-07-09 10:25:00', '浜ゅ畨璁炬柦-浜ら�氭爣蹇楃墝缁撴瀯', '5', 'xxxxxxx'],
+ ['2019-07-10 09:25:00', '璺熀鍗卞-闃插皹缃�', '3', 'xxxxxxx']
+ ],
+ index: true,
+ columnWidth: [50, 170, 300],
+ align: ['center'],
+ rowNum: 7,
+ headerBGC: '#1981f6',
+ headerHeight: 45,
+ oddRowBGC: 'rgba(0, 44, 81, 0.8)',
+ evenRowBGC: 'rgba(10, 29, 50, 0.8)'
+ }
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #scroll-board {
+ width: 50%;
+ box-sizing: border-box;
+ margin-left: 20px;
+ height: 100%;
+ overflow: hidden;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue
new file mode 100644
index 0000000..38c8cac
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/screenMonitor/topHeader.vue
@@ -0,0 +1,103 @@
+<template>
+ <div id="top-header">
+ <dv-decoration-8 class="header-left-decoration" />
+ <dv-decoration-5 class="header-center-decoration" />
+ <dv-decoration-8 class="header-right-decoration" :reverse="true" />
+ <div class="center-title">鏅烘収鍏昏�佹湇鍔℃暟鎹腑蹇�</div>
+ <div class="title-time">{{ dateFormat(date) }}</div>
+ </div>
+</template>
+
+<script>
+ export default {
+ name: 'TopHeader',
+ data() {
+ return {
+ date: new Date()
+ }
+ },
+ methods: {
+ dateFormat(time) {
+ var date = new Date(time)
+ return date.toLocaleString('zh-Hans-CN', {
+ // timeZone:['UTC'],
+ weekday: 'long',
+ hours12: false,
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit',
+ second: '2-digit'
+ })
+
+ // var year = date.getFullYear();
+ // /* 鍦ㄦ棩鏈熸牸寮忎腑锛屾湀浠芥槸浠�0寮�濮嬬殑锛屽洜姝よ鍔�0
+ // * 浣跨敤涓夊厓琛ㄨ揪寮忓湪灏忎簬10鐨勫墠闈㈠姞0锛屼互杈惧埌鏍煎紡缁熶竴 濡� 09:11:05
+ // * */
+ // var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+ // var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+ // var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+ // var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+ // var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+ // var show_day = new Array('鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�', '鏄熸湡鏃�');
+ // // 鎷兼帴
+ // return year + "骞�" + month + "鏈�" + day + "鏃� " + hours + ":" + minutes + ":" + seconds;
+ }
+ },
+ mounted() {
+ const _this = this
+ this.timer = setInterval(() => {
+ _this.date = new Date()
+ }, 1000)
+ },
+ beforeDestroy() {
+ if (this.timer) {
+ clearInterval(this.timer)
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ #top-header {
+ position: relative;
+ width: 100%;
+ height: 100px;
+ display: flex;
+ justify-content: space-between;
+ flex-shrink: 0;
+
+ .header-center-decoration {
+ width: 40%;
+ height: 80px;
+ margin-top: 30px;
+ }
+
+ .header-left-decoration,
+ .header-right-decoration {
+ width: 25%;
+ height: 60px;
+ }
+
+ .center-title {
+ position: absolute;
+ font-size: 28px;
+ font-weight: bold;
+ left: 50%;
+ top: 15px;
+ transform: translateX(-50%);
+ color: #40FAEE;
+ }
+
+ .title-time {
+ position: absolute;
+ font-size: 10px;
+ //font-weight: bold;
+ left: 50%;
+ top: 55px;
+ color: #6BD4E0;
+ transform: translateX(-50%);
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue
new file mode 100644
index 0000000..5195d55
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/addForm.vue
@@ -0,0 +1,117 @@
+锘�<template>
+ <a-modal
+ title="鏂板瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+ TestStudent3Add
+ } from '@/api/modular/main/test/TestStudent3Manage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+
+ });
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ }
+ }
+ TestStudent3Add(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue
new file mode 100644
index 0000000..1f7bd3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/editForm.vue
@@ -0,0 +1,140 @@
+锘�<template>
+ <a-modal
+ title="缂栬緫瀛︾敓淇℃伅琛�3-鍒樻枃濂�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瀛︾敓濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ鐢熷鍚�" v-decorator="['name']" />
+ </a-form-item>
+ <a-form-item label="瀛︾敓骞撮緞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input-number placeholder="璇疯緭鍏ュ鐢熷勾榫�" style="width: 100%" v-decorator="['age']" />
+ </a-form-item>
+ <a-form-item label="闆惰姳閽�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ラ浂鑺遍挶" v-decorator="['hasMoney']" />
+ </a-form-item>
+ <a-form-item label="鏄惁鍦ㄦ牎" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-switch v-decorator="['startName', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎬у埆" v-decorator="['gender']">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鍑虹敓鏃ユ湡" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍑虹敓鏃ユ湡" v-decorator="['brithDate']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item v-show="false"><a-input v-decorator="['id']" /></a-form-item>
+ <a-form-item label="鍒涘缓鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鍒涘缓鏃堕棿" v-decorator="['createdTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鏇存柊鏃堕棿" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨鏇存柊鏃堕棿" v-decorator="['updatedTime']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+ </a-form-item>
+ <a-form-item label="鍒涘缓鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�" v-decorator="['createdUserName']" />
+ </a-form-item>
+ <a-form-item label="淇敼鑰呭悕绉�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�" v-decorator="['updatedUserName']" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+ import {
+ TestStudent3Edit
+ } from '@/api/modular/main/test/TestStudent3Manage'
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ genderData: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ moment,
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+ this.$nextTick(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ age: record.age,
+ hasMoney: record.hasMoney,
+ startName: record.startName,
+ gender: record.gender,
+ brithDate: record.brithDate,
+ createdTime: record.createdTime,
+ updatedTime: record.updatedTime,
+ createdUserName: record.createdUserName,
+ updatedUserName: record.updatedUserName
+ }
+ )
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ for (const key in values) {
+ if (values[key] == null) continue
+ if (typeof (values[key]) === 'object') {
+ values[key] = JSON.stringify(values[key])
+ this.record[key] = values[key]
+ } else {
+ this.record[key] = values[key]
+ }
+ }
+ TestStudent3Edit(this.record).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.record)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ }else{
+ this.confirmLoading = false
+ }
+ });
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue
new file mode 100644
index 0000000..d0a187a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/excelForm.vue
@@ -0,0 +1,181 @@
+锘�<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @cancel="handleCancel"
+ @ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @click="testStudent3DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@/utils/util'
+
+ import { TestStudent3FromExcel, TestStudent3DownloadExcelTemplate} from '@/api/modular/main/test/TestStudent3Manage'
+ import { sysExcelTemplateGetColumnList } from '@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("testStudent3DownloadExcelTemplate")
+ window.downloadFile = this.testStudent3DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "TestStudent3"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ TestStudent3FromExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ testStudent3DownloadExcelTemplate() {
+ TestStudent3DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue
new file mode 100644
index 0000000..caeb8f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/main/test/TestStudent3/index.vue
@@ -0,0 +1,503 @@
+锘�<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+
+ <div class="table-page-search-wrapper" v-if="hasPerm('TestStudent3:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓濮撳悕">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ鐢熷鍚�"/>
+ </a-form-item>
+ </a-col><a-col :md="8" :sm="24">
+ <a-form-item label="瀛︾敓骞撮緞">
+ <a-input-number v-model="queryParam.age" style="width: 100%" allow-clear placeholder="璇疯緭鍏ュ鐢熷勾榫�"/>
+ </a-form-item>
+ </a-col><template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="闆惰姳閽�">
+ <a-input v-model="queryParam.hasMoney" allow-clear placeholder="璇疯緭鍏ラ浂鑺遍挶"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏄惁鍦ㄦ牎">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.startName" placeholder="璇烽�夋嫨鏄惁鍦ㄦ牎">
+ <a-select-option v-for="(item,index) in startNameData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎬у埆">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.gender" placeholder="璇烽�夋嫨鎬у埆">
+ <a-select-option v-for="(item,index) in genderData" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col> <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍑虹敓鏃ユ湡">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.brithDate" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangebrithDate"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.createdTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangecreatedTime"/>
+
+ </a-form-item>
+ </a-col>
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ <!--鏃堕棿鑼冨洿-->
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏇存柊鏃堕棿">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.updatedTime" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @change="onChangeupdatedTime"/>
+
+ </a-form-item>
+ </a-col>
+
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍒涘缓鑰呭悕绉�">
+ <a-input v-model="queryParam.createdUserName" allow-clear placeholder="璇疯緭鍏ュ垱寤鸿�呭悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="淇敼鑰呭悕绉�">
+ <a-input v-model="queryParam.updatedUserName" allow-clear placeholder="璇疯緭鍏ヤ慨鏀硅�呭悕绉�"/>
+ </a-form-item>
+ </a-col> </template>
+
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+
+ </a-row>
+ </a-form>
+ </div>
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('TestStudent3:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" v-if="hasPerm('TestStudent3:exportExcel')" icon="download" @click="TestStudent3ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ </div>
+ </template>
+ <span slot="startNamescopedSlots" slot-scope="text">
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ </span>
+ <span slot="genderscopedSlots" slot-scope="text">
+ {{ 'sex' | dictType(text) }}
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <excel-form ref="excelForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable } from '@/components'
+ import moment from 'moment'
+ import { TestStudent3Page, TestStudent3Delete, TestStudent3ToExcel } from '@/api/modular/main/test/TestStudent3Manage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@/utils/exportToExcel'
+ import { downloadFile } from '@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ queryParam: {},
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`,
+ },
+ {
+ title: '瀛︾敓濮撳悕',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'name'
+ },
+ {
+ title: '瀛︾敓骞撮緞',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '80px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'age'
+ },
+ {
+ title: '闆惰姳閽�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'hasMoney'
+ },
+ {
+ title: '鏄惁鍦ㄦ牎',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'startName',
+ scopedSlots: { customRender: 'startNamescopedSlots' }
+ },
+ {
+ title: '鎬у埆',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'gender',
+ scopedSlots: { customRender: 'genderscopedSlots' }
+ },
+ {
+ title: '鍑虹敓鏃ユ湡',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'brithDate'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏇存柊鏃堕棿',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedTime'
+ },
+ {
+ title: '鍒涘缓鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '淇敼鑰呭悕绉�',
+ align: 'center',
+ customHeaderCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ customCell: () => {
+ return {
+ style: {
+ 'min-width': '120px'//鏈�灏忓垪瀹借缃�
+ }
+ }
+ },
+ sorter: true,
+ dataIndex: 'updatedUserName'
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return TestStudent3Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ return res.data
+ })
+ },
+ genderData: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ const startNameOption = this.$options
+ this.startNameData = startNameOption.filters['dictData']('yes_true_false')
+ const genderOption = this.$options
+ this.genderData = genderOption.filters['dictData']('sex')
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ moment,
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ TestStudent3Delete (record) {
+ TestStudent3Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ TestStudent3ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ TestStudent3Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ onChangebrithDate(date, dateString) {
+ this.queryParam.brithDate = dateString
+ },
+ onChangecreatedTime(date, dateString) {
+ this.queryParam.createdTime = dateString
+ },
+ onChangeupdatedTime(date, dateString) {
+ this.queryParam.updatedTime = dateString
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/README.md b/iWare_RawMaterialWarehouse_Web/src/views/system/README.md
new file mode 100644
index 0000000..46aab4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/README.md
@@ -0,0 +1 @@
+/** 姝ゆ枃浠跺す涓嬩唬鐮佸敖閲忎笉瑕佸姩锛屽簳搴у崌绾х洿鎺ヨ鐩栨浛鎹� **/
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue
new file mode 100644
index 0000000..e2ffd4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/Index.vue
@@ -0,0 +1,308 @@
+<template>
+ <div class="page-header-index-wide page-header-wrapper-grid-content-main">
+ <a-row :gutter="24">
+ <a-col :md="24" :lg="7">
+ <a-card :bordered="false">
+ <div class="account-center-avatarHolder">
+ <div class="avatar">
+ <img :src="avatar()">
+ </div>
+ <div class="username">{{ nickname() }}</div>
+ <div class="bio">娴风撼鐧惧窛锛屾湁瀹逛箖澶�</div>
+ </div>
+ <div class="account-center-detail">
+ <p>
+ <i class="title"></i>浜や簰涓撳
+ </p>
+ <p>
+ <i class="group"></i>铓傝殎閲戞湇锛嶆煇鏌愭煇浜嬩笟缇わ紞鏌愭煇骞冲彴閮紞鏌愭煇鎶�鏈儴锛峌ED
+ </p>
+ <p>
+ <i class="address"></i>
+ <span>娴欐睙鐪�</span>
+ <span>鏉窞甯�</span>
+ </p>
+ </div>
+ <a-divider/>
+
+ <div class="account-center-tags">
+ <div class="tagsTitle">鏍囩</div>
+ <div>
+ <template v-for="(tag, index) in tags">
+ <a-tooltip v-if="tag.length > 20" :key="tag" :title="tag">
+ <a-tag
+ :key="tag"
+ :closable="index !== 0"
+ >{{ `${tag.slice(0, 20)}...` }}</a-tag>
+ </a-tooltip>
+ <a-tag
+ v-else
+ :key="tag"
+ :closable="index !== 0"
+ >{{ tag }}</a-tag>
+ </template>
+ <a-input
+ v-if="tagInputVisible"
+ ref="tagInput"
+ type="text"
+ size="small"
+ :style="{ width: '78px' }"
+ :value="tagInputValue"
+ @change="handleInputChange"
+ @blur="handleTagInputConfirm"
+ @keyup.enter="handleTagInputConfirm"
+ />
+ <a-tag v-else @click="showTagInput" style="background: #fff; borderStyle: dashed;">
+ <a-icon type="plus"/>New Tag
+ </a-tag>
+ </div>
+ </div>
+ <a-divider :dashed="true"/>
+
+ <div class="account-center-team">
+ <div class="teamTitle">鍥㈤槦</div>
+ <a-spin :spinning="teamSpinning">
+ <div class="members">
+ <a-row>
+ <a-col :span="12" v-for="(item, index) in teams" :key="index">
+ <a>
+ <a-avatar size="small" :src="item.avatar"/>
+ <span class="member">{{ item.name }}</span>
+ </a>
+ </a-col>
+ </a-row>
+ </div>
+ </a-spin>
+ </div>
+ </a-card>
+ </a-col>
+ <a-col :md="24" :lg="17">
+ <a-card
+ style="width:100%"
+ :bordered="false"
+ :tabList="tabListNoTitle"
+ :activeTabKey="noTitleKey"
+ @tabChange="key => handleTabChange(key, 'noTitleKey')"
+ >
+ <article-page v-if="noTitleKey === 'article'"></article-page>
+ <app-page v-else-if="noTitleKey === 'app'"></app-page>
+ <project-page v-else-if="noTitleKey === 'project'"></project-page>
+ </a-card>
+ </a-col>
+ </a-row>
+ </div>
+</template>
+
+<script>
+import { PageView, RouteView } from '@/layouts'
+import { AppPage, ArticlePage, ProjectPage } from './page'
+import { mapGetters } from 'vuex'
+
+export default {
+ components: {
+ RouteView,
+ PageView,
+ AppPage,
+ ArticlePage,
+ ProjectPage
+ },
+ data () {
+ return {
+ tags: ['寰堟湁鎯虫硶鐨�', '涓撴敞璁捐', '杈', '澶ч暱鑵�', '宸濆瀛�', '娴风撼鐧惧窛'],
+
+ tagInputVisible: false,
+ tagInputValue: '',
+
+ teams: [],
+ teamSpinning: true,
+
+ tabListNoTitle: [
+ {
+ key: 'article',
+ tab: '鏂囩珷(8)'
+ },
+ {
+ key: 'app',
+ tab: '搴旂敤(8)'
+ },
+ {
+ key: 'project',
+ tab: '椤圭洰(8)'
+ }
+ ],
+ noTitleKey: 'app'
+ }
+ },
+ mounted () {
+ this.getTeams()
+ },
+ methods: {
+ ...mapGetters(['nickname', 'avatar']),
+
+ getTeams () {
+ this.teams = [{
+ id: 1,
+ name: '绉戝鎼爾缁�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ {
+ id: 2,
+ name: '绋嬪簭鍛樻棩甯�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+ },
+ {
+ id: 1,
+ name: '璁捐澶╁洟',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+ },
+ {
+ id: 1,
+ name: '涓簩灏戝コ鍥�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+ },
+ {
+ id: 1,
+ name: '楠椾綘瀛﹁绠楁満',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+ }
+ ]
+ this.teamSpinning = false
+ },
+
+ handleTabChange (key, type) {
+ this[type] = key
+ },
+
+ handleTagClose (removeTag) {
+ const tags = this.tags.filter(tag => tag !== removeTag)
+ this.tags = tags
+ },
+
+ showTagInput () {
+ this.tagInputVisible = true
+ this.$nextTick(() => {
+ this.$refs.tagInput.focus()
+ })
+ },
+
+ handleInputChange (e) {
+ this.tagInputValue = e.target.value
+ },
+
+ handleTagInputConfirm () {
+ const inputValue = this.tagInputValue
+ let tags = this.tags
+ if (inputValue && !tags.includes(inputValue)) {
+ tags = [...tags, inputValue]
+ }
+
+ Object.assign(this, {
+ tags,
+ tagInputVisible: false,
+ tagInputValue: ''
+ })
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.page-header-wrapper-grid-content-main {
+ width: 100%;
+ height: 100%;
+ min-height: 100%;
+ transition: 0.3s;
+
+ .account-center-avatarHolder {
+ text-align: center;
+ margin-bottom: 24px;
+
+ & > .avatar {
+ margin: 0 auto;
+ width: 104px;
+ height: 104px;
+ margin-bottom: 20px;
+ border-radius: 50%;
+ overflow: hidden;
+ img {
+ height: 100%;
+ width: 100%;
+ }
+ }
+
+ .username {
+ color: rgba(0, 0, 0, 0.85);
+ font-size: 20px;
+ line-height: 28px;
+ font-weight: 500;
+ margin-bottom: 4px;
+ }
+ }
+
+ .account-center-detail {
+ p {
+ margin-bottom: 8px;
+ padding-left: 26px;
+ position: relative;
+ }
+
+ i {
+ position: absolute;
+ height: 14px;
+ width: 14px;
+ left: 0;
+ top: 4px;
+ background: url(https://gw.alipayobjects.com/zos/rmsportal/pBjWzVAHnOOtAUvZmZfy.svg);
+ }
+
+ .title {
+ background-position: 0 0;
+ }
+ .group {
+ background-position: 0 -22px;
+ }
+ .address {
+ background-position: 0 -44px;
+ }
+ }
+
+ .account-center-tags {
+ .ant-tag {
+ margin-bottom: 8px;
+ }
+ }
+
+ .account-center-team {
+ .members {
+ a {
+ display: block;
+ margin: 12px 0;
+ line-height: 24px;
+ height: 24px;
+ .member {
+ font-size: 14px;
+ color: rgba(0, 0, 0, 0.65);
+ line-height: 24px;
+ max-width: 100px;
+ vertical-align: top;
+ margin-left: 12px;
+ transition: all 0.3s;
+ display: inline-block;
+ }
+ &:hover {
+ span {
+ color: #1890ff;
+ }
+ }
+ }
+ }
+ }
+
+ .tagsTitle,
+ .teamTitle {
+ font-weight: 500;
+ color: rgba(0, 0, 0, 0.85);
+ margin-bottom: 12px;
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue
new file mode 100644
index 0000000..853aeab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/App.vue
@@ -0,0 +1,113 @@
+<template>
+ <div class="app-list">
+ <a-list
+ :grid="{ gutter: 24, lg: 3, md: 2, sm: 1, xs: 1 }"
+ :dataSource="dataSource">
+ <a-list-item slot="renderItem" slot-scope="item">
+ <a-card :hoverable="true">
+ <a-card-meta>
+ <div style="margin-bottom: 3px" slot="title">{{ item.title }}</div>
+ <a-avatar class="card-avatar" slot="avatar" :src="item.avatar" size="small"/>
+ <div class="meta-cardInfo" slot="description">
+ <div>
+ <p>娲昏穬鐢ㄦ埛</p>
+ <p>
+ <span>{{ item.activeUser }}<span>涓�</span></span>
+ </p>
+ </div>
+ <div>
+ <p>鏂板鐢ㄦ埛</p>
+ <p>{{ item.newUser | NumberFormat }}</p>
+ </div>
+ </div>
+ </a-card-meta>
+ <template class="ant-card-actions" slot="actions">
+ <a>
+ <a-icon type="download"/>
+ </a>
+ <a>
+ <a-icon type="edit"/>
+ </a>
+ <a>
+ <a-icon type="share-alt"/>
+ </a>
+ <a>
+ <a-dropdown>
+ <a class="ant-dropdown-link" href="javascript:;">
+ <a-icon type="ellipsis"/>
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a href="javascript:;">1st menu item</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">2nd menu item</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">3rd menu item</a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </a>
+ </template>
+ </a-card>
+ </a-list-item>
+ </a-list>
+
+ </div>
+</template>
+
+<script>
+const dataSource = []
+for (let i = 0; i < 11; i++) {
+ dataSource.push({
+ title: 'Alipay',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+ activeUser: 17,
+ newUser: 1700
+ })
+}
+
+export default {
+ name: 'Article',
+ components: {},
+ data () {
+ return {
+ dataSource
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .app-list {
+
+ .meta-cardInfo {
+ zoom: 1;
+ margin-top: 16px;
+
+ > div {
+ position: relative;
+ text-align: left;
+ float: left;
+ width: 50%;
+
+ p {
+ line-height: 32px;
+ font-size: 24px;
+ margin: 0;
+
+ &:first-child {
+ color: rgba(0, 0, 0, .45);
+ font-size: 12px;
+ line-height: 20px;
+ margin-bottom: 4px;
+ }
+ }
+
+ }
+ }
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue
new file mode 100644
index 0000000..bac1ded
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Article.vue
@@ -0,0 +1,91 @@
+<template>
+ <a-list
+ size="large"
+ rowKey="id"
+ :loading="loading"
+ itemLayout="vertical"
+ :dataSource="data"
+ >
+ <a-list-item :key="item.id" slot="renderItem" slot-scope="item">
+ <a-list-item-meta>
+ <a slot="title" href="https://vue.ant.design/">{{ item.title }}</a>
+ <template slot="description">
+ <span>
+ <a-tag>Ant Design</a-tag>
+ <a-tag>璁捐璇█</a-tag>
+ <a-tag>铓傝殎閲戞湇</a-tag>
+ </span>
+ </template>
+ </a-list-item-meta>
+ <article-list-content :description="item.description" :owner="item.owner" :avatar="item.avatar" :href="item.href" :updateAt="item.updatedAt" />
+ </a-list-item>
+ <div slot="footer" v-if="data.length > 0" style="text-align: center; margin-top: 16px;">
+ <a-button @click="loadMore" :loading="loadingMore">鍔犺浇鏇村</a-button>
+ </div>
+ </a-list>
+</template>
+
+<script>
+import { ArticleListContent } from '@/components'
+
+export default {
+ name: 'Article',
+ components: {
+ ArticleListContent
+ },
+ data () {
+ return {
+ loading: true,
+ loadingMore: false,
+ data: []
+ }
+ },
+ mounted () {
+ this.getList()
+ },
+ methods: {
+ getList () {
+ this.data = [
+ {
+ updatedAt: '2021-05-01 12:00:00',
+ title: '灏忚',
+ owner: '淇炲疂灞�',
+ description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+ href: 'https://xiaonuo.vip',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ updatedAt: '2021-05-01 12:00:00',
+ title: '灏忚',
+ owner: '寰愮帀绁�',
+ description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+ href: 'https://xiaonuo.vip',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ updatedAt: '2021-05-01 12:00:00',
+ title: '灏忚',
+ owner: '钁e闆�',
+ description: 'snowy鏄皬璇哄洟闃熶骇鍝�',
+ href: 'https://xiaonuo.vip',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ]
+ this.loading = false
+ },
+ loadMore () {
+ this.loadingMore = false
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue
new file mode 100644
index 0000000..24dfb29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/Project.vue
@@ -0,0 +1,214 @@
+<template>
+ <div class="ant-pro-pages-account-projects-cardList">
+ <a-list :loading="loading" :data-source="data" :grid="{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }">
+ <a-list-item slot="renderItem" slot-scope="item">
+ <a-card class="ant-pro-pages-account-projects-card" hoverable>
+ <img slot="cover" :src="item.cover" :alt="item.title" />
+ <a-card-meta :title="item.title">
+ <template slot="description">
+ <ellipsis :length="50">{{ item.description }}</ellipsis>
+ </template>
+ </a-card-meta>
+ <div class="cardItemContent">
+ <span>{{ item.updatedAt | fromNow }}</span>
+ <div class="avatarList">
+ <avatar-list size="mini">
+ <avatar-list-item
+ v-for="(member, i) in item.members"
+ :key="`${item.id}-avatar-${i}`"
+ :src="member.avatar"
+ :tips="member.name"
+ />
+ </avatar-list>
+ </div>
+ </div>
+ </a-card>
+ </a-list-item>
+ </a-list>
+ </div>
+</template>
+
+<script>
+import moment from 'moment'
+import { TagSelect, StandardFormRow, Ellipsis, AvatarList } from '@/components'
+const TagSelectOption = TagSelect.Option
+const AvatarListItem = AvatarList.AvatarItem
+
+export default {
+ name: 'Project',
+ components: {
+ AvatarList,
+ AvatarListItem,
+ Ellipsis,
+ TagSelect,
+ TagSelectOption,
+ StandardFormRow
+ },
+ data () {
+ return {
+ data: [],
+ form: this.$form.createForm(this),
+ loading: true
+ }
+ },
+ filters: {
+ fromNow (date) {
+ return moment(date).fromNow()
+ }
+ },
+ mounted () {
+ this.getList()
+ },
+ methods: {
+ handleChange (value) {
+ },
+ getList () {
+ this.data = [
+ {
+ id: '123',
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
+ content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+ message: '娑堟伅',
+ description: '灏忚妗嗘灦浜у搧',
+ href: 'https://xiaonuo.vip',
+ title: '灏忚',
+ updatedAt: '2021-05-01 12:00:00',
+ members: [
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ]
+ },
+ {
+ id: '1234',
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
+ content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+ message: '娑堟伅',
+ description: '灏忚妗嗘灦浜у搧',
+ href: 'https://xiaonuo.vip',
+ title: '灏忚',
+ updatedAt: '2021-05-01 12:00:00',
+ members: [
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ]
+ },
+ {
+ id: '12345',
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
+ content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+ message: '娑堟伅',
+ description: '灏忚妗嗘灦浜у搧',
+ href: 'https://xiaonuo.vip',
+ title: '灏忚',
+ updatedAt: '2021-05-01 12:00:00',
+ members: [
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ]
+ },
+ {
+ id: '1236',
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',
+ content: '娈佃惤绀烘剰锛氳殏铓侀噾鏈嶈璁″钩鍙� ant.design锛岀敤鏈�灏忕殑宸ヤ綔閲忥紝鏃犵紳鎺ュ叆铓傝殎閲戞湇鐢熸�侊紝鎻愪緵璺ㄨ秺璁捐涓庡紑鍙戠殑浣撻獙瑙e喅鏂规銆�',
+ message: '娑堟伅',
+ description: '灏忚妗嗘灦浜у搧',
+ href: 'https://xiaonuo.vip',
+ title: '灏忚',
+ updatedAt: '2021-05-01 12:00:00',
+ members: [
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
+ name: '鏇蹭附涓�',
+ id: 'member1'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
+ name: '鐜嬫槶鍚�',
+ id: 'member2'
+ },
+ {
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
+ name: '钁e濞�',
+ id: 'member3'
+ }
+ ]
+ }
+ ]
+ this.loading = false
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .ant-pro-pages-account-projects-cardList {
+ margin-top: 24px;
+
+ /deep/ .ant-card-meta-title {
+ margin-bottom: 4px;
+ }
+
+ /deep/ .ant-card-meta-description {
+ height: 44px;
+ overflow: hidden;
+ line-height: 22px;
+ }
+
+ .cardItemContent {
+ display: flex;
+ height: 20px;
+ margin-top: 16px;
+ margin-bottom: -4px;
+ line-height: 20px;
+
+ > span {
+ flex: 1 1;
+ color: rgba(0,0,0,.45);
+ font-size: 12px;
+ }
+
+ /deep/ .ant-pro-avatar-list {
+ flex: 0 1 auto;
+ }
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js
new file mode 100644
index 0000000..b579b6a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/center/page/index.js
@@ -0,0 +1,5 @@
+import AppPage from './App'
+import ArticlePage from './Article'
+import ProjectPage from './Project'
+
+export { AppPage, ArticlePage, ProjectPage }
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue
new file mode 100644
index 0000000..ffeb1b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/AvatarModal.vue
@@ -0,0 +1,182 @@
+<template>
+
+ <a-modal
+ title="淇敼澶村儚"
+ :visible="visible"
+ :maskClosable="false"
+ :confirmLoading="confirmLoading"
+ :width="800"
+ :footer="null"
+ @cancel="cancelHandel">
+ <a-row>
+ <a-col :xs="24" :md="12" :style="{height: '350px'}">
+ <vue-cropper
+ ref="cropper"
+ :img="options.img"
+ :info="true"
+ :autoCrop="options.autoCrop"
+ :autoCropWidth="options.autoCropWidth"
+ :autoCropHeight="options.autoCropHeight"
+ :fixedBox="options.fixedBox"
+ @realTime="realTime"
+ >
+ </vue-cropper>
+ </a-col>
+ <a-col :xs="24" :md="12" :style="{height: '350px'}">
+ <div class="avatar-upload-preview">
+ <img :src="previews.url" :style="previews.img"/>
+ </div>
+ </a-col>
+ </a-row>
+ <br>
+ <a-row>
+ <a-col :lg="2" :md="2">
+ <a-upload name="file" :beforeUpload="beforeUpload" :showUploadList="false">
+ <a-button icon="upload">閫夋嫨鍥剧墖</a-button>
+ </a-upload>
+ </a-col>
+ <a-col :lg="{span: 1, offset: 2}" :md="2">
+ <a-button icon="plus" @click="changeScale(1)"/>
+ </a-col>
+ <a-col :lg="{span: 1, offset: 1}" :md="2">
+ <a-button icon="minus" @click="changeScale(-1)"/>
+ </a-col>
+ <a-col :lg="{span: 1, offset: 1}" :md="2">
+ <a-button icon="undo" @click="rotateLeft"/>
+ </a-col>
+ <a-col :lg="{span: 1, offset: 1}" :md="2">
+ <a-button icon="redo" @click="rotateRight"/>
+ </a-col>
+ <a-col :lg="{span: 2, offset: 6}" :md="2">
+ <a-button type="primary" @click="finish('blob')" :loading="uploading">淇濆瓨</a-button>
+ </a-col>
+ </a-row>
+ </a-modal>
+
+</template>
+<script>
+ import { sysFileInfoUploadAvatar } from '@/api/modular/system/fileManage'
+ import { sysUserUpdateAvatar } from '@/api/modular/system/userManage'
+
+ export default {
+ data () {
+ return {
+ visible: false,
+ id: null,
+ confirmLoading: false,
+ fileList: [],
+ uploading: false,
+ options: {
+ img: '',
+ autoCrop: true,
+ autoCropWidth: 200,
+ autoCropHeight: 200,
+ fixedBox: true
+ },
+ previews: {}
+ }
+ },
+ methods: {
+ edit (id) {
+ this.visible = true
+ this.id = id
+ /* 鑾峰彇鍘熷澶村儚 */
+ },
+ close () {
+ this.id = null
+ this.visible = false
+ },
+ cancelHandel () {
+ this.close()
+ },
+ changeScale (num) {
+ num = num || 1
+ this.$refs.cropper.changeScale(num)
+ },
+ rotateLeft () {
+ this.$refs.cropper.rotateLeft()
+ },
+ rotateRight () {
+ this.$refs.cropper.rotateRight()
+ },
+ beforeUpload (file) {
+ this.fileList = file
+ const reader = new FileReader()
+ // 鎶夾rray Buffer杞寲涓篵lob 濡傛灉鏄痓ase64涓嶉渶瑕�
+ // 杞寲涓篵ase64
+ reader.readAsDataURL(file)
+ reader.onload = () => {
+ this.options.img = reader.result
+ }
+ // 杞寲涓篵lob
+ // reader.readAsArrayBuffer(file)
+ return false
+ },
+
+ // 涓婁紶鍥剧墖锛堢偣鍑讳笂浼犳寜閽級
+ finish (type) {
+ if (type === 'blob') {
+ this.uploading = true
+ this.$refs.cropper.getCropBlob((data) => {
+ const files = new window.File(
+ [data],
+ this.fileList.name,
+ { type: this.fileList.type }
+ )
+ const formData = new FormData()
+ formData.append('file', files)
+ sysFileInfoUploadAvatar(formData).then((res) => {
+ if (res.success) {
+ this.updateAvatar(res.data)
+ this.$emit('ok', res.data)
+ } else {
+ this.uploading = false
+ this.$message.error(res.message)
+ }
+ })
+ })
+ } else {
+ this.$refs.cropper.getCropData((data) => {
+ })
+ }
+ },
+ updateAvatar (data) {
+ const params = {
+ id: this.id,
+ avatar: data
+ }
+ sysUserUpdateAvatar(params).then((res) => {
+ this.uploading = false
+ if (res.success) {
+ this.visible = false
+ this.$message.success('澶村儚涓婁紶淇敼鎴愬姛')
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ },
+ realTime (data) {
+ this.previews = data
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+
+ .avatar-upload-preview {
+ position: absolute;
+ top: 50%;
+ transform: translate(50%, -50%);
+ width: 200px;
+ height: 200px;
+ border-radius: 50%;
+ box-shadow: 0 0 4px #ccc;
+ overflow: hidden;
+
+ img {
+ width: 100%;
+ height: 100%;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue
new file mode 100644
index 0000000..5de0073
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/BaseSetting.vue
@@ -0,0 +1,238 @@
+<template>
+ <div class="account-settings-info-view">
+ <a-row :gutter="16">
+ <a-col :md="24" :lg="16">
+
+ <a-form layout="vertical" :form="form">
+ <a-form-item label="鏄电О">
+ <a-input placeholder="缁欒嚜宸辫捣涓樀绉板惂" v-decorator="['nickName']" />
+ </a-form-item>
+ <a-form-item label="鐢熸棩">
+ <a-date-picker
+ placeholder="璇烽�夋嫨鐢熸棩"
+ @change="onChange"
+ style="width: 100%"
+ v-decorator="['birthday', {rules: [{required: true, message: '璇烽�夋嫨鐢熸棩锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鎬у埆">
+ <a-radio-group v-decorator="['sex',{rules: [{ required: true, message: '璇烽�夋嫨鎬у埆锛�' }]}]">
+ <a-radio v-for="(item,index) in sexData" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item label="鎵嬫満">
+ <a-input placeholder="璇疯緭鍏ユ墜鏈哄彿" v-decorator="['phone', {rules: [{required: true, message: '璇疯緭鍏ユ墜鏈哄彿锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鐢佃瘽">
+ <a-input placeholder="璇疯緭鍏ョ數璇�" v-decorator="['tel']" />
+ </a-form-item>
+ <a-form-item label="鐢靛瓙閭欢">
+ <a-input
+ placeholder="璇疯緭鍏ョ數瀛愰偖浠跺湴鍧�"
+ v-decorator="['email', {type: 'email',message: '璇疯緭鍏ユ纭殑閭鍙�',rules: [{required: true, message: '璇疯緭鍏ユ纭殑閭鍙凤紒'}]}]" />
+ </a-form-item>
+ <a-form-item>
+ <a-button type="primary" @click="submitUserInfo">鏇存柊鍩烘湰淇℃伅</a-button>
+ </a-form-item>
+ </a-form>
+
+ </a-col>
+ <a-col :md="24" :lg="8" :style="{ minHeight: '180px' }">
+ <div class="ant-upload-preview" @click="$refs.modal.edit(userInfo.id)">
+ <a-icon type="cloud-upload-o" class="upload-icon" />
+ <div class="mask">
+ <a-icon type="plus" />
+ </div>
+ <img :src="option.img" />
+ </div>
+ </a-col>
+
+ </a-row>
+
+ <avatar-modal ref="modal" @ok="setavatar" />
+
+ </div>
+</template>
+
+<script>
+ import store from '@/store'
+ import AvatarModal from './AvatarModal'
+ import {
+ mapGetters
+ } from 'vuex'
+ import moment from 'moment'
+ import {
+ sysUserUpdateInfo
+ } from '@/api/modular/system/userManage'
+ import {
+ sysFileInfoPreview
+ } from '@/api/modular/system/fileManage'
+ // mapActions
+ export default {
+ components: {
+ AvatarModal
+ },
+ data() {
+ return {
+ // cropper
+ preview: {},
+ form: this.$form.createForm(this),
+ sexData: [],
+ option: {
+ img: null,
+ info: true,
+ size: 1,
+ outputType: 'jpeg',
+ canScale: false,
+ autoCrop: true,
+ // 鍙湁鑷姩鎴浘寮�鍚� 瀹藉害楂樺害鎵嶇敓鏁�
+ autoCropWidth: 180,
+ autoCropHeight: 180,
+ fixedBox: true,
+ // 寮�鍚搴﹀拰楂樺害姣斾緥
+ fixed: true,
+ fixedNumber: [1, 1],
+ // userInfo
+ birthdayString: ''
+ }
+ }
+ },
+ computed: {
+ ...mapGetters(['userInfo'])
+ },
+ mounted() {
+ this.initUserInfo()
+ },
+ methods: {
+ // ...mapActions(['GetInfo']),
+ /**
+ * 鍒濆鍖栫敤鎴蜂俊鎭�
+ */
+ initUserInfo() {
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ birthday: moment(this.userInfo.birthday, 'YYYY-MM-DD'),
+ nickName: this.userInfo.nickName,
+ sex: this.userInfo.sex.toString(),
+ email: this.userInfo.email,
+ phone: this.userInfo.phone,
+ tel: this.userInfo.tel
+ })
+ this.birthdayString = moment(this.userInfo.birthday).format('YYYY-MM-DD')
+ if (this.userInfo.avatar != null) {
+ sysFileInfoPreview({
+ id: this.userInfo.avatar
+ }).then((res) => {
+ this.option.img = window.URL.createObjectURL(new Blob([res]))
+ }).catch((err) => {
+ this.$message.error('棰勮閿欒锛�' + err.message)
+ })
+ } else {
+ this.option.img = '/avatar2.jpg'
+ }
+ // this.option.img = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + this.userInfo.avatar
+ this.getSexData()
+ }, 100)
+ },
+ /**
+ * 鏃ユ湡闇�鍗曠嫭杞崲
+ */
+ onChange(date, dateString) {
+ this.birthdayString = dateString
+ },
+ submitUserInfo() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ validateFields((err, values) => {
+ if (!err) {
+ values.birthday = this.birthdayString
+ values.id = this.userInfo.id
+ sysUserUpdateInfo(values).then((res) => {
+ if (res.success) {
+ this.$message.success('涓汉淇℃伅鏇存柊鎴愬姛')
+ store.dispatch('GetInfo').then(() => {})
+ } else {
+ this.$message.error(JSON.stringify(res.message))
+ }
+ })
+ }
+ })
+ },
+ getSexData() {
+ this.sexData = this.$options.filters['dictData']('sex')
+ },
+ setavatar(url) {
+ sysFileInfoPreview({
+ id: url
+ }).then((res) => {
+ this.option.img = window.URL.createObjectURL(new Blob([res]))
+ }).catch((err) => {
+ this.$message.error('棰勮閿欒锛�' + err.message)
+ })
+ // this.option.img = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + url
+ store.dispatch('GetInfo').then(() => {})
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+ .avatar-upload-wrapper {
+ height: 200px;
+ width: 100%;
+ }
+
+ .ant-upload-preview {
+ position: relative;
+ margin: 0 auto;
+ width: 100%;
+ max-width: 180px;
+ height: 180px;
+ border-radius: 50%;
+ box-shadow: 0 0 4px #ccc;
+
+ .upload-icon {
+ position: absolute;
+ top: 0;
+ right: 10px;
+ font-size: 1.4rem;
+ padding: 0.5rem;
+ background: rgba(222, 221, 221, 0.7);
+ border-radius: 50%;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ }
+
+ .mask {
+ opacity: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, 0.4);
+ cursor: pointer;
+ transition: opacity 0.4s;
+
+ &:hover {
+ opacity: 1;
+ }
+
+ i {
+ font-size: 2rem;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -1rem;
+ margin-top: -1rem;
+ color: #d6d6d6;
+ }
+ }
+
+ img,
+ .mask {
+ width: 100%;
+ max-width: 180px;
+ height: 100%;
+ border-radius: 50%;
+ overflow: hidden;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue
new file mode 100644
index 0000000..cbea7fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Binding.vue
@@ -0,0 +1,25 @@
+<template>
+ <a-list
+ itemLayout="horizontal"
+ :dataSource="data"
+ >
+
+ </a-list>
+</template>
+
+<script>
+export default {
+ data () {
+ return {
+ data: []
+ }
+ },
+ methods: {
+
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue
new file mode 100644
index 0000000..c235570
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Custom.vue
@@ -0,0 +1,75 @@
+<script>
+import { colorList } from '@/components/SettingDrawer/settingConfig'
+import ASwitch from 'ant-design-vue/es/switch'
+import AList from 'ant-design-vue/es/list'
+import AListItem from 'ant-design-vue/es/list/Item'
+import { mixin } from '@/utils/mixin'
+
+const Meta = AListItem.Meta
+
+export default {
+ components: {
+ AListItem,
+ AList,
+ ASwitch,
+ Meta
+ },
+ mixins: [mixin],
+ data () {
+ return {
+ }
+ },
+ filters: {
+ themeFilter (theme) {
+ const themeMap = {
+ 'dark': '鏆楄壊',
+ 'light': '鐧借壊'
+ }
+ return themeMap[theme]
+ }
+ },
+ methods: {
+ colorFilter (color) {
+ const c = colorList.find(o => o.color === color)
+ return c && c.key
+ },
+
+ onChange (checked) {
+ if (checked) {
+ this.$store.dispatch('ToggleTheme', 'dark')
+ } else {
+ this.$store.dispatch('ToggleTheme', 'light')
+ }
+ }
+ },
+ render () {
+ return (
+ <AList itemLayout="horizontal">
+ <AListItem>
+ <Meta>
+ <a slot="title">椋庢牸閰嶈壊</a>
+ <span slot="description">
+ 鏁翠綋椋庢牸閰嶈壊璁剧疆
+ </span>
+ </Meta>
+ <div slot="actions">
+ <ASwitch checkedChildren="鏆楄壊" unCheckedChildren="鐧借壊" defaultChecked={this.navTheme === 'dark' && true || false} onChange={this.onChange} />
+ </div>
+ </AListItem>
+ <AListItem>
+ <Meta>
+ <a slot="title">涓婚鑹�</a>
+ <span slot="description">
+ 椤甸潰椋庢牸閰嶈壊锛� <a domPropsInnerHTML={ this.colorFilter(this.primaryColor) }/>
+ </span>
+ </Meta>
+ </AListItem>
+ </AList>
+ )
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue
new file mode 100644
index 0000000..8db2efb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Index.vue
@@ -0,0 +1,155 @@
+<template>
+ <div class="page-header-index-wide">
+ <a-card :bordered="false" :bodyStyle="{ padding: '16px 0', height: '100%' }" :style="{ height: '100%' }">
+ <div class="account-settings-info-main" :class="device">
+ <div class="account-settings-info-left">
+ <a-menu
+ :mode="device == 'mobile' ? 'horizontal' : 'inline'"
+ :style="{ border: '0', width: device == 'mobile' ? '560px' : 'auto'}"
+ :selectedKeys="selectedKeys"
+ type="inner"
+ @openChange="onOpenChange"
+ >
+ <a-menu-item key="/account/settings/base">
+ <router-link :to="{ name: 'BaseSettings' }">
+ 鍩烘湰璁剧疆
+ </router-link>
+ </a-menu-item>
+ <a-menu-item key="/account/settings/security">
+ <router-link :to="{ name: 'SecuritySettings' }">
+ 瀹夊叏璁剧疆
+ </router-link>
+ </a-menu-item>
+ <a-menu-item key="/account/settings/custom">
+ <router-link :to="{ name: 'CustomSettings' }">
+ 涓�у寲
+ </router-link>
+ </a-menu-item>
+ <a-menu-item key="/account/settings/binding">
+ <router-link :to="{ name: 'BindingSettings' }">
+ 璐︽埛缁戝畾
+ </router-link>
+ </a-menu-item>
+ <a-menu-item key="/account/settings/notification">
+ <router-link :to="{ name: 'NotificationSettings' }">
+ 鏂版秷鎭�氱煡
+ </router-link>
+ </a-menu-item>
+ </a-menu>
+ </div>
+ <div class="account-settings-info-right">
+ <div class="account-settings-info-title">
+ <span>{{ $route.meta.title }}</span>
+ </div>
+ <route-view></route-view>
+ </div>
+ </div>
+ </a-card>
+ </div>
+</template>
+
+<script>
+import { PageView, RouteView } from '@/layouts'
+import { mixinDevice } from '@/utils/mixin.js'
+
+export default {
+ components: {
+ RouteView,
+ PageView
+ },
+ mixins: [mixinDevice],
+ data () {
+ return {
+ // horizontal inline
+ mode: 'inline',
+
+ openKeys: [],
+ selectedKeys: [],
+
+ // cropper
+ preview: {},
+ option: {
+ img: '/avatar2.jpg',
+ info: true,
+ size: 1,
+ outputType: 'jpeg',
+ canScale: false,
+ autoCrop: true,
+ // 鍙湁鑷姩鎴浘寮�鍚� 瀹藉害楂樺害鎵嶇敓鏁�
+ autoCropWidth: 180,
+ autoCropHeight: 180,
+ fixedBox: true,
+ // 寮�鍚搴﹀拰楂樺害姣斾緥
+ fixed: true,
+ fixedNumber: [1, 1]
+ },
+
+ pageTitle: ''
+ }
+ },
+ mounted () {
+ this.updateMenu()
+ },
+ methods: {
+ onOpenChange (openKeys) {
+ this.openKeys = openKeys
+ },
+ updateMenu () {
+ const routes = this.$route.matched.concat()
+ this.selectedKeys = [ routes.pop().path ]
+ }
+ },
+ watch: {
+ '$route' (val) {
+ this.updateMenu()
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+ .account-settings-info-main {
+ width: 100%;
+ display: flex;
+ height: 100%;
+ overflow: auto;
+
+ &.mobile {
+ display: block;
+
+ .account-settings-info-left {
+ border-right: unset;
+ border-bottom: 1px solid #e8e8e8;
+ width: 100%;
+ height: 50px;
+ overflow-x: auto;
+ overflow-y: scroll;
+ }
+ .account-settings-info-right {
+ padding: 20px 40px;
+ }
+ }
+
+ .account-settings-info-left {
+ border-right: 1px solid #e8e8e8;
+ width: 224px;
+ }
+
+ .account-settings-info-right {
+ flex: 1 1;
+ padding: 8px 40px;
+
+ .account-settings-info-title {
+ color: rgba(0,0,0,.85);
+ font-size: 20px;
+ font-weight: 500;
+ line-height: 28px;
+ margin-bottom: 12px;
+ }
+ .account-settings-info-view {
+ padding-top: 12px;
+ }
+ }
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue
new file mode 100644
index 0000000..cbea7fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Notification.vue
@@ -0,0 +1,25 @@
+<template>
+ <a-list
+ itemLayout="horizontal"
+ :dataSource="data"
+ >
+
+ </a-list>
+</template>
+
+<script>
+export default {
+ data () {
+ return {
+ data: []
+ }
+ },
+ methods: {
+
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue
new file mode 100644
index 0000000..2d3b650
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/Security.vue
@@ -0,0 +1,70 @@
+<template>
+ <div>
+ <a-list
+ itemLayout="horizontal"
+ :dataSource="data"
+ >
+ <a-list-item slot="renderItem" slot-scope="item, MenuIndex" :key="MenuIndex">
+ <a-list-item-meta>
+ <a slot="title">{{ item.title }}</a>
+ <span slot="description">
+ <span class="security-list-description">{{ item.description }}</span>
+ <span v-if="item.value"> : </span>
+ <span class="security-list-value">{{ item.value }}</span>
+ </span>
+ </a-list-item-meta>
+ <template v-if="item.actions">
+ <a slot="actions" @click="item.actions.callback">{{ item.actions.title }}</a>
+ </template>
+ </a-list-item>
+ </a-list>
+ <upd-pwd ref="updPwd"/>
+ </div>
+</template>
+
+<script>
+ import { mapGetters } from 'vuex'
+ import UpdPwd from './securityItem/updPwd'
+ export default {
+ components: {
+ UpdPwd
+ },
+ data () {
+ return {
+ data: []
+ }
+ },
+ created () {
+ if (this.hasPerm('sysUser:updatePwd')) {
+ const updPwdMenu = {
+ title: '璐︽埛瀵嗙爜',
+ description: '褰撳墠瀵嗙爜寮哄害',
+ value: '寮�',
+ actions: { title: '淇敼',
+ callback: () => {
+ this.$refs.updPwd.open(this.userInfo.id)
+ }
+ }
+ }
+ this.data.push(updPwdMenu)
+ }
+ const encryptedPhone = { title: '瀵嗕繚鎵嬫満', description: '宸茬粦瀹氭墜鏈�', value: '138****8293', actions: { title: '淇敼', callback: () => { this.$message.success('This is a message of success') } } }
+ const encryptedProblem = { title: '瀵嗕繚闂', description: '鏈缃瘑淇濋棶棰橈紝瀵嗕繚闂鍙湁鏁堜繚鎶よ处鎴峰畨鍏�', value: '', actions: { title: '璁剧疆', callback: () => { this.$message.error('This is a message of error') } } }
+ const encryptedEmail = { title: '澶囩敤閭', description: '宸茬粦瀹氶偖绠�', value: 'ant***sign.com', actions: { title: '淇敼', callback: () => { this.$message.warning('This is message of warning') } } }
+ const encryptedMfa = { title: 'MFA 璁惧', description: '鏈粦瀹� MFA 璁惧锛岀粦瀹氬悗锛屽彲浠ヨ繘琛屼簩娆$‘璁�', value: '', actions: { title: '缁戝畾', callback: () => { this.$message.info('This is a normal message') } } }
+ this.data.push(encryptedPhone)
+ this.data.push(encryptedProblem)
+ this.data.push(encryptedEmail)
+ this.data.push(encryptedMfa)
+ },
+ computed: {
+ ...mapGetters(['userInfo'])
+ },
+ methods: {
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue
new file mode 100644
index 0000000..62f4ee5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/account/settings/securityItem/updPwd.vue
@@ -0,0 +1,118 @@
+<template>
+ <a-modal
+ title="淇敼瀵嗙爜"
+ :visible="visible_updPwd"
+ :confirm-loading="confirmLoading"
+ @ok="handleOkUpdPwd"
+ @cancel="handleCancel">
+ <a-form :form="formUpdPwd">
+ <a-form-item label="鍘熷瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ師瀵嗙爜"
+ type="password"
+ v-decorator="['password', {rules: [{required: true, message: '璇疯緭鍏ュ師瀵嗙爜锛�'}]}]" />
+ </a-form-item>
+ <a-form-item label="鏂板瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ユ柊瀵嗙爜"
+ type="password"
+ v-decorator="['newPassword', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'},{
+ validator: validateToNextPassword,
+ },]}]" />
+ </a-form-item>
+ <a-form-item label="閲嶅鏂板瘑鐮�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇峰啀娆¤緭鍏ユ柊瀵嗙爜"
+ type="password"
+ v-decorator="['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ユ柊瀵嗙爜锛�'},
+ {
+ validator: compareToFirstPassword,
+ }]}]" />
+ </a-form-item>
+ </a-form>
+ </a-modal>
+
+</template>
+
+<script>
+ import {
+ sysUserUpdatePwd
+ } from '@/api/modular/system/userManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ confirmLoading: false,
+ visible_updPwd: false,
+ userId: '',
+ formUpdPwd: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ open(id) {
+ this.userId = id
+ this.visible_updPwd = true
+ },
+ handleOkUpdPwd() {
+ const {
+ formUpdPwd: {
+ validateFields
+ }
+ } = this
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.confirmLoading = true
+ values.id = this.userId
+ sysUserUpdatePwd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('淇敼鎴愬姛')
+ this.handleCancel()
+ } else {
+ this.$message.error('淇敼澶辫触锛�' + res.message)
+ }
+ // eslint-disable-next-line handle-callback-err
+ }).finally((err) => {
+ this.confirmLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.visible_updPwd = false
+ },
+ compareToFirstPassword(rule, value, callback) {
+ const formUpdPwd = this.formUpdPwd
+ if (value && value !== formUpdPwd.getFieldValue('newPassword')) {
+ // eslint-disable-next-line standard/no-callback-literal
+ callback('璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒')
+ } else {
+ callback()
+ }
+ },
+ validateToNextPassword(rule, value, callback) {
+ const formUpdPwd = this.formUpdPwd
+ if (value && this.confirmDirty) {
+ formUpdPwd.validateFields(['confirm'], {
+ force: true
+ })
+ }
+ callback()
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue
new file mode 100644
index 0000000..0c699b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/addForm.vue
@@ -0,0 +1,91 @@
+<template>
+ <a-modal
+ title="鏂板搴旂敤"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-input v-decorator="['active']" />
+ </a-form-item>
+ <a-form-item
+ label="搴旂敤鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysAppAdd } from '@/api/modular/system/appManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add () {
+ this.visible = true
+ this.form.getFieldDecorator('active', { initialValue: 'N' })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysAppAdd(values).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.handleCancel()
+ this.$emit('ok', values)
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue
new file mode 100644
index 0000000..9378fe2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/editForm.vue
@@ -0,0 +1,116 @@
+<template>
+ <a-modal
+ title="搴旂敤缂栬緫"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form" >
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-input v-decorator="['active']" />
+ </a-form-item>
+ <a-form-item
+ label="搴旂敤鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ簲鐢ㄥ悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ >
+ <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysAppEdit } from '@/api/modular/system/appManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ visibleDef: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ sort: record.sort,
+ active: record.active
+ }
+ )
+ }, 100)
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysAppEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue
new file mode 100644
index 0000000..35e897e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/app/index.vue
@@ -0,0 +1,294 @@
+/* eslint-disable eqeqeq */
+<template>
+<div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysApp:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="搴旂敤鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ簲鐢ㄥ悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onChange }">
+ <template slot="operator" v-if="hasPerm('sysApp:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysApp:add')">鏂板搴旂敤</a-button>
+ </div>
+ </template>
+ <span slot="active" slot-scope="text">
+ {{ activeFilter(text) }}
+ </span>
+ <span slot="status" slot-scope="text,record">
+ <a-popconfirm placement="top" :title="text===0? '纭畾鍋滅敤璇ュ簲鐢紵':'纭畾鍚敤璇ュ簲鐢紵'" @confirm="() => editAppStatus(text,record)">
+ <a>{{ statusFilter(text) }}</a>
+ </a-popconfirm>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysApp:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysApp:edit') & hasPerm('sysApp:delete')" />
+ <a-popconfirm v-if="hasPerm('sysApp:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysAppDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ <a-divider type="vertical" v-if="hasPerm('sysApp:setAsDefault') & hasPerm('sysApp:delete') & record.active == 'N' || hasPerm('sysApp:edit') & hasPerm('sysApp:setAsDefault') & record.active == 'N'" />
+ <a-popconfirm
+ v-if="hasPerm('sysApp:setAsDefault') & record.active == 'N'"
+ placement="topRight"
+ title="璁剧疆涓洪粯璁ゅ簲鐢紵"
+ @confirm="() => sysDefault(record)">
+ <a>璁句负榛樿</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-spin>
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ STable,
+ XCard
+ } from '@/components'
+ import {
+ getAppPage,
+ sysAppDelete,
+ sysAppSetAsDefault,
+ sysAppChangeStatus
+ } from '@/api/modular/system/appManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import editForm from './editForm'
+ import addForm from './addForm'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ editForm,
+ addForm
+ },
+ data() {
+ return {
+ // description: '闈㈠寘灞戣鏄�',
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '搴旂敤鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鏄惁榛樿',
+ dataIndex: 'active',
+ scopedSlots: {
+ customRender: 'active'
+ }
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getAppPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ loading: false,
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDict: [],
+ activeDict: []
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysApp:edit') || this.hasPerm('sysApp:delete') || this.hasPerm('sysApp:setAsDefault')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '200px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ activeFilter(active) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.activeDict.filter(item => item.code == active)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ statusFilter(status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDict.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'yes_or_no'
+ }).then((res) => {
+ this.activeDict = res.data
+ })
+ sysDictTypeDropDown({
+ code: 'common_status'
+ }).then((res) => {
+ this.statusDict = res.data
+ })
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ sysDefault(record) {
+ this.loading = true
+ sysAppSetAsDefault({
+ id: record.id
+ }).then((res) => {
+ this.loading = false
+ if (res.success) {
+ this.$message.success('璁剧疆鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('璁剧疆澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鍒犻櫎搴旂敤
+ */
+ sysAppDelete(record) {
+ this.loading = true
+ sysAppDelete(record).then((res) => {
+ this.loading = false
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ editAppStatus(code, record) {
+ // eslint-disable-next-line no-unused-vars
+ const status = 0
+ // eslint-disable-next-line eqeqeq
+ if (code == 0) {
+ this.status = 1
+ // eslint-disable-next-line eqeqeq
+ } else if (code == 1) {
+ this.status = 0
+ }
+ sysAppChangeStatus({
+ id: record.id,
+ status: this.status
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+ }
+ })
+ },
+ onChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style scoped>
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue
new file mode 100644
index 0000000..ffa836c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/addForm.vue
@@ -0,0 +1,130 @@
+<template>
+ <a-modal
+ title="鏂板鍙傛暟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item
+ label="鍙傛暟鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ弬鏁板悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="绯荤粺鍙傛暟"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-radio-group v-decorator="['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" >
+ <a-radio-button value="Y" > 鏄� </a-radio-button>
+ <a-radio-button value="N" > 鍚� </a-radio-button>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item
+ label="鎵�灞炲垎绫�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" v-decorator="['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" >
+ <a-select-option v-for="(item,index) in groupCodeList" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鍙傛暟鍊�"
+ >
+ <a-input placeholder="璇疯緭鍏ュ弬鏁板��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysDictTypeDropDown, sysConfigAdd } from '@/api/modular/system/configManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ groupCodeList: [],
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add () {
+ this.visible = true
+ this.sysDictTypeDropDown()
+ },
+ /**
+ * 鑾峰彇鎵�灞炲垎绫�
+ */
+ sysDictTypeDropDown () {
+ sysDictTypeDropDown({ code: 'consts_type' }).then((res) => {
+ this.groupCodeList = res.data
+ this.formLoading = false
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysConfigAdd(values).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue
new file mode 100644
index 0000000..a1354d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/editForm.vue
@@ -0,0 +1,158 @@
+<template>
+ <a-modal
+ title="鍙傛暟缂栬緫"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item
+ label="鍙傛暟鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ弬鏁板悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板悕绉帮紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" :disabled="editDisabled" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="绯荤粺鍙傛暟"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-radio-group :disabled="editDisabled" v-decorator="['sysFlag',{rules: [{ required: true, message: '璇烽�夋嫨鏄惁涓虹郴缁熷弬鏁帮紒' }]}]" >
+ <a-radio-button value="Y" > 鏄� </a-radio-button>
+ <a-radio-button value="N" > 鍚� </a-radio-button>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item
+ label="鎵�灞炲垎绫�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select :disabled="editDisabled" style="width: 100%" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" v-decorator="['groupCode', {rules: [{ required: true, message: '璇烽�夋嫨鍙栨墍灞炲垎绫伙紒' }]}]" >
+ <a-select-option v-for="(item,index) in groupCodeList" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鍙傛暟鍊�"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ弬鏁板��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ弬鏁板�硷紒'}]}]" />
+ </a-form-item>
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysDictTypeDropDown, sysConfigEdit } from '@/api/modular/system/configManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ groupCodeList: [],
+ editDisabled: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ groupCode: record.groupCode,
+ sysFlag: record.sysFlag,
+ value: record.value,
+ remark: record.remark
+ }
+ )
+ }, 100)
+ // eslint-disable-next-line eqeqeq
+ if (record.sysFlag == 'Y') {
+ this.editDisabled = true
+ }
+ this.sysDictTypeDropDown()
+ },
+ /**
+ * 鑾峰彇鎵�灞炲垎绫�
+ */
+ sysDictTypeDropDown () {
+ sysDictTypeDropDown({ code: 'consts_type' }).then((res) => {
+ this.groupCodeList = res.data
+ this.formLoading = false
+ })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysConfigEdit(values).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ this.editDisabled = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue
new file mode 100644
index 0000000..5a3a653
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/config/index.vue
@@ -0,0 +1,237 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysConfig:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙傛暟鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ュ弬鏁板悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵�灞炲垎绫�">
+ <a-select v-model="queryParam.groupCode" placeholder="璇烽�夋嫨鎵�灞炲垎绫�" allow-clear>
+ <a-select-option
+ v-for="(item, index) in groupCodeDictTypeDropDown"
+ :key="index"
+ :value="item.code"
+ >{{ item.value }}</a-select-option
+ >
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="(!advanced && 8) || 24" :sm="24">
+ <span
+ class="table-page-search-submitButtons"
+ :style="(advanced && { float: 'right', overflow: 'hidden' }) || {}"
+ >
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px">
+ {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'" />
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{ x: true, y: tableHeight }"
+ :rowKey="record => record.code"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="operator" v-if="hasPerm('sysConfig:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysConfig:add')"
+ >鏂板閰嶇疆</a-button
+ >
+ </div>
+ </template>
+ <span slot="name" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="code" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="value" slot-scope="text">
+ <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="remark" slot-scope="text">
+ <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="groupCode" slot-scope="text">
+ <ellipsis :length="16" tooltip>{{ text }}</ellipsis>
+ <!-- {{ groupCodeFilter(text) }} -->
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysConfig:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysConfig:edit') & hasPerm('sysConfig:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('sysConfig:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => sysConfigDelete(record)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysConfig:add')" />
+ <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysConfig:edit')" />
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable, Ellipsis, XCard } from '@/components'
+import { sysConfigPage, sysConfigDelete } from '@/api/modular/system/configManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import addForm from './addForm'
+import editForm from './editForm'
+export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ Ellipsis,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '鍙傛暟鍚嶇О',
+ dataIndex: 'name',
+ scopedSlots: { customRender: 'name' }
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code',
+ scopedSlots: { customRender: 'code' }
+ },
+ {
+ title: '鍙傛暟鍊�',
+ dataIndex: 'value',
+ scopedSlots: { customRender: 'value' }
+ },
+ {
+ title: '鎵�灞炲垎绫�',
+ dataIndex: 'groupCode',
+ scopedSlots: { customRender: 'groupCode' }
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark',
+ scopedSlots: { customRender: 'remark' }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysConfigPage(Object.assign(parameter, this.queryParam)).then(res => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ groupCodeDictTypeDropDown: []
+ }
+ },
+ /**
+ * 鍒濆鍖栧垽鏂寜閽潈闄愭槸鍚︽嫢鏈夛紝娌℃湁鍒欎笉鐜板疄鍒�
+ */
+ created() {
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysConfig:edit') || this.hasPerm('sysConfig:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+ methods: {
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({ code: 'consts_type' }).then(res => {
+ this.groupCodeDictTypeDropDown = res.data
+ })
+ },
+ groupCodeFilter(groupCode) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.groupCodeDictTypeDropDown.filter(item => item.code == groupCode)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ sysConfigDelete(record) {
+ sysConfigDelete(record)
+ .then(res => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ })
+ .catch(err => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue
new file mode 100644
index 0000000..6fd22be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Analysis.vue
@@ -0,0 +1,385 @@
+<template>
+ <div class="page-header-index-wide">
+ <a-row :gutter="24">
+ <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+ <chart-card :loading="loading" title="鎬婚攢鍞" total="锟�126,560">
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" />
+ </a-tooltip>
+ <div>
+ <trend flag="up" style="margin-right: 16px;">
+ <span slot="term">鍛ㄥ悓姣�</span>
+ 12%
+ </trend>
+ <trend flag="down">
+ <span slot="term">鏃ュ悓姣�</span>
+ 11%
+ </trend>
+ </div>
+ <template slot="footer">鏃ュ潎閿�鍞<span>锟� 234.56</span></template>
+ </chart-card>
+ </a-col>
+ <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+ <chart-card :loading="loading" title="璁块棶閲�" :total="8846 | NumberFormat">
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" />
+ </a-tooltip>
+ <div>
+ <mini-area />
+ </div>
+ <template slot="footer">鏃ヨ闂噺<span> {{ '1234' | NumberFormat }}</span></template>
+ </chart-card>
+ </a-col>
+ <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+ <chart-card :loading="loading" title="鏀粯绗旀暟" :total="6560 | NumberFormat">
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" />
+ </a-tooltip>
+ <div>
+ <mini-bar />
+ </div>
+ <template slot="footer">杞寲鐜� <span>60%</span></template>
+ </chart-card>
+ </a-col>
+ <a-col :sm="24" :md="12" :xl="6" :style="{ marginBottom: '24px' }">
+ <chart-card :loading="loading" title="杩愯惀娲诲姩鏁堟灉" total="78%">
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" />
+ </a-tooltip>
+ <div>
+ <mini-progress color="rgb(19, 194, 194)" :target="80" :percentage="78" height="8px" />
+ </div>
+ <template slot="footer">
+ <trend flag="down" style="margin-right: 16px;">
+ <span slot="term">鍚屽懆姣�</span>
+ 12%
+ </trend>
+ <trend flag="up">
+ <span slot="term">鏃ョ幆姣�</span>
+ 80%
+ </trend>
+ </template>
+ </chart-card>
+ </a-col>
+ </a-row>
+ <a-card :loading="loading" :bordered="false" :body-style="{padding: '0'}">
+ <div class="salesCard">
+ <a-tabs default-active-key="1" size="large" :tab-bar-style="{marginBottom: '24px', paddingLeft: '16px'}">
+ <div class="extra-wrapper" slot="tabBarExtraContent">
+ <div class="extra-item">
+ <a>浠婃棩</a>
+ <a>鏈懆</a>
+ <a>鏈湀</a>
+ <a>鏈勾</a>
+ </div>
+ <a-range-picker :style="{width: '230px'}" />
+ </div>
+ <a-tab-pane loading="true" tab="閿�鍞" key="1">
+ <a-row>
+ <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
+ <bar :data="barData" title="閿�鍞鎺掕" />
+ </a-col>
+ <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
+ <rank-list title="闂ㄥ簵閿�鍞帓琛屾" :list="rankList"/>
+ </a-col>
+ </a-row>
+ </a-tab-pane>
+ <a-tab-pane tab="璁块棶閲�" key="2">
+ <a-row>
+ <a-col :xl="16" :lg="12" :md="12" :sm="24" :xs="24">
+ <bar :data="barData2" title="閿�鍞瓒嬪娍" />
+ </a-col>
+ <a-col :xl="8" :lg="12" :md="12" :sm="24" :xs="24">
+ <rank-list title="闂ㄥ簵閿�鍞帓琛屾" :list="rankList"/>
+ </a-col>
+ </a-row>
+ </a-tab-pane>
+ </a-tabs>
+ </div>
+ </a-card>
+ <div class="antd-pro-pages-dashboard-analysis-twoColLayout" :class="isDesktop() ? 'desktop' : ''">
+ <a-row :gutter="24" type="flex" :style="{ marginTop: '24px' }">
+ <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">
+ <a-card :loading="loading" :bordered="false" title="绾夸笂鐑棬鎼滅储" :style="{ height: '100%' }">
+ <a-dropdown :trigger="['click']" placement="bottomLeft" slot="extra">
+ <a class="ant-dropdown-link" href="#">
+ <a-icon type="ellipsis" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a href="javascript:;">鎿嶄綔涓�</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">鎿嶄綔浜�</a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ <a-row :gutter="68">
+ <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
+ <number-info :total="12321" :sub-total="17.1">
+ <span slot="subtitle">
+ <span>鎼滅储鐢ㄦ埛鏁�</span>
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
+ </a-tooltip>
+ </span>
+ </number-info>
+ <!-- miniChart -->
+ <div>
+ <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
+ </div>
+ </a-col>
+ <a-col :xs="24" :sm="12" :style="{ marginBottom: ' 24px'}">
+ <number-info :total="2.7" :sub-total="26.2" status="down">
+ <span slot="subtitle">
+ <span>浜哄潎鎼滅储娆℃暟</span>
+ <a-tooltip title="鎸囨爣璇存槑" slot="action">
+ <a-icon type="info-circle-o" :style="{ marginLeft: '8px' }" />
+ </a-tooltip>
+ </span>
+ </number-info>
+ <!-- miniChart -->
+ <div>
+ <mini-smooth-area :style="{ height: '45px' }" :dataSource="searchUserData" :scale="searchUserScale" />
+ </div>
+ </a-col>
+ </a-row>
+ <div class="ant-table-wrapper">
+ <a-table
+ row-key="index"
+ size="small"
+ :columns="searchTableColumns"
+ :dataSource="searchData"
+ :pagination="{ pageSize: 5 }"
+ >
+ <span slot="range" slot-scope="text, record">
+ <trend :flag="record.status === 0 ? 'up' : 'down'">
+ {{ text }}%
+ </trend>
+ </span>
+ </a-table>
+ </div>
+ </a-card>
+ </a-col>
+ <a-col :xl="12" :lg="24" :md="24" :sm="24" :xs="24">
+ <a-card class="antd-pro-pages-dashboard-analysis-salesCard" :loading="loading" :bordered="false" title="閿�鍞绫诲埆鍗犳瘮" :style="{ height: '100%' }">
+ <div slot="extra" style="height: inherit;">
+ <!-- style="bottom: 12px;display: inline-block;" -->
+ <span class="dashboard-analysis-iconGroup">
+ <a-dropdown :trigger="['click']" placement="bottomLeft">
+ <a-icon type="ellipsis" class="ant-dropdown-link" />
+ <a-menu slot="overlay">
+ <a-menu-item>
+ <a href="javascript:;">鎿嶄綔涓�</a>
+ </a-menu-item>
+ <a-menu-item>
+ <a href="javascript:;">鎿嶄綔浜�</a>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ <div class="analysis-salesTypeRadio">
+ <a-radio-group defaultValue="a">
+ <a-radio-button value="a">鍏ㄩ儴娓犻亾</a-radio-button>
+ <a-radio-button value="b">绾夸笂</a-radio-button>
+ <a-radio-button value="c">闂ㄥ簵</a-radio-button>
+ </a-radio-group>
+ </div>
+ </div>
+ <h4>閿�鍞</h4>
+ <div>
+ <!-- style="width: calc(100% - 240px);" -->
+ <div>
+ <v-chart :force-fit="true" :height="405" :data="pieData" :scale="pieScale">
+ <v-tooltip :showTitle="false" dataKey="item*percent" />
+ <v-axis />
+ <!-- position="right" :offsetX="-140" -->
+ <v-legend dataKey="item"/>
+ <v-pie position="percent" color="item" :vStyle="pieStyle" />
+ <v-coord type="theta" :radius="0.75" :innerRadius="0.6" />
+ </v-chart>
+ </div>
+ </div>
+ </a-card>
+ </a-col>
+ </a-row>
+ </div>
+ </div>
+</template>
+<script>
+import moment from 'moment'
+import { ChartCard, MiniArea, MiniBar, MiniProgress, RankList, Bar, Trend, NumberInfo, MiniSmoothArea } from '@/components'
+import { mixinDevice } from '@/utils/mixin'
+const barData = []
+const barData2 = []
+for (let i = 0; i < 12; i += 1) {
+ barData.push({
+ x: `${i + 1}鏈坄,
+ y: Math.floor(Math.random() * 1000) + 200
+ })
+ barData2.push({
+ x: `${i + 1}鏈坄,
+ y: Math.floor(Math.random() * 1000) + 200
+ })
+}
+const rankList = []
+for (let i = 0; i < 7; i++) {
+ rankList.push({
+ name: '鐧介弓宀� ' + (i + 1) + ' 鍙峰簵',
+ total: 1234.56 - i * 100
+ })
+}
+const searchUserData = []
+for (let i = 0; i < 7; i++) {
+ searchUserData.push({
+ x: moment().add(i, 'days').format('YYYY-MM-DD'),
+ y: Math.ceil(Math.random() * 10)
+ })
+}
+const searchUserScale = [
+ {
+ dataKey: 'x',
+ alias: '鏃堕棿'
+ },
+ {
+ dataKey: 'y',
+ alias: '鐢ㄦ埛鏁�',
+ min: 0,
+ max: 10
+ }]
+const searchTableColumns = [
+ {
+ dataIndex: 'MenuIndex.vue',
+ title: '鎺掑悕',
+ width: 90
+ },
+ {
+ dataIndex: 'keyword',
+ title: '鎼滅储鍏抽敭璇�'
+ },
+ {
+ dataIndex: 'count',
+ title: '鐢ㄦ埛鏁�'
+ },
+ {
+ dataIndex: 'range',
+ title: '鍛ㄦ定骞�',
+ align: 'right',
+ sorter: (a, b) => a.range - b.range,
+ scopedSlots: { customRender: 'range' }
+ }
+]
+const searchData = []
+for (let i = 0; i < 50; i += 1) {
+ searchData.push({
+ index: i + 1,
+ keyword: `鎼滅储鍏抽敭璇�-${i}`,
+ count: Math.floor(Math.random() * 1000),
+ range: Math.floor(Math.random() * 100),
+ status: Math.floor((Math.random() * 10) % 2)
+ })
+}
+const DataSet = require('@antv/data-set')
+const sourceData = [
+ { item: '瀹剁敤鐢靛櫒', count: 32.2 },
+ { item: '椋熺敤閰掓按', count: 21 },
+ { item: '涓姢鍋ュ悍', count: 17 },
+ { item: '鏈嶉グ绠卞寘', count: 13 },
+ { item: '姣嶅┐浜у搧', count: 9 },
+ { item: '鍏朵粬', count: 7.8 }
+]
+const pieScale = [{
+ dataKey: 'percent',
+ min: 0,
+ formatter: '.0%'
+}]
+const dv = new DataSet.View().source(sourceData)
+dv.transform({
+ type: 'percent',
+ field: 'count',
+ dimension: 'item',
+ as: 'percent'
+})
+const pieData = dv.rows
+export default {
+ name: 'Analysis',
+ mixins: [mixinDevice],
+ components: {
+ ChartCard,
+ MiniArea,
+ MiniBar,
+ MiniProgress,
+ RankList,
+ Bar,
+ Trend,
+ NumberInfo,
+ MiniSmoothArea
+ },
+ data () {
+ return {
+ loading: true,
+ rankList,
+ // 鎼滅储鐢ㄦ埛鏁�
+ searchUserData,
+ searchUserScale,
+ searchTableColumns,
+ searchData,
+ barData,
+ barData2,
+ //
+ pieScale,
+ pieData,
+ sourceData,
+ pieStyle: {
+ stroke: '#fff',
+ lineWidth: 1
+ }
+ }
+ },
+ created () {
+ setTimeout(() => {
+ this.loading = !this.loading
+ }, 1000)
+ }
+}
+</script>
+<style lang="less" scoped>
+ .extra-wrapper {
+ line-height: 55px;
+ padding-right: 24px;
+ .extra-item {
+ display: inline-block;
+ margin-right: 24px;
+
+ a {
+ margin-left: 24px;
+ }
+ }
+ }
+ .antd-pro-pages-dashboard-analysis-twoColLayout {
+ position: relative;
+ display: flex;
+ display: block;
+ flex-flow: row wrap;
+ }
+ .antd-pro-pages-dashboard-analysis-salesCard {
+ height: calc(100% - 24px);
+ /deep/ .ant-card-head {
+ position: relative;
+ }
+ }
+ .dashboard-analysis-iconGroup {
+ i {
+ margin-left: 16px;
+ color: rgba(0,0,0,.45);
+ cursor: pointer;
+ transition: color .32s;
+ color: black;
+ }
+ }
+ .analysis-salesTypeRadio {
+ position: absolute;
+ right: 54px;
+ bottom: 12px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue
new file mode 100644
index 0000000..2b9c6c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Monitor.vue
@@ -0,0 +1,15 @@
+<template>
+ <div>
+ Monitor
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Monitor'
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue
new file mode 100644
index 0000000..c36ece5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/TestWork.vue
@@ -0,0 +1,115 @@
+<template>
+ <div>
+ <h2>鏈〉闈㈠唴瀹瑰潎涓烘祴璇曞姛鑳斤紝鏆備笉鎻愪緵绋冲畾鎬т繚璇�</h2>
+ <a-divider />
+ <div class="multi-tab-test">
+ <h4>澶氭爣绛剧粍浠舵祴璇曞姛鑳�</h4>
+ <a-button @click="handleCloseCurrentTab" style="margin-right: 16px;">鍏抽棴褰撳墠椤�</a-button>
+ <a-button @click="handleOpenTab" style="margin-right: 16px;">鎵撳紑 浠诲姟鍒楄〃</a-button>
+ <a-popconfirm :visible="visible" @confirm="confirm" @cancel="cancel" okText="纭畾" cancelText="鍙栨秷">
+ <template v-slot:title>
+ <div>
+ <a-form :form="form" layout="inline">
+ <a-form-item label="鑷畾涔夊悕绉�">
+ <a-input v-decorator="['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]"/>
+ </a-form-item>
+ </a-form>
+ </div>
+ </template>
+ <a-button @click="() => visible = !visible" style="margin-right: 16px;">淇敼褰撳墠 Tab 鍚嶇О</a-button>
+ </a-popconfirm>
+
+ <a-popconfirm :visible="visible2" @confirm="confirm2" @cancel="() => visible2 = false" okText="纭畾" cancelText="鍙栨秷">
+ <template v-slot:title>
+ <div>
+ <p>椤甸潰 KEY 鏄敱椤甸潰鐨勮矾鐢� <code>path</code> 鍐冲畾鐨�</p>
+ <p>濡傛灉瑕佷慨鏀规煇涓�涓〉闈㈡爣棰橈紝璇ラ〉闈㈠繀椤诲凡缁忚鎵撳紑鍦� Tab 鏍�</p>
+ <p>鍚庢湡鍙互鑰冭檻浼樺寲鍒扮紪绋嬪紡 Tab 鏍忥紝灏卞彲浠ユ病鏈夎繖绉嶉檺鍒�</p>
+ <a-form :form="form2" layout="inline">
+ <a-form-item label="椤甸潰KEY">
+ <a-input v-decorator="['tabKey', { initialValue: '/dashboard/workplace' }]" />
+ </a-form-item>
+ <a-form-item label="鑷畾涔夊悕绉�">
+ <a-input v-decorator="['tabName', {rules: [{required: true, message: '璇疯緭鍏ユ柊鐨� Tab 鍚嶇О'}]}]"/>
+ </a-form-item>
+ </a-form>
+ </div>
+ </template>
+ <a-button @click="() => visible2 = !visible2">淇敼鏌愪竴涓� Tab 鍚嶇О</a-button>
+ </a-popconfirm>
+ </div>
+ <a-divider />
+ <div class="page-loading-test">
+ <h4>鍏ㄥ眬閬僵娴嬭瘯</h4>
+ <a-button @click="handleOpenLoading" style="margin-right: 16px;">鎵撳紑閬僵(5s 鑷姩鍏抽棴)</a-button>
+ <a-button @click="handleOpenLoadingCustomTip">鎵撳紑閬僵(鑷畾涔夋彁绀鸿)</a-button>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'TestWork',
+ data () {
+ return {
+ visible: false,
+ visible2: false
+ }
+ },
+ created () {
+ this.form = this.$form.createForm(this)
+ this.form2 = this.$form.createForm(this)
+ },
+ methods: {
+ handleCloseCurrentTab () {
+ this.$multiTab.closeCurrentPage() // or this.$multiTab.close()
+ },
+ handleOpenTab () {
+ this.$multiTab.open('/features/task')
+ },
+
+ handleOpenLoading () {
+ this.$nextTick(function () {
+ })
+ this.$loading.show()
+ setTimeout(() => {
+ this.$loading.hide()
+ }, 5000)
+ },
+ handleOpenLoadingCustomTip () {
+ this.$loading.show({ tip: '鑷畾涔夋彁绀鸿' })
+ setTimeout(() => {
+ this.$loading.hide()
+ }, 5000)
+ },
+
+ // confirm
+ confirm (e) {
+ e.stopPropagation()
+ const { path } = this.$route
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ this.$multiTab.rename(path, values.tabName)
+ this.visible = false
+ }
+ })
+ },
+ cancel () {
+ this.visible = false
+ },
+ confirm2 (e) {
+ e.stopPropagation()
+ this.form2.validateFields((err, values) => {
+ if (!err) {
+ this.$multiTab.rename(values.tabKey, values.tabName)
+ this.visible2 = false
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue
new file mode 100644
index 0000000..9ea50d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dashboard/Workplace.vue
@@ -0,0 +1,526 @@
+<template>
+ <page-view :avatar="avatar" :title="false">
+ <div slot="headerContent">
+ <div class="title">{{ timeFix }}锛寋{ user.name }}<span class="welcome-text">锛寋{ welcome }}</span></div>
+ <div style="margin-bottom:10px">鍓嶇宸ョ▼甯� | 铓傝殎閲戞湇 - 鏌愭煇鏌愪簨涓氱兢 - VUE骞冲彴</div>
+ </div>
+ <div slot="extra">
+ <a-row class="more-info">
+ <a-col :span="8">
+ <head-info title="椤圭洰" content="56" :center="false" :bordered="false"/>
+ </a-col>
+ <a-col :span="8">
+ <head-info title="鍥㈤槦鎺掑悕" content="8/24" :center="false" :bordered="false"/>
+ </a-col>
+ <a-col :span="8">
+ <head-info title="椤圭洰鏁�" content="2,223" :center="false" />
+ </a-col>
+ </a-row>
+ </div>
+
+ <div>
+ <a-row :gutter="24">
+ <a-col :xl="16" :lg="24" :md="24" :sm="24" :xs="24">
+ <a-card
+ class="project-list"
+ :loading="loading"
+ style="margin-bottom: 24px;"
+ :bordered="false"
+ title="杩涜涓殑椤圭洰"
+ :body-style="{ padding: 0 }">
+ <a slot="extra">鍏ㄩ儴椤圭洰</a>
+ <div>
+ <a-card-grid class="project-card-grid" :key="i" v-for="(item, i) in projects">
+ <a-card :bordered="false" :body-style="{ padding: 0 }">
+ <a-card-meta>
+ <div slot="title" class="card-title">
+ <a-avatar size="small" :src="item.cover"/>
+ <a>{{ item.title }}</a>
+ </div>
+ <div slot="description" class="card-description">
+ {{ item.description }}
+ </div>
+ </a-card-meta>
+ <div class="project-item">
+ <a href="/#/">绉戝鎼爾缁�</a>
+ <span class="datetime">9灏忔椂鍓�</span>
+ </div>
+ </a-card>
+ </a-card-grid>
+ </div>
+ </a-card>
+
+ <a-card :loading="loading" title="鍔ㄦ��" :bordered="false">
+ <a-list>
+ <a-list-item :key="index" v-for="(item, index) in activities">
+ <a-list-item-meta>
+ <a-avatar slot="avatar" :src="item.user.avatar" />
+ <div slot="title">
+ <span>{{ item.user.nickname }}</span>
+ 鍦� <a href="#">{{ item.project.name }}</a>
+ <span>{{ item.project.action }}</span>
+ <a href="#">{{ item.project.event }}</a>
+ </div>
+ <div slot="description">{{ item.time }}</div>
+ </a-list-item-meta>
+ </a-list-item>
+ </a-list>
+ </a-card>
+ </a-col>
+ <a-col
+ style="padding: 0 12px"
+ :xl="8"
+ :lg="24"
+ :md="24"
+ :sm="24"
+ :xs="24">
+ <a-card title="蹇�熷紑濮� / 渚挎嵎瀵艰埅" style="margin-bottom: 24px" :bordered="false" :body-style="{padding: 0}">
+ <div class="item-group">
+ <a>鎿嶄綔涓�</a>
+ <a>鎿嶄綔浜�</a>
+ <a>鎿嶄綔涓�</a>
+ <a>鎿嶄綔鍥�</a>
+ <a>鎿嶄綔浜�</a>
+ <a>鎿嶄綔鍏�</a>
+ <a-button size="small" type="primary" ghost icon="plus">娣诲姞</a-button>
+ </div>
+ </a-card>
+ <a-card title="XX 鎸囨暟" style="margin-bottom: 24px" :loading="radarLoading" :bordered="false" :body-style="{ padding: 0 }">
+ <div style="min-height: 400px;">
+ <!-- :scale="scale" :axis1Opts="axis1Opts" :axis2Opts="axis2Opts" -->
+ <radar :data="radarData" />
+ </div>
+ </a-card>
+ <a-card :loading="loading" title="鍥㈤槦" :bordered="false">
+ <div class="members">
+ <a-row>
+ <a-col :span="12" v-for="(item, index) in teams" :key="index">
+ <a>
+ <a-avatar size="small" :src="item.avatar" />
+ <span class="member">{{ item.name }}</span>
+ </a>
+ </a-col>
+ </a-row>
+ </div>
+ </a-card>
+ </a-col>
+ </a-row>
+ </div>
+ </page-view>
+</template>
+
+<script>
+ import { timeFix } from '@/utils/util'
+ import { mapState } from 'vuex'
+ import { PageView } from '@/layouts'
+ import HeadInfo from '@/components/tools/HeadInfo'
+ import { Radar } from '@/components'
+ const DataSet = require('@antv/data-set')
+
+ export default {
+ name: 'Workplace',
+ components: {
+ PageView,
+ HeadInfo,
+ Radar
+ },
+ data () {
+ return {
+ timeFix: timeFix(),
+ avatar: '',
+ user: {},
+
+ projects: [],
+ loading: true,
+ radarLoading: true,
+ activities: [],
+ teams: [],
+
+ // data
+ axis1Opts: {
+ dataKey: 'item',
+ line: null,
+ tickLine: null,
+ grid: {
+ lineStyle: {
+ lineDash: null
+ },
+ hideFirstLine: false
+ }
+ },
+ axis2Opts: {
+ dataKey: 'score',
+ line: null,
+ tickLine: null,
+ grid: {
+ type: 'polygon',
+ lineStyle: {
+ lineDash: null
+ }
+ }
+ },
+ scale: [{
+ dataKey: 'score',
+ min: 0,
+ max: 80
+ }],
+ axisData: [
+ { item: '寮曠敤', a: 70, b: 30, c: 40 },
+ { item: '鍙g', a: 60, b: 70, c: 40 },
+ { item: '浜ч噺', a: 50, b: 60, c: 40 },
+ { item: '璐$尞', a: 40, b: 50, c: 40 },
+ { item: '鐑害', a: 60, b: 70, c: 40 },
+ { item: '寮曠敤', a: 70, b: 50, c: 40 }
+ ],
+ radarData: []
+ }
+ },
+ computed: {
+ ...mapState({
+ nickname: (state) => state.user.nickname,
+ welcome: (state) => state.user.welcome
+ }),
+ userInfo () {
+ return this.$store.getters.userInfo
+ }
+ },
+ created () {
+ this.user = this.userInfo
+ this.avatar = process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/preview?id=' + this.userInfo.avatar
+ },
+ mounted () {
+ this.getProjects()
+ this.getActivity()
+ this.getTeams()
+ this.initRadar()
+ },
+ methods: {
+ getProjects () {
+ this.projects = [{
+ id: 1,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
+ title: 'Alipay',
+ description: '閭f槸涓�绉嶅唴鍦ㄧ殑涓滆タ锛� 浠栦滑鍒拌揪涓嶄簡锛屼篃鏃犳硶瑙﹀強鐨�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 2,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
+ title: 'Angular',
+ description: '甯屾湜鏄竴涓ソ涓滆タ锛屼篃璁告槸鏈�濂界殑锛屽ソ涓滆タ鏄笉浼氭秷浜$殑',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 3,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
+ title: 'Ant Design',
+ description: '鍩庨晣涓湁閭d箞澶氱殑閰掗锛屽ス鍗村亸鍋忚蛋杩涗簡鎴戠殑閰掗',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 4,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
+ title: 'iWare.Wms',
+ description: '閭f椂鍊欐垜鍙細鎯宠嚜宸辨兂瑕佷粈涔堬紝浠庝笉鎯宠嚜宸辨嫢鏈変粈涔�',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 5,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
+ title: 'Bootstrap',
+ description: '鍑涘啲灏嗚嚦',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ },
+ {
+ id: 6,
+ cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
+ title: 'Vue',
+ description: '鐢熷懡灏卞儚涓�鐩掑阀鍏嬪姏锛岀粨鏋滃線寰�鍑轰汉鎰忔枡',
+ status: 1,
+ updatedAt: '2018-07-26 00:00:00'
+ }
+ ]
+ this.loading = false
+ },
+ getActivity () {
+ this.activities = [{
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鏇存柊',
+ event: '鐣粍璁″垝'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '钃濊帗閰�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鏇存柊',
+ event: '鐣粍璁″垝'
+ },
+ time: '2018-08-23 09:35:37'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '鐧介弓閰辨补寮�鍙戠粍',
+ action: '鍒涘缓',
+ event: '鐣粍璁″垝'
+ },
+ time: '2017-05-27 00:00:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '鏇蹭附涓�',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: '鏇存柊',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '@name',
+ avatar: '@image(64x64)'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: 'created',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ },
+ {
+ id: 1,
+ user: {
+ nickname: '鏇蹭附涓�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ project: {
+ name: '楂橀�兼牸璁捐澶╁洟',
+ action: 'created',
+ event: '鍏湀杩唬'
+ },
+ time: '2018-08-23 14:47:00'
+ }
+ ]
+ },
+ getTeams () {
+ this.teams = [{
+ id: 1,
+ name: '绉戝鎼爾缁�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
+ },
+ {
+ id: 2,
+ name: '绋嬪簭鍛樻棩甯�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
+ },
+ {
+ id: 1,
+ name: '璁捐澶╁洟',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
+ },
+ {
+ id: 1,
+ name: '涓簩灏戝コ鍥�',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
+ },
+ {
+ id: 1,
+ name: '楠椾綘瀛﹁绠楁満',
+ avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
+ }
+ ]
+ },
+ initRadar () {
+ this.radarLoading = true
+ const dv = new DataSet.View().source(
+ [{
+ item: '寮曠敤',
+ '涓汉': 70,
+ '鍥㈤槦': 30,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '鍙g',
+ '涓汉': 60,
+ '鍥㈤槦': 70,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '浜ч噺',
+ '涓汉': 50,
+ '鍥㈤槦': 60,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '璐$尞',
+ '涓汉': 40,
+ '鍥㈤槦': 50,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '鐑害',
+ '涓汉': 60,
+ '鍥㈤槦': 70,
+ '閮ㄩ棬': 40
+ },
+ {
+ item: '寮曠敤',
+ '涓汉': 70,
+ '鍥㈤槦': 50,
+ '閮ㄩ棬': 40
+ }
+ ]
+ )
+ dv.transform({
+ type: 'fold',
+ fields: ['涓汉', '鍥㈤槦', '閮ㄩ棬'],
+ key: 'user',
+ value: 'score'
+ })
+
+ this.radarData = dv.rows
+ this.radarLoading = false
+ }
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+ .project-list {
+
+ .card-title {
+ font-size: 0;
+
+ a {
+ color: rgba(0, 0, 0, 0.85);
+ margin-left: 12px;
+ line-height: 24px;
+ height: 24px;
+ display: inline-block;
+ vertical-align: top;
+ font-size: 14px;
+
+ &:hover {
+ color: #1890ff;
+ }
+ }
+ }
+ .card-description {
+ color: rgba(0, 0, 0, 0.45);
+ height: 44px;
+ line-height: 22px;
+ overflow: hidden;
+ }
+ .project-item {
+ display: flex;
+ margin-top: 8px;
+ overflow: hidden;
+ font-size: 12px;
+ height: 20px;
+ line-height: 20px;
+ a {
+ color: rgba(0, 0, 0, 0.45);
+ display: inline-block;
+ flex: 1 1 0;
+
+ &:hover {
+ color: #1890ff;
+ }
+ }
+ .datetime {
+ color: rgba(0, 0, 0, 0.25);
+ flex: 0 0 auto;
+ float: right;
+ }
+ }
+ .ant-card-meta-description {
+ color: rgba(0, 0, 0, 0.45);
+ height: 44px;
+ line-height: 22px;
+ overflow: hidden;
+ }
+ }
+
+ .item-group {
+ padding: 20px 0 8px 24px;
+ font-size: 0;
+ a {
+ color: rgba(0, 0, 0, 0.65);
+ display: inline-block;
+ font-size: 14px;
+ margin-bottom: 13px;
+ width: 25%;
+ }
+ }
+
+ .members {
+ a {
+ display: block;
+ margin: 12px 0;
+ line-height: 24px;
+ height: 24px;
+ .member {
+ font-size: 14px;
+ color: rgba(0, 0, 0, .65);
+ line-height: 24px;
+ max-width: 100px;
+ vertical-align: top;
+ margin-left: 12px;
+ transition: all 0.3s;
+ display: inline-block;
+ }
+ &:hover {
+ span {
+ color: #1890ff;
+ }
+ }
+ }
+ }
+
+ .mobile {
+
+ .project-list {
+
+ .project-card-grid {
+ width: 100%;
+ }
+ }
+
+ .more-info {
+ border: 0;
+ padding-top: 16px;
+ margin: 16px 0 16px;
+ }
+
+ .headerContent .title .welcome-text {
+ display: none;
+ }
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue
new file mode 100644
index 0000000..94dad70
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/addForm.vue
@@ -0,0 +1,106 @@
+<template>
+ <a-modal
+ title="鏂板瀛楀吀绫诲瀷"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item
+ label="绫诲瀷鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ >
+ <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysDictTypeAdd } from '@/api/modular/system/dictManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysDictTypeAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue
new file mode 100644
index 0000000..2dce343
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/addForm.vue
@@ -0,0 +1,123 @@
+<template>
+ <a-modal
+ title="鏂板瀛楀吀鍊�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['typeId']" />
+ </a-form-item>
+
+ <a-form-item
+ label="瀛楀吀鍊�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ瓧鍏稿��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ >
+ <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysDictDataAdd } from '@/api/modular/system/dictDataManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ // 澧炲姞涓婄骇绫诲瀷ID
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ typeId: record
+ }
+ )
+ }, 100)
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysDictDataAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue
new file mode 100644
index 0000000..a6bfeb1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/editForm.vue
@@ -0,0 +1,137 @@
+<template>
+ <a-modal
+ title="瀛楀吀鍊肩紪杈�"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['typeId']" />
+ </a-form-item>
+
+ <a-form-item
+ label="瀛楀吀鍊�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ瓧鍏稿��" v-decorator="['value', {rules: [{required: true, message: '璇疯緭鍏ュ瓧鍏稿�硷紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ has-feedback
+ >
+ <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysDictDataEdit } from '@/api/modular/system/dictDataManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ typeId: record.typeId,
+ value: record.value,
+ code: record.code,
+ sort: record.sort,
+ remark: record.remark
+ }
+ )
+ }, 100)
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysDictDataEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue
new file mode 100644
index 0000000..252e95f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/dictdata/index.vue
@@ -0,0 +1,235 @@
+<template>
+ <a-modal title="瀛楀吀鍊肩鐞�" :width="900" :visible="visible" :footer="null" @cancel="handleCancel">
+ <x-card v-if="hasPerm('sysDictData:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛楀吀鍊�">
+ <a-input v-model="queryParam.value" allow-clear placeholder="璇疯緭鍏ュ瓧鍏稿��" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span
+ class="table-page-search-submitButtons"
+ :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="false"
+ :rowKey="(record) => record.code"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('sysDictData:add')">
+ <a-button @click="$refs.addForm.add(typeId)" icon="plus" type="primary" v-if="hasPerm('sysDictData:add')">鏂板鏁版嵁
+ </a-button>
+ </template>
+ <span slot="status" slot-scope="text,record">
+ <a-popconfirm
+ placement="top"
+ :title="text===0? '纭畾鍋滅敤璇ュ瓧鍏革紵':'纭畾鍚敤璇ュ瓧鍏革紵'"
+ @confirm="() => editSysDictDataStatus(text,record)">
+ <a>{{ statusFilter(text) }}</a>
+ </a-popconfirm>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysDictData:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysDictData:edit') & hasPerm('sysDictData:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('sysDictData:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => sysDictDataDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </a-modal>
+</template>
+<script>
+ import {
+ STable,
+ XCard
+ } from '@/components'
+ import {
+ sysDictDataPage,
+ sysDictDataDelete,
+ sysDictDataChangeStatus
+ } from '@/api/modular/system/dictDataManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ export default {
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [{
+ title: '瀛楀吀鍊�',
+ dataIndex: 'value'
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark',
+ width: 200
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ }
+ ],
+ visible: false,
+ typeId: [],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ this.queryParam.typeId = this.typeId
+ return sysDictDataPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDict: []
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysDictData:edit') || this.hasPerm('sysDictData:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ },
+ methods: {
+ // 鎵撳紑姝ら〉闈㈤鍏堝姞杞芥鏂规硶
+ index(record) {
+ this.visible = true
+ this.typeId = record.id
+ this.queryParam.typeId = record.id
+ try {
+ this.$refs.table.refresh()
+ } catch (e) {
+ // 棣栨杩涘叆鐣岄潰锛屽洜琛ㄦ牸鍔犺浇椤哄簭锛屼細鎶涘紓甯革紝鎴戜滑涓嶄簣鐞嗕細
+ }
+ },
+ statusFilter(status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDict.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'common_status'
+ }).then((res) => {
+ this.statusDict = res.data
+ })
+ },
+ handleCancel() {
+ this.queryParam = {}
+ this.visible = false
+ },
+ editSysDictDataStatus(code, record) {
+ // eslint-disable-next-line no-unused-vars
+ const status = 0
+ // eslint-disable-next-line eqeqeq
+ if (code == 0) {
+ this.status = 1
+ // eslint-disable-next-line eqeqeq
+ } else if (code == 1) {
+ this.status = 0
+ }
+ sysDictDataChangeStatus({
+ id: record.id,
+ status: this.status
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+ }
+ })
+ },
+ sysDictDataDelete(record) {
+ sysDictDataDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue
new file mode 100644
index 0000000..49ee823
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/editForm.vue
@@ -0,0 +1,128 @@
+<template>
+ <a-modal
+ title="瀛楀吀绫诲瀷缂栬緫"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+
+ <a-form-item
+ label="绫诲瀷鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ョ被鍨嬪悕绉帮紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ has-feedback
+ >
+ <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysDictTypeEdit } from '@/api/modular/system/dictManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ sort: record.sort,
+ remark: record.remark
+ }
+ )
+ }, 100)
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysDictTypeEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue
new file mode 100644
index 0000000..6131b40
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/dict/index.vue
@@ -0,0 +1,251 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysDictType:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜" v-if="hasPerm('sysDictType:page')">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span
+ class="table-page-search-submitButtons"
+ :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="false"
+ :rowKey="(record) => record.code"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('sysDictType:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysDictType:add')">鏂板绫诲瀷
+ </a-button>
+ </div>
+ </template>
+ <span slot="DynamicKey" slot-scope="text,record">
+ dict${{record.code}}
+ </span>
+ <span slot="status" slot-scope="text,record">
+ <a-popconfirm
+ placement="top"
+ :title="text===0? '纭畾鍋滅敤璇ュ瓧鍏革紵':'纭畾鍚敤璇ュ瓧鍏革紵'"
+ @confirm="() => editSysDictTypeStatus(text,record)">
+ <a>{{ statusFilter(text) }}</a>
+ </a-popconfirm>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a @click="$refs.dataIndex.index(record)">瀛楀吀</a>
+ <a-divider type="vertical" v-if="hasPerm('sysDictType:edit') || hasPerm('sysDictType:delete')" />
+ <a-dropdown v-if="hasPerm('sysDictType:edit') || hasPerm('sysDictType:delete')">
+ <a class="ant-dropdown-link">
+ 鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item v-if="hasPerm('sysDictType:edit')">
+ <a @click="$refs.editForm.edit(record)">缂栬緫</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysDictType:delete')">
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysDictTypeDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <data-index ref="dataIndex" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ STable,
+ XCard
+ } from '@/components'
+ import {
+ sysDictTypePage,
+ sysDictTypeDelete,
+ sysDictTypeDropDown,
+ sysDictTypeChangeStatus
+ } from '@/api/modular/system/dictManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import dataIndex from './dictdata/index'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm,
+ dataIndex
+ },
+ data() {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [{
+ title: '绫诲瀷鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '鍔ㄦ�佹暟鎹�',
+ scopedSlots: {
+ customRender: 'DynamicKey'
+ }
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark',
+ width: 200
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ }, {
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysDictTypePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDict: []
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+ methods: {
+ statusFilter(status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDict.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'common_status'
+ }).then((res) => {
+ this.statusDict = res.data
+ })
+ },
+ editSysDictTypeStatus(code, record) {
+ // eslint-disable-next-line no-unused-vars
+ const status = 0
+ // eslint-disable-next-line eqeqeq
+ if (code == 0) {
+ this.status = 1
+ // eslint-disable-next-line eqeqeq
+ } else if (code == 1) {
+ this.status = 0
+ }
+ sysDictTypeChangeStatus({
+ id: record.id,
+ status: this.status
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+ }
+ })
+ },
+ sysDictTypeDelete(record) {
+ sysDictTypeDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue
new file mode 100644
index 0000000..937c373
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/email/index.vue
@@ -0,0 +1,205 @@
+<template>
+ <a-card :bordered="false">
+ <a-spin :spinning="confirmLoading">
+ <a-tabs default-active-key="1">
+ <a-tab-pane key="1" tab="鍙戦�侀偖浠�" @change="tabsCallback" v-if="hasPerm('email:sendEmail')">
+ <a-form :form="form1">
+ <a-form-item label="鏀朵欢閭">
+ <a-input
+ placeholder="璇疯緭鍏ユ敹浠堕偖绠�"
+ v-decorator="['to', {rules: [{type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="閭欢鏍囬">
+ <a-input
+ placeholder="璇疯緭鍏ラ偖浠舵爣棰�"
+ v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="閭欢鍐呭">
+ <a-textarea
+ :rows="4"
+ placeholder="璇疯緭鍏ュ娉�"
+ v-decorator="['content', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠跺唴瀹癸紒'}]}]"></a-textarea>
+ </a-form-item>
+ <a-form-item class="subForm-item">
+ <a-button type="primary" @click="handleSubmit1" :loading="confirmLoading">鍙戦��</a-button>
+ </a-form-item>
+ </a-form>
+ </a-tab-pane>
+ <a-tab-pane key="2" tab="鍙戦�丠tml閭欢" @change="tabsCallback" v-if="hasPerm('email:sendEmailHtml')">
+ <a-form :form="form2">
+ <a-form-item label="鏀朵欢閭">
+ <a-input
+ placeholder="璇疯緭鍏ユ敹浠堕偖绠�"
+ v-decorator="['to',{rules: [ {type: 'email',message: '璇疯緭鍏ユ纭殑閭!'},{required: true, message: '璇疯緭鍏ユ敹浠堕偖绠憋紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="閭欢鏍囬">
+ <a-input
+ placeholder="璇疯緭鍏ラ偖浠舵爣棰�"
+ v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ラ偖浠舵爣棰橈紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="閭欢鍐呭">
+ <antd-editor
+ :uploadConfig="editorUploadConfig"
+ v-model="editorContent"
+ @onchange="changeEditor"
+ @oninit="getEditor" />
+ </a-form-item>
+ <a-form-item class="subForm-item">
+ <a-button type="primary" @click="handleSubmit2" :loading="confirmLoading">鍙戦��</a-button>
+ </a-form-item>
+ </a-form>
+ </a-tab-pane>
+ </a-tabs>
+ </a-spin>
+ </a-card>
+</template>
+<script>
+ import {
+ emailSendEmail,
+ emailSendEmailHtml
+ } from '@/api/modular/system/emailManage'
+ import {
+ AntdEditor
+ } from '@/components'
+ // eslint-disable-next-line no-unused-vars
+ import {
+ sysFileInfoUpload,
+ // sysFileInfoDownload,
+ sysFileInfoPreview
+ } from '@/api/modular/system/fileManage'
+ export default {
+ components: {
+ AntdEditor
+ },
+ data() {
+ return {
+ editorContentText: '',
+ editorUploadConfig: {
+ method: 'http',
+ callback: this.editorUploadImage
+ },
+ confirmLoading: false,
+ editorContent: '',
+ form1: this.$form.createForm(this),
+ form2: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ tabsCallback(key) {
+ if (key === '1') {
+ // eslint-disable-next-line no-labels
+ form1: this.$form.createForm(this)
+ this.form2.resetFields()
+ this.editor.txt.clear()
+ }
+ if (key === '2') {
+ // eslint-disable-next-line no-labels
+ form2: this.$form.createForm(this)
+ this.form1.resetFields()
+ }
+ },
+ /**
+ * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+ */
+ editorUploadImage(files, insert) {
+ const formData = new FormData()
+ files.forEach(file => {
+ formData.append('file', file)
+ })
+ sysFileInfoUpload(formData).then((res) => {
+ if (res.success) {
+ sysFileInfoPreview({
+ id: res.data
+ }).then((ress) => {
+ insert(window.URL.createObjectURL(new Blob([ress])))
+ }).catch((ress) => {
+ this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+ })
+ } else {
+ this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+ }
+ })
+ },
+ getEditor(editor) {
+ this.editor = editor
+ },
+ changeEditor(html, ele) {
+ this.editorContent = html
+ this.editorContentText = ele.text()
+ },
+ /**
+ * 鍙戦�侀偖浠�
+ */
+ handleSubmit1() {
+ const {
+ form1: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ emailSendEmail(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鍙戦�佹垚鍔�')
+ this.confirmLoading = false
+ this.form1.resetFields()
+ } else {
+ this.$message.error('鍙戦�佸け璐ワ細' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ /**
+ * 鍙戦�丠tml閭欢
+ */
+ handleSubmit2() {
+ const {
+ form2: {
+ validateFields
+ }
+ } = this
+ // eslint-disable-next-line eqeqeq
+ if (this.editorContent == '') {
+ this.$message.error('璇峰~鍐欓偖浠跺唴瀹�')
+ return
+ }
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ values.content = this.editorContent
+ emailSendEmailHtml(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鍙戦�佹垚鍔�')
+ this.confirmLoading = false
+ this.editor.txt.clear()
+ this.form2.resetFields()
+ } else {
+ this.$message.error('鍙戦�佸け璐ワ細' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ }
+
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue
new file mode 100644
index 0000000..ffc3799
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/403.vue
@@ -0,0 +1,17 @@
+<template>
+ <exception-page type="403" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+ components: {
+ ExceptionPage
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue
new file mode 100644
index 0000000..16f767f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/404.vue
@@ -0,0 +1,17 @@
+<template>
+ <exception-page type="404" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+ components: {
+ ExceptionPage
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue
new file mode 100644
index 0000000..cc5d7ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/exception/500.vue
@@ -0,0 +1,17 @@
+<template>
+ <exception-page type="500" />
+</template>
+
+<script>
+import { ExceptionPage } from '@/components'
+
+export default {
+ components: {
+ ExceptionPage
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue
new file mode 100644
index 0000000..f25b719
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/detailForm.vue
@@ -0,0 +1,99 @@
+<template>
+ <a-modal
+ title="鏂囦欢淇℃伅璇︽儏"
+ :footer="null"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item
+ label="鏂囦欢瀛樺偍浣嶇疆"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ {{ fileDetail.fileLocation }}
+ </a-form-item>
+ <a-form-item
+ label="鏂囦欢浠撳簱"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ {{ fileDetail.fileBucket }}
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鏂囦欢鍚嶇О"
+ >
+ {{ fileDetail.fileOriginName }}
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鏂囦欢鍚庣紑"
+ >
+ {{ fileDetail.fileSuffix }}
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鏂囦欢澶у皬"
+ >
+ {{ fileDetail.fileSizeKb }}
+ </a-form-item>
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鍞竴鏍囪瘑"
+ >
+ {{ fileDetail.fileObjectName }}
+ </a-form-item>
+
+ <a-form-item
+ label="瀛樺偍璺緞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ {{ fileDetail.filePath }}
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 8 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ fileDetail: [],
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ detail (record) {
+ this.fileDetail = record
+ this.visible = true
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue
new file mode 100644
index 0000000..fbdd9c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/index.vue
@@ -0,0 +1,266 @@
+<template>
+ <a-spin :spinning="cardLoading">
+ <x-card v-if="hasPerm('sysFileInfo:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瀛樺偍浣嶇疆">
+ <a-select v-model="queryParam.fileLocation" placeholder="璇烽�夋嫨瀛樺偍浣嶇疆" >
+ <a-select-option v-for="(item,index) in fileLocationDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏂囦欢浠撳簱">
+ <a-input v-model="queryParam.fileBucket" placeholder="璇疯緭鍏ユ枃浠朵粨搴�"/>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏂囦欢鍚嶇О">
+ <a-input v-model="queryParam.fileOriginName" placeholder="璇疯緭鍏ユ枃浠跺悕绉帮紙涓婁紶鏃跺�欑殑鏂囦欢鍚嶏級"/>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px">
+ {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="operator" v-if="hasPerm('sysFileInfo:upload')">
+ <a-upload
+ :customRequest="customRequest"
+ :multiple="true"
+ :showUploadList="false"
+ name="file"
+ v-if="hasPerm('sysFileInfo:upload')"
+ >
+ <a-button> <a-icon type="upload" />涓婁紶鏂囦欢</a-button>
+ </a-upload>
+ </template>
+ <span slot="fileOriginName" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="fileObjectName" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="fileLocation" slot-scope="text">
+ {{ fileLocationFilter(text) }}
+ </span>
+ <span slot="fileSuffix" slot-scope="text">
+ <a-tag color="blue">{{ text }}</a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysFileInfo:download')" @click="sysFileInfoDownload(record)">涓嬭浇</a>
+ <a-divider type="vertical" v-if="hasPerm('sysFileInfo:download') & hasPerm('sysFileInfo:detail')"/>
+ <a v-if="hasPerm('sysFileInfo:detail')" @click="$refs.detailForm.detail(record)">璇︽儏</a>
+ <a-divider type="vertical" v-if="hasPerm('sysFileInfo:detail') & hasPerm('sysFileInfo:delete')"/>
+ <a-popconfirm v-if="hasPerm('sysFileInfo:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysFileInfoDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ <a-divider type="vertical" v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'png' || record.fileSuffix === 'jpeg' || record.fileSuffix === 'jpg'|| record.fileSuffix === 'gif'|| record.fileSuffix === 'tif' || record.fileSuffix === 'bmp' ) & hasPerm('sysFileInfo:delete')"/>
+ <a v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'png' || record.fileSuffix === 'jpeg'|| record.fileSuffix === 'jpg'|| record.fileSuffix === 'gif'|| record.fileSuffix === 'tif' || record.fileSuffix === 'bmp' )" @click="$refs.previewForm.preview(record)">棰勮</a>
+ <a-divider type="vertical" v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'doc' || record.fileSuffix === 'docx'|| record.fileSuffix === 'xls'|| record.fileSuffix === 'xlsx') & hasPerm('sysFileInfo:delete')"/>
+ <a v-if="(hasPerm('sysFileInfo:preview') & record.fileSuffix === 'doc' || record.fileSuffix === 'docx'|| record.fileSuffix === 'xls'|| record.fileSuffix === 'xlsx')" @click="previewMicrosoft(record)">棰勮</a>
+ </span>
+ </s-table>
+ <detail-form ref="detailForm" @ok="handleOk" v-if="hasPerm('sysFileInfo:detail')"/>
+ <preview-form ref="previewForm" v-if="hasPerm('sysFileInfo:preview')"/>
+ </a-card>
+ </a-spin>
+</template>
+<script>
+ import { STable, Ellipsis, XCard } from '@/components'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+ import { sysFileInfoPage, sysFileInfoDelete, sysFileInfoUpload, sysFileInfoDownload } from '@/api/modular/system/fileManage'
+ import detailForm from './detailForm'
+ import previewForm from './previewForm'
+ export default {
+ components: {
+ XCard,
+ STable,
+ Ellipsis,
+ detailForm,
+ previewForm
+ },
+ data () {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '瀛樺偍浣嶇疆',
+ dataIndex: 'fileLocation',
+ scopedSlots: { customRender: 'fileLocation' }
+ },
+ {
+ title: '鏂囦欢浠撳簱',
+ dataIndex: 'fileBucket'
+ },
+ {
+ title: '鏂囦欢鍚嶇О',
+ dataIndex: 'fileOriginName',
+ scopedSlots: { customRender: 'fileOriginName' }
+ },
+ {
+ title: '鏂囦欢鍚庣紑',
+ dataIndex: 'fileSuffix',
+ scopedSlots: { customRender: 'fileSuffix' }
+ },
+ {
+ title: '鏂囦欢澶у皬',
+ dataIndex: 'fileSizeInfo'
+ },
+ {
+ title: '鍞竴鏍囪瘑id',
+ dataIndex: 'fileObjectName',
+ scopedSlots: { customRender: 'fileObjectName' }
+ }
+
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysFileInfoPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ cardLoading: false,
+ fileLocationDictTypeDropDown: [],
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysPos:edit') || this.hasPerm('sysPos:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '200px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+ methods: {
+ fileLocationFilter (fileLocation) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.fileLocationDictTypeDropDown.filter(item => item.code == fileLocation)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 棰勮鏂囦欢锛堝井杞彃浠讹級
+ */
+ previewMicrosoft (record) {
+ window.open('https://view.officeapps.live.com/op/view.aspx?src=' + process.env.VUE_APP_API_BASE_URL + '/sysFileInfo/download?id=' + record.id)
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown () {
+ sysDictTypeDropDown({ code: 'file_storage_location' }).then((res) => {
+ this.fileLocationDictTypeDropDown = res.data
+ })
+ },
+ /**
+ * 涓嬭浇鏂囦欢锛堟墍鏈夋枃浠讹級
+ */
+ sysFileInfoDownload (record) {
+ this.cardLoading = true
+ sysFileInfoDownload({ id: record.id }).then((res) => {
+ this.cardLoading = false
+ this.downloadfile(res)
+ // eslint-disable-next-line handle-callback-err
+ }).catch((err) => {
+ this.cardLoading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+ downloadfile (res) {
+ var blob = new Blob([res.data], { type: 'application/octet-stream;charset=UTF-8' })
+ var contentDisposition = res.headers['content-disposition']
+ var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
+ var result = patt.exec(contentDisposition)
+ var filename = result[1]
+ var downloadElement = document.createElement('a')
+ var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ var reg = /^["](.*)["]$/g
+ downloadElement.style.display = 'none'
+ downloadElement.href = href
+ downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+ },
+ sysFileInfoDelete (record) {
+ sysFileInfoDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ /**
+ * 涓婁紶鏂囦欢
+ */
+ customRequest (data) {
+ const formData = new FormData()
+ formData.append('file', data.file)
+ sysFileInfoUpload(formData).then((res) => {
+ if (res.success) {
+ this.$message.success('涓婁紶鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('涓婁紶澶辫触锛�' + res.message)
+ }
+ })
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue
new file mode 100644
index 0000000..f125b93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/file/previewForm.vue
@@ -0,0 +1,60 @@
+<template>
+ <a-modal
+ title="棰勮鍥剧墖"
+ :footer="null"
+ :width="900"
+ :visible="visible"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="divLoading">
+ <div style="text-align: center">
+ <img :src="src" style="max-width: 99%">
+ </div>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysFileInfoPreview } from '@/api/modular/system/fileManage'
+ export default {
+ data () {
+ return {
+ visible: false,
+ src: '',
+ divLoading: false
+ }
+ },
+ methods: {
+ /**
+ * 鍒濆鍖�
+ */
+ preview (record) {
+ this.visible = true
+ this.divLoading = true
+ this.sysFileInfoPreview(record)
+ },
+ /**
+ * 鑾峰彇鍥剧墖骞惰浆涓洪摼鎺�
+ */
+ sysFileInfoPreview (record) {
+ sysFileInfoPreview({ id: record.id }).then((res) => {
+ this.divLoading = false
+ this.downloadfile(res)
+ }).catch((err) => {
+ this.divLoading = false
+ this.$message.error('棰勮閿欒锛�' + err.message)
+ })
+ },
+ /**
+ * 杞浘鐗囩被鍨�
+ */
+ downloadfile (res) {
+ const blob = new Blob([res])
+ this.src = window.URL.createObjectURL(blob)
+ },
+ handleCancel () {
+ this.src = ''
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue
new file mode 100644
index 0000000..65b513e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/edit.vue
@@ -0,0 +1,60 @@
+<template>
+ <div>
+ <a-spin :spinning="spinning">
+ <h1 class="headertitle">{{ title }}</h1>
+ <k-form-design ref="kfd" :showHead="false" :title="title" @save="onSave"/>
+ </a-spin>
+
+ </div>
+</template>
+<script>
+ import { formEntity, formEdit } from '@/api/modular/system/formDesignmanage'
+ export default {
+ components: {},
+ data() {
+ return {
+ spinning: true,
+ jsonData: '',
+ title: ''
+ }
+ },
+ mounted () {
+ formEntity(Object.assign({ Id: this.$route.query.Id })).then(res => {
+ if (res.success === true) {
+ this.importData(res.data.formJson)
+ this.title = res.data.title
+ this.spinning = false
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ },
+ methods: {
+ importData (json) {
+ this.$refs.kfd.handleSetData(JSON.parse(json))
+ },
+ onSave(values) {
+ var data = {
+ formJson: values,
+ id: this.$route.query.Id
+ }
+ formEdit(Object.assign(data)).then(res => {
+ if (res.success === true) {
+ this.$message.success(res.message)
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style >
+.headertitle{
+ font-size: 30px;
+ font-weight: bolder;
+ text-align: center;
+ background-color: white;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue
new file mode 100644
index 0000000..dabf44d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/index.vue
@@ -0,0 +1,91 @@
+<template>
+ <div>
+ <k-form-design
+ :showHead="false"
+ ref="kfd"
+ style="background-color: white;"
+ @save="handleSave" />
+ <a-modal
+ title="淇濆瓨琛ㄥ崟"
+ :visible="visible"
+ :destroyOnClose="true"
+ @ok="handleOk"
+ @cancel="handleCancel"
+ >
+ <a-form :label-col="{ span: 5 }" :wrapper-col="{ span: 12 }">
+ <a-form-item label="琛ㄥ崟鏍囬">
+ <a-input placeholder="璇疯緭鍏ヨ〃鍗曟爣棰�" v-model="formtitle"/>
+ </a-form-item>
+ <a-form-item label="琛ㄥ崟绫诲瀷">
+ <a-select :select="selectformtype" v-model="typeId">
+ <a-select-option v-for="item in formtype" :value="item.id" :key="item.id">
+ {{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-modal>
+ </div>
+</template>
+<script>
+ import 'k-form-design/styles/k-form-design.less'
+ import { formAdd } from '@/api/modular/system/formDesignmanage'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+
+ export default {
+ components: {},
+ data() {
+ return {
+ visible: false,
+ formtitle: '',
+ jsonData: '',
+ typeId: '',
+ formtype:[]
+ }
+ },
+ created() {
+ this.getSysDict()
+ },
+ methods: {
+ getSysDict() {
+ sysDictTypeDropDown({
+ code: 'form_type'
+ }).then((res) => {
+ this.formtype = res.data
+ })
+ },
+ selectformtype(value) {
+ },
+ handleSave(values) {
+ this.visible = true
+ this.jsonData = values
+ },
+ handleOk() {
+ var data = {
+ title: this.formtitle,
+ formJson: this.jsonData,
+ typeId: this.typeId
+ }
+ formAdd(Object.assign(data)).then(res => {
+ if (res.success === true) {
+ this.$message.success(res.message)
+ this.visible = false
+ this.formtitle = ''
+ this.$refs.formdesign.handleReset()
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ },
+ handleCancel() {
+ this.visible = false
+ this.formtitle = ''
+ }
+ },
+ mounted () {
+ // this.importData()
+ }
+ }
+</script>
+
+<style lang="less" scoped>
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue
new file mode 100644
index 0000000..6539741
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/formDesign/list.vue
@@ -0,0 +1,133 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('formmanager:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="琛ㄥ崟鍚嶇О">
+ <a-input v-model="queryParam.title" allow-clear placeholder="璇疯緭鍏ヨ〃鍗曞悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <span slot="publish" slot-scope="text,record">
+ <a-switch :defaultChecked="text" @change="(checked)=>{ onChange(checked,record)}"/>
+ </span>
+ <span slot="action" slot-scope="text,record">
+ <a v-if="hasPerm('formmanager:edit')" @click="edit(record.id)">淇敼</a>
+ <a-divider type="vertical" v-if="hasPerm('formmanager:delete') & hasPerm('formmanager:edit')" />
+ <a-popconfirm v-if="hasPerm('formmanager:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteform(record.id)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ </a-spin>
+ </a-card>
+ </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { formList, formPublish, formDelete } from '@/api/modular/system/formDesignmanage'
+export default {
+ name: 'FormDesignList',
+ components: {
+ STable,
+ XCard
+ },
+ data() {
+ return {
+ queryParam: {},
+ loading: true,
+ columns: [
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+ {
+ title: '琛ㄥ崟绫诲瀷',
+ dataIndex: 'typeName'
+ },
+ {
+ title: '鍒涘缓浜�',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鏄惁鍙戝竷',
+ dataIndex: 'publish',
+ scopedSlots: {
+ customRender: 'publish'
+ }
+ },
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return formList(Object.assign(parameter, this.queryParam)).then(res => {
+ this.loading = false
+ return res.data
+ })
+ }
+ }
+ },
+ methods: {
+ // 鍙戝竷琛ㄥ崟
+ onChange(checked, record) {
+ var id = record.id
+ formPublish(Object.assign({ Id: id, publish: checked })).then(res => {
+ if (res.success === true) {
+ this.$message.success(res.message)
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ },
+ // 淇敼琛ㄥ崟
+ edit(Id) {
+ this.$router.push({ path: '/formDesign/edit', query: { Id: Id } })
+ },
+ // 鍒犻櫎琛ㄥ崟
+ deleteform(Id) {
+ formDelete(Object.assign({ 'Id': Id })).then(res => {
+ if (res.success === true) {
+ this.$refs.table.refresh(true)
+ this.$message.success(res.message)
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue
new file mode 100644
index 0000000..5726c27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleA.vue
@@ -0,0 +1,159 @@
+<template>
+ <div class="home-index-module-a-compontent">
+ <div class="card-item stylea">
+ <div class="card-row1">
+ <div class="card-icon-frame">
+ <div class="card-icon-box">
+ <div class="card-icon-circle"></div>
+ <div class="card-icon-font">
+ <a-icon type="export" />
+ </div>
+ </div>
+ </div>
+ <div class="crad-num">{{count.out}}</div>
+ </div>
+ <div class="card-row2">鍑哄簱浠诲姟閲�</div>
+ </div>
+ <div class="divider"></div>
+ <div class="card-item styleb">
+ <div class="card-row1">
+ <div class="card-icon-frame">
+ <div class="card-icon-box">
+ <div class="card-icon-circle"></div>
+ <div class="card-icon-font">
+ <a-icon type="import" />
+ </div>
+ </div>
+ </div>
+ <div class="crad-num">{{count.in}}</div>
+ </div>
+ <div class="card-row2">鍏ュ簱浠诲姟閲�</div>
+ </div>
+ <div class="divider"></div>
+ <div class="card-item stylea">
+ <div class="card-row1">
+ <div class="card-icon-frame">
+ <div class="card-icon-box">
+ <div class="card-icon-circle"></div>
+ <div class="card-icon-font">
+ <a-icon type="export" />
+ </div>
+ </div>
+ </div>
+ <div class="crad-num">{{count.move}}</div>
+ </div>
+ <div class="card-row2">绉诲簱浠诲姟閲�</div>
+ </div>
+ </div>
+</template>
+
+<script>
+import { GeInOutTotalNumber} from '@/api/modular/system/homeManage'
+export default {
+ name:'homeIndexModuleACompontent',
+ data(){
+ return {
+ count:{
+ in:0,
+ out:0,
+ move:0
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.getData()
+ },
+ getData(callback){
+ GeInOutTotalNumber().then((d)=>{
+ this.count.in = d.data.rukuNum || 0
+ this.count.out = d.data.chukuNum || 0
+ this.count.move = d.data.yikuNum || 0
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ }
+ },
+ mounted(){
+ this.init()
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-a-compontent{
+ display: flex;
+ .divider{
+ width:24px;
+ flex-shrink: 0;
+ }
+ .card-item{
+ width: 1px;
+ flex-grow: 1;
+ height:120px;
+ border-radius: 6px;
+ &.stylea{
+ background-image: linear-gradient(115.159deg, rgb(252, 198, 135) 0%, rgb(249, 211, 34) 1%, rgb(248, 56, 0) 99%, rgb(242, 134, 160) 100%);
+ }
+ &.styleb{
+ background-image: linear-gradient(115.159deg, rgb(127, 254, 216) 0%, rgb(54, 208, 220) 0%, rgb(90, 134, 229) 100%, rgb(9, 189, 254) 100%);
+ }
+ .card-row1{
+ width:100%;
+ display: flex;
+ .card-icon-frame{
+ flex-shrink: 0;
+ padding:16px 10px 0 16px;
+ .card-icon-box{
+ width: 60px;
+ height: 60px;
+ position: relative;
+ }
+ .card-icon-circle,.card-icon-font{
+ position: absolute;
+ top:0;
+ left:0;
+ width: 100%;
+ height: 100%;
+ }
+ .card-icon-circle{
+ z-index: 10;
+ border-radius: 50%;
+ opacity: 0.1;
+ background-color: #fff;
+ }
+ .card-icon-font{
+ z-index: 20;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color:#fff;
+ font-size: 32px;
+ }
+ }
+ .crad-num{
+ flex-grow: 1;
+ display: flex;
+ white-space:nowrap;
+ align-items: center;
+ color: #fff;
+ justify-content: flex-end;
+ padding-right: 16px;
+ font-size: 28px;
+ font-weight: 700;
+ overflow: hidden;
+ }
+ }
+ .card-row2{
+ color:#fff;
+ font-size: 20px;
+ font-weight: 400;
+ padding-right: 16px;
+ text-align: right;
+ white-space:nowrap;
+ overflow: hidden;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue
new file mode 100644
index 0000000..8d2cd71
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleB.vue
@@ -0,0 +1,151 @@
+<template>
+ <div class="home-index-module-b-compontent">
+ <div class="module-box">
+ <div class="top-title">鍑哄叆搴撶粺璁�</div>
+ <div class="action-row">
+ <a-radio-group v-model:value="chartType" size="small" @change="onChangeChartType">
+ <a-radio-button :value="1">杩�7澶�</a-radio-button>
+ <a-radio-button :value="2">杩�1涓湀</a-radio-button>
+ <a-radio-button :value="3">杩�3涓湀</a-radio-button>
+ </a-radio-group>
+ </div>
+ <div class="line-chart-block">
+ <div style="height: 100%;" :id="chartid"></div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import { markRaw } from 'vue'
+import { GeInOutTaskNumber} from '@/api/modular/system/homeManage'
+export default {
+ name:'homeIndexModuleBCompontent',
+ data(){
+ return {
+ chartType:1,
+ chartid:'',
+ chart:null,
+ dataSource:[],
+ defaultOption:{
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend:{
+ show:true
+ },
+ grid: {
+ left: 30,
+ right: 10,
+ bottom: 70
+ },
+ xAxis: {
+ data: []
+ },
+ yAxis: {},
+ dataZoom: [
+ {
+ startValue: '2014-06-01',
+ type: 'slider'
+ }
+ ],
+ series: [
+ {name:'鍏ュ簱',type:'line',data:[],smooth: true},
+ {name:'鍑哄簱',type:'line',data:[],smooth: true}
+ ]
+ }
+ }
+ },
+ methods:{
+ init(){
+ setTimeout(()=>{
+ this.getData()
+ },200)
+ },
+ onChangeChartType(){
+ this.getData()
+ },
+ createChart(){
+ if (!this.chart) {
+ this.chart = markRaw(echarts.init(window.document.getElementById(this.chartid)))
+ }
+ },
+ getData(){
+ let params = {LookType:this.chartType}
+ GeInOutTaskNumber(params).then((d)=>{
+ this.dataSource = d.data || []
+ this.drawChart()
+ }).catch(()=>{
+
+ })
+ },
+ drawChart(){
+ if (this.dataSource.length<=0) return false;
+ let opt = JSON.parse(JSON.stringify(this.defaultOption))
+ if (this.dataSource.length<=8) {
+ opt.grid.bottom = 30
+ delete opt.dataZoom;
+ } else {
+ opt.dataZoom[0].startValue = this.dataSource[0].dateStr;
+ }
+ for (let i=0;i<this.dataSource.length;i++) {
+ opt.xAxis.data.push(this.dataSource[i].dateStr)
+ opt.series[0].data.push(this.dataSource[i].rukuNum)
+ opt.series[1].data.push(this.dataSource[i].chukuNum)
+ }
+ this.destoryChart()
+ this.createChart()
+ this.chart.setOption(opt)
+ },
+ destoryChart(){
+ try{
+ this.chart.dispose();
+ window.document.getElementById(this.chartid).innerHTML = '';
+ this.chart = null;
+ }catch(e){
+ //TODO handle the exception
+ }
+ }
+ },
+ created() {
+ this.chartid = 'chart-'+new Date().getTime();
+ },
+ beforeDestroy() {
+ this.destoryChart()
+ },
+ mounted() {
+ this.init()
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-b-compontent{
+ height:100%;
+ box-sizing: border-box;
+ padding-top: 24px;
+ .module-box{
+ background-color: #fff;
+ border-radius: 10px;
+ height:100%;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ .top-title,.action-row{
+ flex-shrink: 0;
+ }
+ .top-title{
+ background-color: #fff;
+ padding:8px 16px;
+ font-size: 18px;
+ }
+ .action-row{
+ padding: 0 20px 12px 50px;
+ }
+ .line-chart-block{
+ flex-grow:1;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue
new file mode 100644
index 0000000..7b4a9b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/ModuleC.vue
@@ -0,0 +1,223 @@
+<template>
+ <div class="home-index-module-c-compontent">
+ <div class="top-title">搴撳瓨缁熻</div>
+ <div class="module-c-contianer">
+ <div class="pie-chart-block" ref="chart"></div>
+ <div class="info-block">
+ <div class="num-item-row">
+ <div class="label">鎬诲簱浣嶏細</div>
+ <div class="num">{{chartData.total}}</div>
+ </div>
+ <div class="num-item-row" v-for="(item,index) in chartData.list" :key="'num-item-'+index">
+ <div class="label">{{item.text}}锛�</div>
+ <div class="num">{{item.num}}</div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import { GetPalceNumbers} from '@/api/modular/system/homeManage'
+export default {
+ name:'homeIndexModuleCCompontent',
+ data(){
+ return {
+ $dom:null,
+ chart:null,
+ defaultOption:{
+ tooltip: {
+ trigger: 'item',
+ formatter: "{a} <br/>{b}: {c} ({d}%)"
+ },
+ legend: {
+ show: false
+ },
+ title:{
+ text:"80.02%",
+ left:"center",
+ top:"45%",
+ textStyle:{
+ color:"#000",
+ fontSize:30,
+ align:"center"
+ }
+ },
+ graphic:{
+ type:"text",
+ left:"center",
+ top:"38%",
+ style:{
+ text:"瀛樿揣鍗犳瘮",
+ textAlign:"center",
+ fill:"#929292",
+ fontSize:18
+ }
+ },
+ series: [
+ {
+ name: '搴撳瓨鍗犳瘮',
+ type: 'pie',
+ radius: ['60px', '80px'],
+ avoidLabelOverlap: false,
+ itemStyle: {
+ borderRadius: 4,
+ borderColor: '#fff',
+ borderWidth: 2
+ },
+ label:{
+ formatter: '{fc|{b}}\n{hr|}\n{fc|{d}%} ',
+ rich: {
+ fc: {
+ color: '#333',
+ fontSize:12,
+ lineHeight:16,
+ align: 'center'
+ },
+ hr: {
+ borderColor: '#666',
+ width: '100%',
+ borderWidth: 1,
+ height: 0
+ }
+ }
+ },
+ labelLine:{
+ length:10,
+ length2:5
+ },
+ data: []
+ }
+ ]
+ },
+ chartData:{
+ total:0,
+ list:[],
+ totalRate:'1%'
+ }
+ }
+ },
+ methods:{
+ init(){
+ this.getData((f)=>{
+ if (f) {
+ this.createChart();
+ this.drawChart();
+ }
+ })
+ },
+ getData(callback){
+ GetPalceNumbers().then((d)=>{
+ let _arr = [], _obj={};
+ _obj = {text:'绌哄簱浣�',num:(d.data.emptyNum||0),color:['#5988e5','#36cfdc']}
+ _arr.push(_obj)
+ _obj = {text:'鏈夎揣搴撲綅',num:(d.data.cunhuoNum||0),color:['#f9cf21','#f84302']}
+ _arr.push(_obj)
+ _obj = {text:'绌烘墭搴撲綅',num:(d.data.emptyContainerNum||0),color:['#66b53d','#d4f9a6']}
+ _arr.push(_obj)
+ this.chartData.list = _arr;
+ let _total = 0;
+ this.chartData.list.forEach((item)=>{
+ _total = _total + item.num
+ })
+ this.chartData.total = _total
+ let _hasNum = d.data.cunhuoNum||0
+ this.chartData.totalRate = _total?(Number(((_hasNum/_total)*100).toFixed(2)) + '%'):'0%';
+ callback && callback(true)
+ }).catch(()=>{
+ callback && callback(false)
+ })
+ },
+ drawChart(){
+ let arr = [];
+ this.chartData.list.forEach((item)=>{
+ arr.push({
+ value:item.num,
+ name:item.text,
+ itemStyle:{
+ normal:{
+ color:new echarts.graphic.LinearGradient(1, 0, 0, 0,[{offset:0,color:item.color[0]},{offset:1,color:item.color[1]}])
+ }
+ }
+ })
+ })
+ let opt = {...this.defaultOption}
+ opt.series[0].data = arr;
+ opt.title.text = this.chartData.totalRate;
+ this.chart.setOption(opt)
+ },
+ createChart(){
+ if (!this.$dom) {
+ this.$dom = this.$refs.chart;
+ this.chart = echarts.init(this.$dom)
+ }
+ },
+ destoryChart(){
+ try{
+ this.chart.dispose();
+ this.$dom.innerHTML = '';
+ this.$dom = null;
+ }catch(e){
+ //TODO handle the exception
+ }
+ }
+ },
+ mounted(){
+ this.init()
+ },
+ beforeDestroy(){
+ this.destoryChart()
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-module-c-compontent{
+ background-color: #F0F8FF;
+ border-radius: 10px;
+ height:100%;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ .top-title{
+ flex-shrink: 0;
+ background-color: #fff;
+ padding:8px 16px;
+ font-size: 18px;
+ }
+ .module-c-contianer{
+ flex-grow: 1;
+ display: flex;
+ flex-direction: column;
+ .pie-chart-block{
+ height:240px;
+ flex-shrink: 0;
+ }
+ .info-block{
+ flex-grow: 1;
+ overflow: auto;
+ .num-item-row{
+ display: flex;
+ font-size: 28px;
+ padding:4px 16px;
+ .label{
+ width:200px;
+ flex-shrink: 0;
+ color:#999;
+ white-space:nowrap;
+ overflow: hidden;
+ }
+ .num{
+ flex-grow:1;
+ text-align: right;
+ color:#333;
+ white-space:nowrap;
+ overflow: hidden;
+ }
+ }
+ }
+ }
+
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue
new file mode 100644
index 0000000..0645f18
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/index/welcome.vue
@@ -0,0 +1,79 @@
+<template>
+ <div class="home-index-page" ref="page" :style="{height:pageHeight}">
+ <div class="block-left">
+ <div class="block-left-top"><module-a /></div>
+ <div class="block-left-bottom"><module-b /></div>
+ </div>
+ <div class="block-right"><module-c /></div>
+ </div>
+</template>
+
+<script>
+import ModuleA from './ModuleA.vue'
+import ModuleB from './ModuleB.vue'
+import ModuleC from './ModuleC.vue'
+export default {
+ name:'homeIndexPage',
+ components:{ModuleA,ModuleB,ModuleC},
+ data(){
+ return {
+ pageHeight:'100%'
+ }
+ },
+ watch:{
+ '$store.state.app.multiTab':{
+ deep:true,
+ handler:(newVal,oldVal)=>{
+ this.calPageHeight(newVal)
+ }
+ }
+ },
+ methods:{
+ calPageHeight(hasTab){
+ if (hasTab) {
+ let _h = this.$refs.page.clientHeight;
+ if (_h) {
+ this.pageHeight = (_h-42)+'px'
+ }
+ } else {
+ this.pageHeight = '100%';
+ }
+ },
+ initPageHeight(callback){
+ setTimeout(()=>{
+ this.calPageHeight(this.$store.state.app.multiTab)
+ callback && callback()
+ },100)
+ }
+ },
+ mounted(){
+ this.initPageHeight()
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.home-index-page{
+ overflow: hidden;
+ display: flex;
+ min-width: 1000px;
+ .block-right{
+ width:30%;
+ min-width:300px;
+ flex-shrink: 0;
+ }
+ .block-left{
+ flex-grow: 1;
+ box-sizing: border-box;
+ padding-right: 24px;
+ display: flex;
+ flex-direction: column;
+ .block-left-top{
+ flex-shrink: 0;
+ }
+ .block-left-bottom{
+ flex-grow: 1;
+ }
+ }
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue
new file mode 100644
index 0000000..23236bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/machine/index.vue
@@ -0,0 +1,140 @@
+<template>
+ <div v-if="hasPerm('sysMachine:query')">
+ <!-- 绯荤粺淇℃伅 Java淇℃伅-->
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-card :loading="loading" title="绯荤粺淇℃伅" style="margin-bottom: 20px" :bordered="false">
+ <table class="sysInfo_table">
+ <tr>
+ <td class="sysInfo_td">涓绘満鍚嶇О锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.hostName }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">鎿嶄綔绯荤粺锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.systemOs }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">绯荤粺鏋舵瀯锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.osArchitecture }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">杩愯妗嗘灦锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.frameworkDescription }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">CPU鏍告暟锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.processorCount }}</td>
+ </tr>
+ </table>
+ </a-card>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-card :loading="loading" title="缃戠粶淇℃伅" style="margin-bottom: 20px" :bordered="false">
+ <table class="sysInfo_table">
+ <tr>
+ <td class="sysInfo_td">澶栫綉淇℃伅锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.wanIp }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">IPv4鍦板潃锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.lanIp }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">缃戝崱MAC锛�</td>
+ <td class="sysInfo_td">{{ this.machineBaseInfo.ipMac }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">娴侀噺缁熻锛�</td>
+ <td class="sysInfo_td">{{ this.machineNetworkInfo.sendAndReceived }}</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">缃戠粶閫熷害锛�</td>
+ <td class="sysInfo_td">{{ this.machineNetworkInfo.networkSpeed }}</td>
+ </tr>
+ </table>
+ </a-card>
+ </a-col>
+ </a-row>
+ <a-card :loading="loading" title="鍏朵粬淇℃伅" :bordered="false">
+ <table class="sysInfo_table">
+ <tr>
+ <td class="sysInfo_td">杩愯鏃堕棿锛�</td>
+ <td class="sysInfo_td">{{ this.machineUseInfo.runTime }}</td>
+ <td class="sysInfo_td">CPU浣跨敤鐜囷細</td>
+ <td class="sysInfo_td">{{ this.machineUseInfo.cpuRate }}%</td>
+ </tr>
+ <tr>
+ <td class="sysInfo_td">鎬诲唴瀛橈細</td>
+ <td class="sysInfo_td">{{ this.machineUseInfo.totalRam }}</td>
+ <td class="sysInfo_td">鍐呭瓨浣跨敤鐜囷細</td>
+ <td class="sysInfo_td">{{ this.machineUseInfo.ramRate }}%</td>
+ </tr>
+ </table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ sysMachineBase,
+ sysMachineUse,
+ sysMachineNetwork
+ } from '@/api/modular/system/machineManage'
+ export default {
+ data() {
+ return {
+ loading: true,
+ machineBaseInfo: [],
+ machineUseInfo: [],
+ machineNetworkInfo: []
+ }
+ },
+ // 杩涢〉闈㈠姞杞�
+ created() {
+ this.loadMachineBaseInfo()
+ this.loadMachineUseInfo()
+ },
+ methods: {
+ // 鍔犺浇鏁版嵁鏂规硶
+ loadMachineBaseInfo() {
+ sysMachineBase().then((res) => {
+ this.loading = false
+ this.machineBaseInfo = res.data
+ })
+ },
+ loadMachineUseInfo() {
+ sysMachineUse().then((res) => {
+ this.loading = false
+ this.machineUseInfo = res.data
+ })
+ },
+ loadMachineNetworkInfo() {
+ sysMachineNetwork().then((res) => {
+ this.loading = false
+ this.machineNetworkInfo = res.data
+ })
+ },
+ refreshData() {
+ this.loadMachineUseInfo()
+ this.loadMachineNetworkInfo()
+ }
+ },
+ mounted() {
+ this.timer = setInterval(this.refreshData, 3000)
+ },
+ beforeDestroy() {
+ clearInterval(this.timer)
+ }
+ }
+</script>
+<style lang="less">
+ .sysInfo_table {
+ width: 100%;
+ min-height: 45px;
+ line-height: 45px;
+ text-align: center;
+ }
+
+ .sysInfo_td {
+ border-bottom: 1px solid #e8e8e8;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue
new file mode 100644
index 0000000..a763c45
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/addForm.vue
@@ -0,0 +1,612 @@
+<template>
+ <a-modal
+ title="鏂板鑿滃崟"
+ :width="1000"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ :destroyOnClose="true">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鑿滃崟鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�"
+ v-decorator="['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item style="width: 100%" :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟缂栧彿" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ヨ彍鍗曠紪鍙�"
+ v-decorator="['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎵�灞炲簲鐢�" has-feedback>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟灞傜骇">
+ <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in typeData"
+ :key="index"
+ :value="item.code"
+ @click="meneTypeFunc(item.code)">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="pidShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ <div v-show="redirectShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 閲嶅畾鍚�
+ </span>
+ <a-input prop="redirect" placeholder="璇疯緭鍏ラ噸瀹氬悜鍦板潃" v-decorator="['redirect']" />
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鎵撳紑鏂瑰紡
+ </span>
+ <a-radio-group
+ :disabled="openTypeDisabled"
+ v-decorator="['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in openTypeData"
+ :key="index"
+ :value="item.code"
+ @click="meneOpenTypeFunc(item.code)">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+
+ </a-col>
+ </a-row>
+
+ <a-divider />
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="componentShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip
+ title="鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鍓嶇缁勪欢
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ュ墠绔粍浠�"
+ :disabled="componentDisabled"
+ prop="component"
+ v-decorator="['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" />
+ <!-- ,{rules: [{required: componentRequired, min: 1, message: '璇疯緭鍏ュ墠绔粍浠讹紒'}]} -->
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div v-show="routerShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip title="娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 璺敱鍦板潃
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ヨ矾鐢�"
+ v-decorator="['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" />
+ </a-form-item>
+ </div>
+ <div v-show="permissionShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏉冮檺鏍囪瘑" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ユ潈闄愭爣璇�"
+ v-decorator="['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="linkShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip title="褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttp://www.dilon.vip">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鍐呭閾惧湴鍧�
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ュ唴閾炬墦寮�鍦板潃"
+ :disabled="linkDisabled"
+ v-decorator="['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div v-show="iconShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍥炬爣">
+ <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-decorator="['icon']">
+ <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+ </a-input>
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鏉冮噸
+ </span>
+ <a-radio-group v-decorator="['weight']">
+ <a-radio v-for="(item,index) in weightData" :key="index" :value="item.code">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄惁鍙">
+ <a-switch
+ id="visible"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['visible', { valuePropName: 'checked' }]" /><!-- defaultChecked -->
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+ <a-input-number style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞" hasFeedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ </a-form>
+ </a-spin>
+ <a-modal
+ :width="850"
+ :visible="visibleIcon"
+ @cancel="handleCancelIcon"
+ footer=""
+ :mask="false"
+ :closable="false"
+ :destroyOnClose="true">
+ <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+ </a-modal>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree,
+ sysMenuAdd
+ } from '@/api/modular/system/menuManage'
+ import IconSelector from '@/components/IconSelector'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ components: {
+ IconSelector
+ },
+
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 6
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ visibleIcon: false,
+ visible: false,
+ confirmLoading: false,
+ appData: [],
+ menuTreeData: [],
+ redirectShow: true,
+ componentShow: true,
+ componentDisabled: false,
+ componentRequired: true,
+ routerRequired: true,
+ routerShow: true,
+ iconShow: true,
+ openTypeShow: true,
+ pidShow: true,
+ permissionShow: true,
+ permissionRequired: true,
+ // 鍥炬爣缁勪欢
+ currentSelectedIcon: 'pause-circle',
+ typeData: [],
+ openTypeData: [],
+ weightData: [],
+ formLoading: true,
+ linkShow: true,
+ openTypeDisabled: false,
+ openTypeDefault: [],
+ openType: '',
+ linkRequired: true,
+ linkDisabled: false,
+ type: '',
+ form: this.$form.createForm(this)
+ }
+ },
+
+ methods: {
+ // 鎵撳紑椤甸潰鍒濆鍖�
+ add(type) {
+ this.visible = true
+ // 鍥炬爣
+ this.currentSelectedIcon = type
+
+ // 榛樿閫変腑鑿滃崟椤癸紝骞跺垵濮嬪寲
+ this.form.getFieldDecorator('type', {
+ valuePropName: 'checked',
+ initialValue: '1'
+ })
+ this.meneTypeFunc('1')
+
+ // 榛樿閫変腑鐨勫崟閫夋
+ // this.form.getFieldDecorator('type',{valuePropName:'checked',initialValue:'1'})
+ this.form.getFieldDecorator('weight', {
+ valuePropName: 'checked',
+ initialValue: '2'
+ })
+ this.form.getFieldDecorator('visible', {
+ initialValue: true
+ })
+
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ this.sysDictTypeDropDown()
+ },
+
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ this.formLoading = true
+ // 鑿滃崟绫诲瀷
+ sysDictTypeDropDown({
+ code: 'menu_type'
+ }).then((res) => {
+ this.typeData = res.data
+ })
+ // 鏉冮噸
+ sysDictTypeDropDown({
+ code: 'menu_weight'
+ }).then((res) => {
+ this.weightData = res.data
+ })
+ // 鍐呭閾�
+ sysDictTypeDropDown({
+ code: 'open_type'
+ }).then((res) => {
+ this.openTypeData = res.data
+ this.formLoading = false
+ })
+ },
+
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.form.resetFields(`pid`, [])
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+
+ /**
+ * 閫夋嫨鑿滃崟绫诲瀷鎵ц鍒濆鍖栬〃鍗曞彉閲�
+ */
+ meneTypeFunc(type) {
+ this.type = type
+ // eslint-disable-next-line eqeqeq
+ if (type == '0' || type == '1') {
+ // 鍐呭閾惧湴鍧�鏄剧ず锛岀粰绌哄��
+ this.linkShow = true
+ this.form.resetFields(`link`, [])
+ // 鍥炬爣閫夋嫨鏄剧ず
+ this.iconShow = true
+ // 璺敱蹇呭~锛岃缃┖鍊硷紝骞舵樉绀�
+ this.routerRequired = true
+ this.form.getFieldDecorator('router', {
+ initialValue: ''
+ })
+ this.routerShow = true
+ // 鏉冮檺鏍囪瘑妗嗛殣钘忥紝閫夊~锛岀粰绌哄��
+ this.permissionShow = false
+ this.permissionRequired = false
+ this.form.getFieldDecorator('permission', {
+ initialValue: ''
+ })
+ // 鎵撳紑鏂瑰紡璁剧疆涓虹粍浠� 锛岀鐢ㄩ�夋嫨鏂瑰紡
+ this.openType = '1'
+ this.form.getFieldDecorator('openType', {
+ initialValue: this.openType = '1'
+ })
+ this.openTypeDisabled = false
+ }
+ // eslint-disable-next-line eqeqeq
+ if (type == '0') {
+ // 閲嶅畾鍚戝睍绀猴紝骞剁粰绌�
+ this.redirectShow = true
+ this.form.resetFields(`redirect`, [])
+ // 缁勪欢榛樿涓烘樉绀猴紝璁剧疆鍙緭鍏ワ紝缁欓粯璁ょ粍浠� PageView锛岄獙璇佸繀濉�
+ this.componentShow = true
+ this.componentDisabled = false
+ this.form.getFieldDecorator('component', {
+ initialValue: 'PageView'
+ })
+ this.componentRequired = true
+ // 鐖剁骇鍒濆鍖栭《绾э紝骞跺皢鍏堕殣钘�
+ this.form.getFieldDecorator('pid', {
+ initialValue: '0'
+ })
+ this.pidShow = false
+ } else {
+ // eslint-disable-next-line eqeqeq
+ if (type == '1') {
+ // 缁勪欢鍙互鎵嬭緭锛屽彇娑堝��
+ this.componentDisabled = false
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ }
+ // 閲嶅畾鍚戣緭鍏ラ殣钘忥紝骞剁粰绌哄��
+ this.redirectShow = false
+ this.form.getFieldDecorator('redirect', {
+ initialValue: ''
+ })
+ // 鐖剁骇閫夋嫨鏀惧紑
+ this.pidShow = true
+ }
+ // eslint-disable-next-line eqeqeq
+ if (type == '2') {
+ // 缁勪欢璁剧疆涓嶅~锛屼笉鍙緭鍏ワ紝骞剁粰绌猴紙鎵嬭緭鐨勮窡璁剧疆鐨勶級
+ this.componentRequired = false
+ this.componentDisabled = true
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ // 璺敱閫夊~锛岃缃┖鍊硷紝骞堕殣钘�
+ this.routerRequired = true
+ this.form.getFieldDecorator('router', {
+ initialValue: ''
+ })
+ this.routerShow = false
+ // 鍐呭閾惧湴鍧�闅愯棌锛岀粰绌哄��
+ this.linkShow = false
+ this.form.getFieldDecorator('link', {
+ initialValue: ''
+ })
+ // 鏉冮檺鏍囪瘑妗嗘樉绀猴紝蹇呭~锛岀粰绌哄��
+ this.permissionShow = true
+ this.permissionRequired = true
+ this.form.getFieldDecorator('permission', {
+ initialValue: ''
+ })
+ // 鍥炬爣閫夋嫨闅愯棌,骞剁粰绌�
+ this.iconShow = false
+ this.form.getFieldDecorator('icon', {
+ initialValue: ''
+ })
+ // 鎵撳紑鏂瑰紡璁剧疆涓烘棤 锛岀鐢ㄩ�夋嫨鏂瑰紡
+ this.openType = '0'
+ this.form.getFieldDecorator('openType', {
+ initialValue: this.openType
+ })
+ this.openTypeDisabled = true
+ // 鍙栨秷icon
+ this.form.getFieldDecorator('icon', {
+ initialValue: ''
+ })
+ }
+ this.meneOpenTypeFunc(this.openType)
+ },
+
+ /**
+ * 閫夋嫨鎵撳紑鏂瑰紡鎵ц鏂规硶
+ */
+ meneOpenTypeFunc(openType) {
+ this.form.resetFields(`openType`, openType)
+ // eslint-disable-next-line eqeqeq
+ if (openType == '2' || openType == '3') {
+ // 鐐瑰嚮鍐呭閾剧殑鏃跺�欎繚鐣欏師鍊硷紝鍏朵粬娓呯┖
+ if (this.linkDisabled === false) {
+ this.form.resetFields(`link`, [])
+ }
+ // 璁剧疆鍐呭閾惧彲鎵嬭緭锛屽姞楠岃瘉
+ this.linkDisabled = false
+ this.linkRequired = true
+ } else {
+ // 璁剧疆鍐呭閾句笉鍙墜杈擄紝鍙栨秷鍊硷紝鍙栨秷楠岃瘉
+ this.linkDisabled = true
+ this.form.resetFields(`link`, [])
+ this.linkRequired = false
+ }
+ // 鍙﹁捣涓�涓垎鏀�
+ // eslint-disable-next-line eqeqeq
+ if (openType == '3') {
+ this.componentRequired = false
+ this.componentDisabled = true
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ } else {
+ this.componentRequired = true
+ // eslint-disable-next-line eqeqeq
+ if (this.type == '1' || this.type == '2') {
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ } else {
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: 'PageView'
+ })
+ }
+ // eslint-disable-next-line eqeqeq
+ if (openType == '2') {
+ // 缁勪欢璁剧疆涓� iframe
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: 'Iframe'
+ })
+ }
+ }
+ // eslint-disable-next-line eqeqeq
+ if (this.type == '2') {
+ // eslint-disable-next-line eqeqeq
+ if (openType == '0') {
+ this.componentRequired = false
+ this.routerRequired = false
+ }
+ }
+ },
+
+ openIconSele() {
+ this.visibleIcon = true
+ },
+ handleIconChange(icon) {
+ this.form.getFieldDecorator('icon', {
+ initialValue: icon
+ })
+ this.visibleIcon = false
+ },
+ handleCancelIcon() {
+ this.visibleIcon = false
+ },
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ if (values.visible) {
+ values.visible = 'Y'
+ } else {
+ values.visible = 'N'
+ }
+ values.type = parseInt(values.type)
+ values.openType = parseInt(values.openType)
+ values.weight = parseInt(values.weight)
+ sysMenuAdd(values).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.confirmLoading = false
+ this.visible = false
+ }
+ }
+
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue
new file mode 100644
index 0000000..3d9d251
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/editForm.vue
@@ -0,0 +1,677 @@
+<template>
+
+ <a-modal
+ title="缂栬緫鑿滃崟"
+ :width="1000"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ :destroyOnClose="true">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鑿滃崟鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ヨ彍鍗曞悕绉�"
+ v-decorator="['name',{rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曞悕绉帮紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item style="width: 100%" :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟缂栧彿" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ヨ彍鍗曠紪鍙�"
+ v-decorator="['code', {rules: [{required: true, min: 1, message: '璇疯緭鍏ヨ彍鍗曠紪鍙凤紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎵�灞炲簲鐢�" has-feedback>
+ <a-select
+ style="width: 100%"
+
+ placeholder="璇烽�夋嫨搴旂敤鍒嗙被"
+ v-decorator="['application', {rules: [{ required: true, message: '璇烽�夋嫨搴旂敤鍒嗙被锛�' }]}]">
+ <a-select-option
+ v-for="(item,index) in appData"
+ :key="index"
+ :value="item.code"
+ @click="changeApplication(item.code)">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鑿滃崟灞傜骇">
+ <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨鑿滃崟灞傜骇锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in typeData"
+ :key="index"
+ :value="item.code"
+ @click="meneTypeFunc(item.code)">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="pidShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鐖剁骇鑿滃崟" has-feedback>
+ <a-tree-select
+ v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨鐖剁骇鑿滃崟锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="menuTreeData"
+ placeholder="璇烽�夋嫨鐖剁骇鑿滃崟"
+ treeDefaultExpandAll
+ @change="setPid">
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+ </div>
+ <div v-show="redirectShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="濡傞渶鎵撳紑棣栭〉鍔犺浇姝ょ洰褰曚笅鑿滃崟锛岃濉啓鍔犺浇鑿滃崟璺敱锛岃涓洪椤靛悗鍏朵粬璁剧疆鐨勪富椤靛皢琚浛浠�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 閲嶅畾鍚�
+ </span>
+ <a-input prop="redirect" placeholder="璇疯緭鍏ラ噸瀹氬悜鍦板潃" v-decorator="['redirect']" />
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="鎸夐挳锛氭棤锛岃彍鍗曪細鍐呴摼銆佸閾俱�佺粍浠�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鎵撳紑鏂瑰紡
+ </span>
+ <a-radio-group
+ :disabled="openTypeDisabled"
+ v-decorator="['openType',{rules: [{ required: true, message: '璇烽�夋嫨鎵撳紑鏂瑰紡锛�' }]}]">
+ <a-radio
+ v-for="(item,index) in openTypeData"
+ :key="index"
+ :value="item.code"
+ @click="meneOpenTypeFunc(item.code)">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+
+ </a-col>
+ </a-row>
+
+ <a-divider />
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="componentShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip
+ title="鍓嶇vue缁勪欢 views鏂囦欢澶逛笅璺緞锛屼緥锛歴ystem/menu/index銆傛敞锛氱洰褰曠骇濉啓锛歊outeView(涓嶅甫闈㈠寘灞�)锛孭ageView(甯﹂潰鍖呭睉)锛岃彍鍗曠骇鍐呴摼鎵撳紑http閾炬帴濉啓锛欼frame">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鍓嶇缁勪欢
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ュ墠绔粍浠�"
+ :disabled="componentDisabled"
+ prop="component"
+ v-decorator="['component',{rules: [{required: componentRequired, message: '璇疯緭鍏ュ墠绔粍浠�'}]}]" />
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div v-show="routerShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip title="娴忚鍣ㄦ樉绀虹殑URL锛屼緥锛�/menu锛屽搴旀墦寮�椤甸潰涓鸿彍鍗曢〉闈�">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 璺敱鍦板潃
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ヨ矾鐢�"
+ v-decorator="['router', {rules: [{required: routerRequired, message: '璇疯緭鍏ヨ矾鐢憋紒'}]}]" />
+ </a-form-item>
+ </div>
+ <div v-show="permissionShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏉冮檺鏍囪瘑" hasFeedback>
+ <a-input
+ placeholder="璇疯緭鍏ユ潈闄愭爣璇�"
+ v-decorator="['permission', {rules: [{required: permissionRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <div v-show="linkShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" hasFeedback>
+ <span slot="label">
+ <a-tooltip title="褰撻�夋嫨浜嗛渶瑕佸唴閾炬垨澶栭摼鎵撳紑鐨勯�夐」锛屾澶勮緭鍏ヨ鎵撳紑鐨勯摼鎺ュ湴鍧�锛屼緥锛歨ttps://www.dilon.vip">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鍐呭閾惧湴鍧�
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ュ唴閾炬墦寮�鍦板潃"
+ :disabled="linkDisabled"
+ v-decorator="['link', {rules: [{required: linkRequired, message: '璇疯緭鍏ユ潈闄愭爣璇嗭紒'}]}]" />
+ </a-form-item>
+ </div>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <div v-show="iconShow">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍥炬爣">
+ <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-decorator="['icon']">
+ <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+ </a-input>
+ </a-form-item>
+ </div>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="绯荤粺鏉冮噸锛氳彍鍗曞彲鍒嗛厤缁欎换浣曡鑹诧紝涓氬姟鏉冮噸锛氳彍鍗曞瓒呯骇绠$悊鍛樹笉鍙">
+ <a-icon type="question-circle-o" />
+ </a-tooltip>
+ 鏉冮噸
+ </span>
+ <a-radio-group v-decorator="['weight']">
+ <a-radio v-for="(item,index) in weightData" :key="index" :value="item.code">{{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鏄惁鍙">
+ <a-switch
+ id="visible"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['visible', { valuePropName: 'checked' }]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+ <a-input-number style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="澶囨敞" hasFeedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ </a-form>
+ </a-spin>
+ <a-modal
+ :width="850"
+ :visible="visibleIcon"
+ @cancel="handleCancelIcon"
+ footer=""
+ :mask="false"
+ :closable="false"
+ :destroyOnClose="true">
+ <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+ </a-modal>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ getAppList
+ } from '@/api/modular/system/appManage'
+ import {
+ getMenuTree,
+ sysMenuEdit
+ } from '@/api/modular/system/menuManage'
+ import IconSelector from '@/components/IconSelector'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ name: 'MenuEdit',
+ components: {
+ IconSelector
+ },
+
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 6
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ visibleIcon: false,
+ visible: false,
+ confirmLoading: false,
+ appData: [],
+ menuTreeData: [],
+ redirectShow: true,
+ componentShow: true,
+ componentDisabled: false,
+ componentRequired: true,
+ routerRequired: true,
+ routerShow: true,
+ iconShow: true,
+ openTypeShow: true,
+ pidShow: true,
+ permissionShow: true,
+ permissionRequired: true,
+ // 鍥炬爣缁勪欢
+ currentSelectedIcon: 'pause-circle',
+ typeData: [],
+ openTypeData: [],
+ weightData: [],
+ formLoading: true,
+ linkShow: true,
+ openTypeDisabled: false,
+ openTypeDefault: [],
+ openType: '',
+ linkRequired: true,
+ linkDisabled: false,
+ type: '',
+ pid: '',
+ appDisabled: false,
+ form: this.$form.createForm(this)
+ }
+ },
+
+ watch: {
+ pid(val) {
+ if (val === '0') {
+ // 鍐嶄笉鑳藉垏鎹㈠簲鐢�
+ this.appDisabled = false
+ } else {
+ this.appDisabled = true
+ }
+ }
+ },
+
+ methods: {
+ // 鎵撳紑椤甸潰鍒濆鍖�
+ edit(record) {
+ this.visible = true
+ // 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ this.getSysApplist()
+ this.sysDictTypeDropDown()
+
+ // 鍥炬爣
+ this.currentSelectedIcon = record.icon
+ // 榛樿閫変腑鑿滃崟椤癸紝骞跺垵濮嬪寲
+ this.form.getFieldDecorator('type', {
+ valuePropName: 'checked',
+ initialValue: record.type.toString()
+ })
+ this.meneTypeFunc(record.type.toString(), record.openType.toString())
+
+ // 榛樿閫変腑鐨勫崟閫夋
+ // eslint-disable-next-line no-unused-vars
+ // const visibleDef = false
+
+ // eslint-disable-next-line eqeqeq
+ if (record.visible == 'Y') {
+ this.visibleDef = true
+ } else {
+ this.visibleDef = false
+ }
+ this.form.getFieldDecorator('weight', {
+ valuePropName: 'checked',
+ initialValue: record.weight.toString()
+ })
+ this.form.getFieldDecorator('visible', {
+ valuePropName: 'checked',
+ initialValue: this.visibleDef
+ })
+ this.form.getFieldDecorator('icon', {
+ initialValue: record.icon
+ })
+ setTimeout(() => {
+ this.setMenuItem(record)
+ this.changeApplication(record.application)
+ }, 100)
+ },
+
+ setMenuItem(record) {
+ this.form.setFieldsValue({
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ application: record.application,
+ redirect: record.redirect,
+ component: record.component,
+ permission: record.permission,
+ link: record.link,
+ router: record.router,
+ sort: record.sort,
+ remark: record.remark
+ })
+ this.form.getFieldDecorator('pid', {
+ initialValue: record.pid
+ })
+ this.pid = record.pid
+ },
+
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ this.formLoading = true
+ // 鑿滃崟绫诲瀷
+ sysDictTypeDropDown({
+ code: 'menu_type'
+ }).then((res) => {
+ this.typeData = res.data
+ })
+ // 鏉冮噸
+ sysDictTypeDropDown({
+ code: 'menu_weight'
+ }).then((res) => {
+ this.weightData = res.data
+ })
+ // 鍐呭閾�
+ sysDictTypeDropDown({
+ code: 'open_type'
+ }).then((res) => {
+ this.openTypeData = res.data
+ this.formLoading = false
+ })
+ },
+
+ /**
+ * 閫夋嫨鐖剁骇
+ */
+ setPid(value) {
+ this.pid = value
+ },
+
+ getSysApplist() {
+ return getAppList().then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+ changeApplication(value) {
+ getMenuTree({
+ 'application': value
+ }).then((res) => {
+ if (res.success) {
+ this.form.resetFields(`pid`, [])
+ this.menuTreeData = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ } else {
+ this.$message.warning(res.message)
+ }
+ })
+ },
+
+ /**
+ * 閫夋嫨鑿滃崟绫诲瀷鎵ц鍒濆鍖栬〃鍗曞彉閲�
+ */
+ meneTypeFunc(type, openType) {
+ this.type = type
+ // eslint-disable-next-line eqeqeq
+ if (type == '0' || type == '1') {
+ // 鍐呭閾惧湴鍧�鏄剧ず锛岀粰绌哄��
+ this.linkShow = true
+ this.form.resetFields(`link`, [])
+ // 鍥炬爣閫夋嫨鏄剧ず
+ this.iconShow = true
+ // 璺敱蹇呭~锛岃缃┖鍊硷紝骞舵樉绀�
+ this.routerRequired = true
+ this.form.getFieldDecorator('router', {
+ initialValue: ''
+ })
+ this.routerShow = true
+ // 鏉冮檺鏍囪瘑妗嗛殣钘忥紝閫夊~锛岀粰绌哄��
+ this.permissionShow = false
+ this.permissionRequired = false
+ this.form.getFieldDecorator('permission', {
+ initialValue: ''
+ })
+ // 鎵撳紑鏂瑰紡璁剧疆涓虹粍浠� 锛岀鐢ㄩ�夋嫨鏂瑰紡
+ this.openType = openType
+ this.form.getFieldDecorator('openType', {
+ initialValue: this.openType
+ })
+ this.openTypeDisabled = false
+ }
+ // eslint-disable-next-line eqeqeq
+ if (type == '0') {
+ // 閲嶅畾鍚戝睍绀猴紝骞剁粰绌�
+ this.redirectShow = true
+ this.form.resetFields(`redirect`, [])
+ // 缁勪欢榛樿涓烘樉绀猴紝璁剧疆鍙緭鍏ワ紝缁欓粯璁ょ粍浠� PageView锛岄獙璇佸繀濉�
+ this.componentShow = true
+ this.componentDisabled = false
+ this.form.getFieldDecorator('component', {
+ initialValue: 'PageView'
+ })
+ this.componentRequired = true
+ // 鐖剁骇鍒濆鍖栭《绾э紝骞跺皢鍏堕殣钘�
+ this.form.getFieldDecorator('pid', {
+ initialValue: '0'
+ })
+ this.pid = '0'
+ this.pidShow = false
+ } else {
+ // eslint-disable-next-line eqeqeq
+ if (type == '1') {
+ // 缁勪欢鍙互鎵嬭緭锛屽彇娑堝��
+ this.componentDisabled = false
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ }
+ // 閲嶅畾鍚戣緭鍏ラ殣钘忥紝骞剁粰绌哄��
+ this.redirectShow = false
+ this.form.getFieldDecorator('redirect', {
+ initialValue: ''
+ })
+ // 鐖剁骇閫夋嫨鏀惧紑
+ this.pidShow = true
+ }
+ // eslint-disable-next-line eqeqeq
+ if (type == '2') {
+ // 缁勪欢璁剧疆涓嶅~锛屼笉鍙緭鍏ワ紝骞剁粰绌猴紙鎵嬭緭鐨勮窡璁剧疆鐨勶級
+ this.componentRequired = false
+ this.componentDisabled = true
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ // 璺敱閫夊~锛岃缃┖鍊硷紝骞堕殣钘�
+ this.routerRequired = true
+ this.form.getFieldDecorator('router', {
+ initialValue: ''
+ })
+ this.routerShow = false
+ // 鍐呭閾惧湴鍧�闅愯棌锛岀粰绌哄��
+ this.linkShow = false
+ this.form.getFieldDecorator('link', {
+ initialValue: ''
+ })
+ // 鏉冮檺鏍囪瘑妗嗘樉绀猴紝蹇呭~锛岀粰绌哄��
+ this.permissionShow = true
+ this.permissionRequired = true
+ this.form.getFieldDecorator('permission', {
+ initialValue: ''
+ })
+ // 鍥炬爣閫夋嫨闅愯棌,骞剁粰绌�
+ this.iconShow = false
+ this.form.getFieldDecorator('icon', {
+ initialValue: ''
+ })
+ // 鎵撳紑鏂瑰紡璁剧疆涓烘棤 锛岀鐢ㄩ�夋嫨鏂瑰紡
+ this.openType = '0'
+ this.form.getFieldDecorator('openType', {
+ initialValue: this.openType
+ })
+ this.openTypeDisabled = true
+ // 鍙栨秷icon
+ this.form.getFieldDecorator('icon', {
+ initialValue: ''
+ })
+ }
+ this.meneOpenTypeFunc(this.openType)
+ },
+
+ /**
+ * 閫夋嫨鎵撳紑鏂瑰紡鎵ц鏂规硶
+ */
+ meneOpenTypeFunc(openType) {
+ this.form.resetFields(`openType`, openType)
+ // eslint-disable-next-line eqeqeq
+ if (openType == '2' || openType == '3') {
+ // 鐐瑰嚮鍐呭閾剧殑鏃跺�欎繚鐣欏師鍊硷紝鍏朵粬娓呯┖
+ if (this.linkDisabled === false) {
+ this.form.resetFields(`link`, [])
+ }
+ // 璁剧疆鍐呭閾惧彲鎵嬭緭锛屽姞楠岃瘉
+ this.linkDisabled = false
+ this.linkRequired = true
+ } else {
+ // 璁剧疆鍐呭閾句笉鍙墜杈擄紝鍙栨秷鍊硷紝鍙栨秷楠岃瘉
+ this.linkDisabled = true
+ this.form.resetFields(`link`, [])
+ this.linkRequired = false
+ }
+ // 鍙﹁捣涓�涓垎鏀�
+ // eslint-disable-next-line eqeqeq
+ if (openType == '3') {
+ this.componentRequired = false
+ this.componentDisabled = true
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ } else {
+ this.componentRequired = true
+ // eslint-disable-next-line eqeqeq
+ if (this.type == '1' || this.type == '2') {
+ this.form.getFieldDecorator('component', {
+ initialValue: ''
+ })
+ } else {
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: 'PageView'
+ })
+ }
+ // eslint-disable-next-line eqeqeq
+ if (openType == '2') {
+ // 缁勪欢璁剧疆涓� iframe
+ this.form.resetFields(`component`, [])
+ this.form.getFieldDecorator('component', {
+ initialValue: 'Iframe'
+ })
+ }
+ }
+ // eslint-disable-next-line eqeqeq
+ if (this.type == '2') {
+ // eslint-disable-next-line eqeqeq
+ if (openType == '0') {
+ this.componentRequired = false
+ this.routerRequired = false
+ }
+ }
+ },
+
+ openIconSele() {
+ this.visibleIcon = true
+ },
+ handleIconChange(icon) {
+ this.form.getFieldDecorator('icon', {
+ initialValue: icon
+ })
+ // this.form.resetFields(`icon`,icon);
+
+ this.visibleIcon = false
+ },
+ handleCancelIcon() {
+ this.visibleIcon = false
+ },
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ if (values.visible) {
+ values.visible = 'Y'
+ } else {
+ values.visible = 'N'
+ }
+ values.type = parseInt(values.type)
+ values.openType = parseInt(values.openType)
+ values.weight = parseInt(values.weight)
+ sysMenuEdit(values).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.confirmLoading = false
+ this.visible = false
+ }
+ }
+
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue
new file mode 100644
index 0000000..a65c496
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/menu/index.vue
@@ -0,0 +1,267 @@
+/* eslint-disable */
+<template>
+ <a-row :gutter="24">
+ <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+ <a-card :bordered="true">
+ <a-table
+ ref="table"
+ size="middle"
+ :rowKey="(record) => record.code"
+ :pagination="false"
+ :defaultExpandAllRows="true"
+ :columns="appColumns"
+ :dataSource="appData"
+ :loading="loading"
+ showPagination="auto"
+ :row-selection="{ selectedRowKeys: selectedAppKeys, onChange: onAppSelectChange,type:'radio' }"
+ :customRow="click"
+ >
+ <!--:rowSelection="rowSelectionon"-->
+
+ <span slot="type" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+
+ <span slot="icon" slot-scope="text">
+ <div v-if="text != null && text != ''">
+ <a-icon :type="text"/>
+ </div>
+ </span>
+ </a-table>
+ </a-card>
+ </a-col>
+ <a-col :md="19" :sm="24">
+ <a-card :bordered="false">
+ <div class="table-operator" v-if="hasPerm('sysMenu:add')">
+ <a-button type="primary" v-if="hasPerm('sysMenu:add')" icon="plus" @click="$refs.addForm.add()">鏂板鑿滃崟
+ </a-button>
+ </div>
+ <!--<div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+ <i class="anticon anticon-info-circle ant-alert-icon"></i>宸查�夋嫨 <a style="font-weight: 600">{{this.selectedRowKeys.length }}</a>椤�
+ <a style="margin-left: 24px" @click="clearSele()">娓呯┖</a>
+ </div>-->
+ <a-table
+ ref="table"
+ size="middle"
+ :rowKey="(record) => record.id"
+ :pagination="false"
+ :defaultExpandAllRows="true"
+ :columns="columns"
+ :dataSource="data"
+ :loading="loading"
+ showPagination="auto"
+ :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <!--:rowSelection="rowSelectionon"-->
+
+ <span slot="type" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+
+ <span slot="icon" slot-scope="text">
+ <div v-if="text != null && text != ''">
+ <a-icon :type="text"/>
+ </div>
+ </span>
+
+ <span slot="action" slot-scope="text, record">
+ <template>
+ <a v-if="hasPerm('sysMenu:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysMenu:edit') & hasPerm('sysMenu:delete')"/>
+ <a-popconfirm v-if="hasPerm('sysMenu:delete')" placement="topRight" title="鍒犻櫎鏈彍鍗曚笌涓嬬骇锛�"
+ @confirm="() => handleDel(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </template>
+ </span>
+ </a-table>
+
+ <add-form ref="addForm" @ok="handleOk"/>
+ <edit-form ref="editForm" @ok="handleOk"/>
+ </a-card>
+ </a-col>
+ </a-row>
+
+</template>
+
+<script>
+ import { getMenuList, sysMenuDelete } from '@/api/modular/system/menuManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+ import { getAppList } from '@/api/modular/system/appManage'
+
+ export default {
+ components: {
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ queryParam: {},
+ data: [],
+ appData: [],
+ loading: true,
+ columns: [
+ {
+ title: '鑿滃崟鍚嶇О',
+ dataIndex: 'name',
+ width: '20%'
+ },
+ {
+ title: '鑿滃崟绫诲瀷',
+ dataIndex: 'type',
+ scopedSlots: { customRender: 'type' }
+ },
+ {
+ title: '鍥炬爣',
+ dataIndex: 'icon',
+ scopedSlots: { customRender: 'icon' }
+ },
+ {
+ title: '缁勪欢',
+ dataIndex: 'component',
+ width: '20%',
+ ellipsis: true
+ },
+ {
+ title: '璺敱鍦板潃',
+ dataIndex: 'router',
+ key: 'router',
+ ellipsis: true
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ }
+ ],
+ appColumns: [{
+ title: '搴旂敤鍚嶇О',
+ dataIndex: 'name'
+ }],
+ selectedRowKeys: [],
+ selectedAppKeys: [],
+ typeDict: []
+ }
+ },
+ created() {
+ this.loadData()
+ if (this.hasPerm('sysMenu:edit') || this.hasPerm('sysMenu:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ width: '150px',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+
+ methods: {
+ loadData() {
+ this.loading = true
+ getAppList(this.queryParam).then((res) => {
+ if (res.success) {
+ this.appData = res.data
+ this.removeEmptyChildren(this.appData)
+ }
+ }).finally(() => {
+ this.loading = false
+ })
+ this.sysDictTypeDropDown()
+ },
+
+ removeEmptyChildren(data) {
+ if (data == null || data.length === 0) return
+ for (let i = 0; i < data.length; i++) {
+ const item = data[i]
+ if (item.children != null && item.children.length === 0) {
+ item.children = null
+ } else {
+ this.removeEmptyChildren(item.children)
+ }
+ }
+ },
+
+ typeFilter(type) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.typeDict.filter(item => item.code == type)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({ code: 'menu_type' }).then((res) => {
+ this.typeDict = res.data
+ })
+ },
+
+ refreshSele() {
+ this.onAppSelectChange(this.selectedAppKeys)
+ },
+ handleOk() {
+ this.onAppSelectChange(this.selectedAppKeys)
+ },
+ handleDel(record) {
+ sysMenuDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.onAppSelectChange(this.selectedAppKeys)
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('閿欒锛�' + err.message)
+ })
+ },
+
+ onSelectChange(selectedRowKeys) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+ onAppSelectChange(selectedRowKeys) {
+ this.selectedAppKeys = selectedRowKeys
+ if (selectedRowKeys.length > 0) {
+ this.queryParam.application = selectedRowKeys[0]
+ getMenuList(this.queryParam).then((res) => {
+ if (res.success) {
+ this.data = res.data
+ this.removeEmptyChildren(this.data)
+ }
+ }).finally(() => {
+ this.loading = false
+ })
+ }
+ },
+ click(record, index) {
+ return {
+ on: {
+ click: () => {
+ const keys = []
+ keys.push(record.code)
+ this.selectedAppKeys = keys
+ this.onAppSelectChange(this.selectedAppKeys)
+ }
+ }
+ }
+ },
+ clearSele() {
+ this.selectedRowKeys = []
+ }
+ }
+ }
+
+</script>
+<style scoped>
+
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue
new file mode 100644
index 0000000..814845e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/auditor.vue
@@ -0,0 +1,116 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('myworkflow:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="娴佺▼鍚嶇О">
+ <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <span slot="status" slot-scope="text">
+ <a-tag v-if="text === 0" color="orange">
+ {{ '鏈畬鎴�' }}
+ </a-tag>
+ <a-tag v-if="text === 1" color="green">
+ {{ '宸插畬鎴�' }}
+ </a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.workflowId,record.executionPointerId,record.formId)" >鏌ョ湅</a>
+ </span>
+ </s-table>
+ </a-spin>
+ </a-card>
+ <view-workflow ref="viewworkflow"></view-workflow>
+ </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMyUnAuditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import ViewWorkflow from './components/viewworkflow.vue'
+export default {
+ name: 'AuditorWorkflow',
+ components: {
+ STable,
+ XCard,
+ ViewWorkflow
+ },
+ data() {
+ return {
+ queryParam: {},
+ loading: true,
+ columns: [
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+
+ {
+ title: '浠诲姟鍚嶇О',
+ dataIndex: 'stepName'
+ },
+ {
+ title: '鍙戣捣浜�',
+ dataIndex: 'createUserName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createTime'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ },
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ this.queryParam.status = 1
+ return getMyUnAuditorWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.loading = false
+ return res.data
+ })
+ }
+ }
+ },
+ methods: {
+ viewworkflow(id, executionPointerId, formId) {
+ this.$refs.viewworkflow.init(id, executionPointerId, formId)
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue
new file mode 100644
index 0000000..1d67c14
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/auditoropera.vue
@@ -0,0 +1,137 @@
+<template>
+ <a-drawer
+ title="娴佺▼瀹℃牳"
+ placement="right"
+ width="1000px"
+ :maskClosable="true"
+ :destroyOnClose="true"
+ :closable="true"
+ :visible="visible"
+ @close="onClose"
+ >
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <k-form-build v-show="loading == false" ref="kfb" :value="jsonData" :disabled="true"/>
+ <a-form-model v-show="loading == false" :model="form" :label-col="labelCol" :wrapper-col="wrapperCol">
+ <a-form-model-item label="澶勭悊">
+ <a-radio-group v-model="form.resource">
+ <a-radio :value="true" :checked="true">
+ 鍚屾剰
+ </a-radio>
+ <a-radio :value="false">
+ 涓嶅悓鎰�
+ </a-radio>
+ </a-radio-group>
+ </a-form-model-item>
+ <a-form-model-item label="澶囨敞">
+ <a-textarea v-model="form.reMark" />
+ </a-form-model-item>
+ </a-form-model>
+ <div
+ :style="{
+ position: 'absolute',
+ right: 0,
+ bottom: 0,
+ width: '100%',
+ borderTop: '1px solid #e9e9e9',
+ padding: '10px 16px',
+ background: '#fff',
+ textAlign: 'right',
+ zIndex: 1,
+ }"
+ >
+ <a-button :style="{ marginRight: '8px' }" @click="onClose">
+ 鍙栨秷
+ </a-button>
+ <a-button type="primary" @click="submit()">
+ 鎻愪氦
+ </a-button>
+ </div>
+ <time v-show="loading == false" v-for="item in stepAuditor" :key="item.auditorName">
+ <a-timeline-item :color="setColor(item.status)">
+ <p>{{ item.auditorTime }}</p>
+ <p>{{ item.auditorName }}</p>
+ <p>{{ item.reMark }}</p>
+ </a-timeline-item>
+ </time>
+ </a-drawer>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntityView } from '@/api/modular/system/formDesignmanage'
+import { inputsWorkflow } from '@/api/modular/system/workflowManage'
+import { getStepAuditor, auditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import { Timeline } from 'ant-design-vue'
+export default {
+ name: 'AuditorOpera',
+ components: {
+ [Timeline.Item.name]: Timeline.Item
+ },
+ props: {
+
+ },
+ data () {
+ return {
+ visible: false,
+ loading: true,
+ executionPointerId: null,
+ labelCol: { span: 4 },
+ wrapperCol: { span: 14 },
+ form: {
+ reMark: '',
+ resource: true
+ },
+ jsonData: {},
+ jsonValue: {},
+ stepAuditor: []
+ }
+ },
+ methods: {
+ init(id, executionPointerId, formId) {
+ this.visible = true
+ this.executionPointerId = executionPointerId
+ formEntityView(Object.assign({ id: formId })).then(res => {
+ this.jsonData = JSON.parse(res.data.formJson) // res.data.nodesList
+ inputsWorkflow(Object.assign({ workflowId: id })).then(res => {
+ this.loading = false
+ this.$refs.kfb.setData(res.data)
+ })
+ })
+ getStepAuditor(Object.assign({ workflowId: id })).then(res => {
+ this.stepAuditor = res.data
+ })
+ },
+ setColor(status) {
+ if (status === 0) {
+ return 'red'
+ } else if (status === 1) {
+ return 'green'
+ } else if (status === 2) {
+ return 'orange'
+ }
+ },
+ submit() {
+ var data = {
+ executionPointerId: this.executionPointerId,
+ status: this.form.resource === true ? 1 : 0,
+ Remark: this.form.reMark
+ }
+ auditorWorkflow(Object.assign(data)).then(res => {
+ console.log(res)
+ })
+ },
+ onClose() {
+ this.visible = false
+ this.form.reMark = ''
+ this.form.resource = true
+ this.loading = true
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue
new file mode 100644
index 0000000..8f6d4e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/components/viewworkflow.vue
@@ -0,0 +1,99 @@
+<template>
+ <a-drawer
+ title="娴佺▼瀹℃牳"
+ placement="right"
+ width="1000px"
+ :maskClosable="true"
+ :destroyOnClose="true"
+ :closable="true"
+ :visible="visible"
+ @close="onClose"
+ >
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <k-form-build v-show="loading == false" ref="kfb" :value="jsonData" :disabled="true"/>
+ <a-divider>娴佺▼璺嚎</a-divider>
+ <a-skeleton :active="true" :loading="loading" :paragraph="true" :title="true" />
+ <time v-show="loading == false" v-for="item in stepAuditor" :key="item.stepName">
+ <a-timeline-item style="margin-left:100px" :color="setColor(item.status)">
+ <p class="title">
+ <span >{{ item.stepName }}</span>
+ <span style="margin-left:10px">{{ item.auditorTime }}</span>
+ </p>
+ <p v-if="item.auditorName !== ''">{{ item.auditorName }}</p>
+ <p v-if="item.auditorName !== ''">{{ item.reMark }}</p>
+ </a-timeline-item>
+ </time>
+ </a-drawer>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntityView } from '@/api/modular/system/formDesignmanage'
+import { inputsWorkflow } from '@/api/modular/system/workflowManage'
+import { getStepAuditor } from '@/api/modular/system/auditorworkflowManage'
+import { Timeline } from 'ant-design-vue'
+export default {
+ name: 'ViewWorkflow',
+ components: {
+ [Timeline.Item.name]: Timeline.Item
+ },
+ props: {
+
+ },
+ data () {
+ return {
+ visible: false,
+ loading: true,
+ executionPointerId: null,
+ labelCol: { span: 4 },
+ wrapperCol: { span: 14 },
+ form: {
+ reMark: '',
+ resource: true
+ },
+ jsonData: {},
+ jsonValue: {},
+ stepAuditor: []
+ }
+ },
+ methods: {
+ init(id, executionPointerId, formId) {
+ this.visible = true
+ this.executionPointerId = executionPointerId
+ formEntityView(Object.assign({ id: formId })).then(res => {
+ this.jsonData = JSON.parse(res.data.formJson) // res.data.nodesList
+ inputsWorkflow(Object.assign({ workflowId: id })).then(res => {
+ this.loading = false
+ this.$refs.kfb.setData(res.data)
+ })
+ })
+ getStepAuditor(Object.assign({ workflowId: id })).then(res => {
+ console.log(res)
+ this.stepAuditor = res.data
+ })
+ },
+ setColor(status) {
+ if (status === 0) {
+ return 'red'
+ } else if (status === 1) {
+ return 'green'
+ } else if (status === 2) {
+ return 'orange'
+ }
+ },
+ onClose() {
+ this.visible = false
+ this.form.reMark = ''
+ this.form.resource = true
+ this.loading = true
+ }
+ }
+}
+</script>
+
+<style>
+.title{
+ font-weight: bolder;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue
new file mode 100644
index 0000000..d74af96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/create.vue
@@ -0,0 +1,149 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('myworkflow:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="娴佺▼鍚嶇О">
+ <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <span slot="status" slot-scope="text">
+ <a-tag v-if="text === 0" color="orange">
+ {{ '鏈畬鎴�' }}
+ </a-tag>
+ <a-tag v-if="text === 1" color="blue">
+ {{ '鏆傚仠' }}
+ </a-tag>
+ <a-tag v-if="text === 2" color="green">
+ {{ '宸插畬鎴�' }}
+ </a-tag>
+ <a-tag v-if="text === 3" color="red">
+ {{ '缁撴潫' }}
+ </a-tag>
+ </span>
+ <span slot="createdUserName" slot-scope="text">
+ <a-tag color="">
+ {{ text }}
+ </a-tag>
+ </span>
+ <span slot="version" slot-scope="text">
+ {{ 'V'+text+'.0' }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.id,record.formId)" >鏌ョ湅</a>
+ <a-divider type="vertical" v-if="hasPerm('auditorworkflow:delete') & record.status == 0 & hasPerm('auditorworkflow:view')" />
+ <a-popconfirm v-if="hasPerm('myworkflow:delete') & record.status == 0" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteworkflow(record.id)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ </a-spin>
+ </a-card>
+ <view-workflow ref="viewworkflow"></view-workflow>
+ </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMystartWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import ViewWorkflow from './components/viewworkflow.vue'
+export default {
+ name: 'CreateWorkflow',
+ components: {
+ STable,
+ XCard,
+ ViewWorkflow
+ },
+ data() {
+ return {
+ queryParam: {},
+ loading: true,
+ columns: [
+ {
+ title: '鏍囬',
+ dataIndex: 'description'
+ },
+
+ {
+ title: '鍒涘缓浜�',
+ dataIndex: 'createdUserName',
+ scopedSlots: {
+ customRender: 'createdUserName'
+ }
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ },
+ {
+ title: '瀹屾垚鏃堕棿',
+ dataIndex: 'completeTime'
+ },
+ {
+ title: '娴佺▼鐗堟湰',
+ dataIndex: 'version',
+ scopedSlots: {
+ customRender: 'version'
+ }
+ },
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getMystartWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.loading = false
+ return res.data
+ })
+ }
+ }
+ },
+ methods: {
+ // 鏌ョ湅娴佺▼
+ viewworkflow(id, formId) {
+ console.log(id, formId)
+ this.$refs.viewworkflow.init(id, '', formId)
+ },
+ // 鍒犻櫎娴佺▼
+ deleteworkflow(id) {
+
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue
new file mode 100644
index 0000000..3effc38
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/index.vue
@@ -0,0 +1,45 @@
+<template>
+ <div>
+ <a-card>
+ <a-tabs default-active-key="1" force-render>
+ <a-tab-pane key="1" tab="鎴戝彂璧风殑娴佺▼">
+ <create-workflow></create-workflow>
+ </a-tab-pane>
+ <a-tab-pane key="2" tab="鏈鏍告祦绋�" >
+ <un-auditor-workflow></un-auditor-workflow>
+ </a-tab-pane>
+ <a-tab-pane key="3" tab="宸插鏍告祦绋�">
+ <auditor-workflow></auditor-workflow>
+ </a-tab-pane>
+ </a-tabs>
+ </a-card>
+ </div>
+</template>
+
+<script>
+import { XCard } from '@/components'
+import CreateWorkflow from './create.vue'
+import UnAuditorWorkflow from './unauditor.vue'
+import AuditorWorkflow from './auditor.vue'
+export default {
+ name: 'WorkflowList',
+ components: {
+ XCard,
+ CreateWorkflow,
+ UnAuditorWorkflow,
+ AuditorWorkflow
+ },
+ data() {
+ return {
+
+ }
+ },
+ methods: {
+
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue
new file mode 100644
index 0000000..14f7c53
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/myworkflow/unauditor.vue
@@ -0,0 +1,123 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('myworkflow:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="娴佺▼鍚嶇О">
+ <a-input v-model="queryParam.description" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <span slot="status" slot-scope="text">
+ <a-tag v-if="text === 0" color="orange">
+ {{ '鏈畬鎴�' }}
+ </a-tag>
+ <a-tag v-if="text === 1" color="green">
+ {{ '宸插畬鎴�' }}
+ </a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('auditorworkflow:view')" @click="viewworkflow(record.id,record.version)" >鏌ョ湅</a>
+ <a-divider type="vertical" v-if="hasPerm('auditorworkflow:auditor') & record.status == 0 & hasPerm('auditorworkflow:view')" />
+ <a v-if="hasPerm('auditorworkflow:auditor')" @click="auditorworkflow(record.workflowId,record.executionPointerId,record.formId)" >瀹℃牳</a>
+ </span>
+ </s-table>
+ </a-spin>
+ </a-card>
+ <auditor-opera ref="auditoropera"></auditor-opera>
+ </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getMyUnAuditorWorkflow } from '@/api/modular/system/auditorworkflowManage'
+import AuditorOpera from './components/auditoropera.vue'
+export default {
+ name: 'UnAuditorWorkflow',
+ components: {
+ STable,
+ XCard,
+ AuditorOpera
+ },
+ data() {
+ return {
+ queryParam: {},
+ loading: true,
+ columns: [
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+
+ {
+ title: '浠诲姟鍚嶇О',
+ dataIndex: 'stepName'
+ },
+ {
+ title: '鍙戣捣浜�',
+ dataIndex: 'createUserName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createTime'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ },
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ this.queryParam.status = 0
+ return getMyUnAuditorWorkflow(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.loading = false
+ return res.data
+ })
+ }
+ }
+ },
+ methods: {
+ // 鏌ョ湅娴佺▼
+ viewworkflow(id, version) {
+
+ },
+ // 瀹℃牳娴佺▼
+ auditorworkflow(id, executionPointerId, formId) {
+ this.$refs.auditoropera.init(id, executionPointerId, formId)
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue
new file mode 100644
index 0000000..7dd98c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/addForm.vue
@@ -0,0 +1,228 @@
+<template>
+ <a-modal title="鏂板閫氱煡鍏憡" :width="1000" :footer="null" :visible="visible" @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item label="鏍囬" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input placeholder="璇疯緭鍏ユ爣棰�" v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+ <a-radio-button v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code">
+ {{ item.value }}</a-radio-button>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍐呭">
+ <antd-editor
+ :uploadConfig="editorUploadConfig"
+ v-model="editorContent"
+ @onchange="changeEditor"
+ @oninit="getEditor" />
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫氱煡鍒扮殑浜�">
+ <a-transfer
+ :data-source="mockData"
+ show-search
+ :list-style="{
+ width: '40%',
+ height: '300px',
+ }"
+ :filter-option="filterOption"
+ :target-keys="targetKeys"
+ :render="item => item.title"
+ @change="handleChange" />
+ </a-form-item>
+ <a-divider />
+ <a-form-item class="subForm-item">
+ <a-button type="primary" class="subButton" @click="handleSubmit(1)">鍙戝竷</a-button>
+ <a-button type="danger" class="subButton" @click="handleSubmit(0)">瀛樹负鑽夌</a-button>
+ <a-button class="subButton" @click="handleCancel">鍙栨秷</a-button>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import {
+ sysNoticeAdd
+ } from '@/api/modular/system/noticeManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ import {
+ sysFileInfoUpload,
+ sysFileInfoPreview
+ } from '@/api/modular/system/fileManage'
+ import {
+ AntdEditor
+ } from '@/components'
+ import {
+ sysUserSelector
+ } from '@/api/modular/system/userManage'
+ export default {
+ name: 'AddForm',
+ components: {
+ AntdEditor
+ },
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 3
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 18
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ editorContent: '',
+ editorContentText: '',
+ editorUploadConfig: {
+ method: 'http',
+ uploadImgServer: '/sysFileInfo/upload',
+ callback: this.editorUploadImage
+ },
+ mockData: [],
+ targetKeys: [],
+ typeDictTypeDropDown: [], // 0閫氱煡 1鍏憡
+ formLoading: true
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add() {
+ this.visible = true
+ this.sysDictTypeDropDown() // 鍏堟敞閲�
+ this.getMock()
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'notice_type'
+ }).then((res) => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ /**
+ * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+ */
+ editorUploadImage(files, insert) {
+ const formData = new FormData()
+ files.forEach(file => {
+ formData.append('file', file)
+ })
+ sysFileInfoUpload(formData).then((res) => {
+ if (res.success) {
+ sysFileInfoPreview({
+ id: res.data
+ }).then((ress) => {
+ insert(window.URL.createObjectURL(new Blob([ress])))
+ }).catch((ress) => {
+ this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+ })
+ } else {
+ this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('棰勮閿欒锛�' + err.message)
+ })
+ },
+ getEditor(editor) {
+ this.editor = editor
+ },
+ changeEditor(html, ele) {
+ this.editorContent = html
+ this.editorContentText = ele.text()
+ },
+ /**
+ * 绌挎妗�
+ */
+ getMock() {
+ const targetKeys = []
+ const mockData = []
+ sysUserSelector().then((res) => {
+ this.formLoading = false
+ for (let i = 0; i < res.data.length; i++) {
+ const data = {
+ key: res.data[i].id.toString(),
+ title: res.data[i].name,
+ description: `description of ${res.data[i].name}`
+ }
+ mockData.push(data)
+ }
+ })
+ this.mockData = mockData
+ this.targetKeys = targetKeys
+ },
+ filterOption(inputValue, option) {
+ return option.description.indexOf(inputValue) > -1
+ },
+ handleChange(targetKeys, direction, moveKeys) {
+ this.targetKeys = targetKeys
+ },
+ handleSubmit(types) {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ // eslint-disable-next-line eqeqeq
+ if (this.editorContent == '') {
+ this.$message.error('璇峰~鍐欏唴瀹�')
+ return
+ }
+ if (this.targetKeys.length < 1) {
+ this.$message.error('璇烽�夋嫨閫氱煡鍒扮殑浜�')
+ return
+ }
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.formLoading = true
+ values.content = this.editorContent
+ values.status = types
+ values.noticeUserIdList = this.targetKeys
+ sysNoticeAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.formLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.editor.txt.clear()
+ this.targetKeys = []
+ this.editorContent = ''
+ this.form.resetFields()
+ this.visible = false
+ this.formLoading = true
+ }
+ }
+ }
+</script>
+<style>
+ .subButton {
+ float: right;
+ }
+
+ .subForm-item {
+ margin-bottom: 0px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue
new file mode 100644
index 0000000..a5c54ab
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/detailForm.vue
@@ -0,0 +1,62 @@
+<template>
+ <a-modal
+ title="閫氱煡鍏憡璇︽儏"
+ :width="1000"
+ :confirmLoading="confirmLoading"
+ :visible="visible"
+ :footer="null"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <div style="text-align: center;font-size: 30px">{{ this.contentRecord.title }}</div>
+ <br>
+ <div style="text-align: right;font-size: 10px">
+ <span>锛堝彂甯冧汉锛歿{ this.contentRecord.publicUserName }}锛�</span>
+ <span>鍙戝竷鏃堕棿锛歿{ this.contentRecord.publicTime }} </span>
+ </div>
+ <a-divider style="margin-top: 5px" />
+ <div>
+ <label v-html="this.contentRecord.content"></label>
+ </div>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import {
+ sysNoticeDetail
+ } from '@/api/modular/system/noticeManage'
+
+ export default {
+ name: 'DetailForm',
+ components: {},
+ data() {
+ return {
+ visible: false,
+ confirmLoading: false,
+ contentRecord: {}
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ detail(record) {
+ this.confirmLoading = true
+ this.visible = true
+ this.sysNoticeDetail(record.id)
+ },
+ /**
+ * 鏌ョ湅璇︽儏
+ */
+ sysNoticeDetail(id) {
+ sysNoticeDetail({
+ id: id
+ }).then((res) => {
+ this.confirmLoading = false
+ this.contentRecord = res.data
+ })
+ },
+ handleCancel() {
+ this.visible = false
+ this.contentRecord = {}
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue
new file mode 100644
index 0000000..f808a0b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/editForm.vue
@@ -0,0 +1,256 @@
+<template>
+ <a-modal title="缂栬緫閫氱煡鍏憡" :width="1000" :footer="null" :visible="visible" @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item v-show="false">
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item label="鏍囬" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-input placeholder="璇疯緭鍏ユ爣棰�" v-decorator="['title', {rules: [{required: true, message: '璇疯緭鍏ユ爣棰橈紒'}]}]" />
+ </a-form-item>
+ <a-form-item label="绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-radio-group v-decorator="['type',{rules: [{ required: true, message: '璇烽�夋嫨绫诲瀷锛�' }]}]">
+ <a-radio-button v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code">
+ {{ item.value }}</a-radio-button>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍐呭">
+ <antd-editor
+ :uploadConfig="editorUploadConfig"
+ v-model="editorContent"
+ @onchange="changeEditor"
+ @oninit="getEditor" />
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="閫氱煡鍒扮殑浜�">
+ <a-transfer
+ :data-source="mockData"
+ show-search
+ :list-style="{
+ width: '40%',
+ height: '300px',
+ }"
+ :filter-option="filterOption"
+ :target-keys="targetKeys"
+ :render="item => item.title"
+ @change="handleChange" />
+ </a-form-item>
+ <a-divider />
+ <a-form-item class="subForm-item">
+ <a-button type="primary" class="subButton" @click="handleSubmit(1)">鍙戝竷</a-button>
+ <a-button type="danger" class="subButton" @click="handleSubmit(0)">瀛樹负鑽夌</a-button>
+ <a-button class="subButton" @click="handleCancel">鍙栨秷</a-button>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import {
+ sysNoticeEdit,
+ sysNoticeDetail
+ } from '@/api/modular/system/noticeManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ import {
+ sysFileInfoUpload,
+ sysFileInfoPreview
+ } from '@/api/modular/system/fileManage'
+ import {
+ AntdEditor
+ } from '@/components'
+ import {
+ sysUserSelector
+ } from '@/api/modular/system/userManage'
+ export default {
+ name: 'AddForm',
+ components: {
+ AntdEditor
+ },
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 3
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 18
+ }
+ },
+ visible: false,
+ form: this.$form.createForm(this),
+ typeDictTypeDropDown: [], // 0閫氱煡 1鍏憡
+ editorContent: '',
+ editorContentText: '',
+ editorUploadConfig: {
+ method: 'http',
+ uploadImgServer: '/sysFileInfo/upload',
+ callback: this.editorUploadImage
+ },
+ mockData: [],
+ targetKeys: [],
+ noticeDetail: [],
+ formLoading: true
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.sysNoticeDetail(record.id)
+ this.sysDictTypeDropDown()
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ title: record.title,
+ type: record.type.toString()
+ })
+ this.editor.txt.html(record.content)
+ this.editorContent = record.content
+ }, 100)
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'notice_type'
+ }).then((res) => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ /**
+ * 缂栬緫鍣ㄥ洖璋冧笂浼犲強鍥炰紶鍥剧墖url
+ */
+ editorUploadImage(files, insert) {
+ const formData = new FormData()
+ files.forEach(file => {
+ formData.append('file', file)
+ })
+ sysFileInfoUpload(formData).then((res) => {
+ if (res.success) {
+ sysFileInfoPreview({
+ id: res.data
+ }).then((ress) => {
+ insert(window.URL.createObjectURL(new Blob([ress])))
+ }).catch((ress) => {
+ this.$message.error('涓婁紶棰勮閿欒锛�' + ress.message)
+ })
+ } else {
+ this.$message.error('缂栬緫鍣ㄤ笂浼犲浘鐗囧け璐ワ細' + res.message)
+ }
+ })
+ },
+ getEditor(editor) {
+ this.editor = editor
+ },
+ changeEditor(html, ele) {
+ this.editorContent = html
+ this.editorContentText = ele.text()
+ },
+ /**
+ * 缂栬緫鏃惰幏鍙栧叏閮ㄤ俊鎭�
+ */
+ sysNoticeDetail(id) {
+ sysNoticeDetail({
+ id: id
+ }).then((res) => {
+ this.noticeDetail = res.data
+ this.getMock(this.noticeDetail)
+ })
+ },
+ /**
+ * 绌挎妗�
+ */
+ getMock(noticeDetail) {
+ const targetKeys = []
+ const mockData = []
+ sysUserSelector().then((res) => {
+ this.formLoading = false
+ for (let i = 0; i < res.data.length; i++) {
+ const data = {
+ key: res.data[i].id.toString(),
+ title: res.data[i].name,
+ description: `description of ${res.data[i].name}`
+ }
+ for (let j = 0; j < noticeDetail.noticeUserIdList.length; j++) {
+ if (data.key === noticeDetail.noticeUserIdList[j]) {
+ targetKeys.push(noticeDetail.noticeUserIdList[j])
+ }
+ }
+ mockData.push(data)
+ }
+ })
+ this.mockData = mockData
+ this.targetKeys = targetKeys
+ },
+ filterOption(inputValue, option) {
+ return option.description.indexOf(inputValue) > -1
+ },
+ handleChange(targetKeys, direction, moveKeys) {
+ this.targetKeys = targetKeys
+ },
+ handleSubmit(types) {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ // eslint-disable-next-line eqeqeq
+ if (this.editorContent == '') {
+ this.$message.error('璇峰~鍐欏唴瀹�')
+ return
+ }
+ if (this.targetKeys.length < 1) {
+ this.$message.error('璇烽�夋嫨閫氱煡鍒扮殑浜�')
+ return
+ }
+ validateFields((errors, values) => {
+ if (!errors) {
+ this.formLoading = true
+ values.content = this.editorContent
+ values.status = types
+ values.noticeUserIdList = this.targetKeys
+ sysNoticeEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.formLoading = false
+ })
+ }
+ })
+ },
+ handleCancel() {
+ this.editor.txt.clear()
+ this.targetKeys = []
+ this.editorContent = ''
+ this.form.resetFields()
+ this.visible = false
+ this.formLoading = true
+ }
+ }
+ }
+</script>
+<style>
+ .subButton {
+ float: right;
+ }
+
+ .subForm-item {
+ margin-bottom: 0px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue
new file mode 100644
index 0000000..f34dfd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/notice/index.vue
@@ -0,0 +1,278 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysNotice:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏抽敭璇�">
+ <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ユ爣棰樸�佸唴瀹�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷">
+ <a-select v-model="queryParam.type" placeholder="璇烽�夋嫨绫诲瀷" allow-clear>
+ <a-select-option v-for="(item, index) in typeDictTypeDropDown" :key="index" :value="item.code">
+ {{ item.value }}</a-select-option
+ >
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{ x: true, y: tableHeight }"
+ :rowKey="record => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="operator" v-if="hasPerm('sysNotice:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysNotice:add')"
+ >鏂板鍏憡
+ </a-button>
+ </div>
+ </template>
+ <span slot="status" slot-scope="text">
+ {{ statusFilter(text) }}
+ </span>
+ <span slot="type" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <div v-if="record.status == 0">
+ <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+ <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:edit')" />
+ <a v-if="hasPerm('sysNotice:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysNotice:edit') & hasPerm('sysNotice:changeStatus')" />
+ <a-popconfirm
+ v-if="hasPerm('sysNotice:changeStatus')"
+ placement="topRight"
+ title="纭鍙戝竷璇ヤ俊鎭紵"
+ @confirm="() => editNoticeStatus(1, record)"
+ >
+ <a>鍙戝竷</a>
+ </a-popconfirm>
+ <a-divider type="vertical" v-if="hasPerm('sysNotice:changeStatus') & hasPerm('sysNotice:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('sysNotice:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => sysNoticeDelete(record)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </div>
+ <div v-if="record.status == 1">
+ <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+ <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:changeStatus')" />
+ <a-popconfirm
+ v-if="hasPerm('sysNotice:changeStatus')"
+ placement="topRight"
+ title="纭鎾ゅ洖璇ヤ俊鎭紵"
+ @confirm="() => editNoticeStatus(2, record)"
+ >
+ <a>鎾ゅ洖</a>
+ </a-popconfirm>
+ </div>
+ <div v-if="record.status == 2">
+ <a v-if="hasPerm('sysNotice:detail')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+ <a-divider type="vertical" v-if="hasPerm('sysNotice:detail') & hasPerm('sysNotice:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('sysNotice:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => sysNoticeDelete(record)"
+ >
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </div>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" v-if="hasPerm('sysNotice:add')" />
+ <edit-form ref="editForm" @ok="handleOk" v-if="hasPerm('sysNotice:edit')" />
+ <detail-form ref="detailForm" @ok="handleOk" v-if="hasPerm('sysNotice:detail')" />
+ <div ref="editor"></div>
+ </a-card>
+ </div>
+</template>
+<script>
+import { STable, XCard } from '@/components'
+import { sysNoticePage, sysNoticeDelete, sysNoticeChangeStatus } from '@/api/modular/system/noticeManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+import addForm from './addForm'
+import editForm from './editForm'
+import detailForm from './detailForm'
+export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm,
+ detailForm
+ },
+ data() {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+ {
+ title: '绫诲瀷',
+ dataIndex: 'type',
+ scopedSlots: {
+ customRender: 'type'
+ }
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysNoticePage(Object.assign(parameter, this.queryParam)).then(res => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDictTypeDropDown: [], // 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎
+ typeDictTypeDropDown: [] // 0閫氱煡 1鍏憡
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown() // 鍏堟敞閲�
+ if (this.hasPerm('sysNotice:changeStatus') || this.hasPerm('sysNotice:edit') || this.hasPerm('sysNotice:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '300px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+ methods: {
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown() {
+ sysDictTypeDropDown({
+ code: 'notice_status'
+ }).then(res => {
+ this.statusDictTypeDropDown = res.data
+ })
+ sysDictTypeDropDown({
+ code: 'notice_type'
+ }).then(res => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ statusFilter(status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ typeFilter(type) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.typeDictTypeDropDown.filter(item => item.code == type)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 淇敼鐘舵��
+ */
+ editNoticeStatus(code, record) {
+ sysNoticeChangeStatus({
+ id: record.id,
+ status: code
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鎻愪氦
+ */
+ sysNoticeDelete(record) {
+ sysNoticeDelete(record)
+ .then(res => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ })
+ .catch(err => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue
new file mode 100644
index 0000000..a4b43ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/detailForm.vue
@@ -0,0 +1,75 @@
+<template>
+ <a-modal
+ title="閫氱煡鍏憡璇︽儏"
+ :width="1000"
+ :confirmLoading="confirmLoading"
+ :visible="visible"
+ :footer="null"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+
+ <div style="text-align: center;font-size: 30px">{{ this.contentRecord.title }}</div>
+ <br>
+ <div style="text-align: right;font-size: 10px">
+ <span>锛堝彂甯冧汉锛歿{ this.contentRecord.publicUserName }}锛�</span>
+ <span>鍙戝竷鏃堕棿锛歿{ this.contentRecord.publicTime }} </span>
+ </div>
+ <a-divider style="margin-top: 5px"/>
+ <div >
+ <label v-html="this.contentRecord.content"></label>
+ </div>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysNoticeDetail } from '@/api/modular/system/noticeManage'
+
+ export default {
+ name: 'DetailForm',
+ components: {
+ },
+
+ data () {
+ return {
+ visible: false,
+ confirmLoading: false,
+ contentRecord: ''
+ }
+ },
+
+ methods: {
+
+ // 鍒濆鍖栨柟娉�
+ detail (record) {
+ this.confirmLoading = false
+ this.visible = true
+ this.sysNoticeDetail(record.id)
+ },
+
+ /**
+ * 鏌ョ湅璇︽儏
+ */
+ sysNoticeDetail (id) {
+ sysNoticeDetail({ id: id }).then((res) => {
+ this.confirmLoading = false
+ this.contentRecord = res.data
+ })
+ },
+
+ handleCancel () {
+ this.visible = false
+ }
+ }
+ }
+</script>
+<style>
+ .subButton{
+ float: right;
+ }
+ .subForm-item{
+ margin-bottom: 0px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue
new file mode 100644
index 0000000..2baf149
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/noticeReceived/index.vue
@@ -0,0 +1,181 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysNotice:received')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏抽敭璇�" v-if="hasPerm('sysNotice:received')">
+ <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ユ爣棰樸�佸唴瀹�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="绫诲瀷" v-if="hasPerm('sysNotice:received')">
+ <a-select v-model="queryParam.type" placeholder="璇烽�夋嫨绫诲瀷" allow-clear >
+ <a-select-option v-for="(item,index) in typeDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span class="table-page-search-submitButtons" >
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆{{ tableHeight }}}</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template class="table-operator" slot="operator" v-if="hasPerm('sysNotice:add')" >
+ <div ref="actionBar" class="actionBar">
+ <a-button type="info" style="visibility: hidden"> </a-button>
+ </div>
+ </template>
+ <span slot="status" slot-scope="text">
+ {{ statusFilter(text) }}
+ </span>
+ <span slot="type" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysNotice:received')" @click="$refs.detailForm.detail(record)">鏌ョ湅</a>
+ </span>
+ </s-table>
+ <detail-form ref="detailForm" @ok="handleOk" />
+ <div ref="editor"></div>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable, XCard } from '@/components'
+ // eslint-disable-next-line no-unused-vars
+ import { sysNoticeReceived } from '@/api/modular/system/noticeReceivedManage'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import detailForm from './detailForm'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ detailForm
+ },
+ data () {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+ {
+ title: '绫诲瀷',
+ dataIndex: 'type',
+ scopedSlots: { customRender: 'type' }
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: { customRender: 'status' }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysNoticeReceived(Object.assign(parameter, this.queryParam)).then((res) => {
+ // this.$store.commit('SET_NOTICES', res.data)
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDictTypeDropDown: [], // 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎
+ typeDictTypeDropDown: []// 0閫氱煡 1鍏憡
+ }
+ },
+ created () {
+ this.sysDictTypeDropDown()// 鍏堟敞閲�
+ if (this.hasPerm('sysNotice:received')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '200px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+ methods: {
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown () {
+ sysDictTypeDropDown({ code: 'notice_status' }).then((res) => {
+ this.statusDictTypeDropDown = res.data
+ })
+ sysDictTypeDropDown({ code: 'notice_type' }).then((res) => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ statusFilter (status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ typeFilter (type) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.typeDictTypeDropDown.filter(item => item.code == type)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue
new file mode 100644
index 0000000..64c498d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/onlineUser/index.vue
@@ -0,0 +1,205 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysOnlineUser:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎼滅储">
+ <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ヨ处鍙锋垨濮撳悕" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => (queryParam = {})">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <!-- <a-table size="middle" :columns="columns" :dataSource="loadData" :pagination="false" :loading="loading">
+ <span slot="lastLoginAddress" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="lastLoginBrowser" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a-popconfirm
+ v-if="hasPerm('sysOnlineUser:forceExist')"
+ placement="topRight"
+ title="鏄惁寮哄埗涓嬬嚎璇ョ敤鎴凤紵"
+ @confirm="() => forceExist(record)">
+ <a>寮哄埗涓嬬嚎</a>
+ </a-popconfirm>
+ </span>
+ </a-table> -->
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="record => record.id"
+ :scroll="{x: true,y:tableHeight}"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <span slot="lastLoginAddress" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="lastLoginBrowser" slot-scope="text">
+ <ellipsis :length="20" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a-popconfirm
+ v-if="hasPerm('sysOnlineUser:forceExist')"
+ placement="topRight"
+ title="鏄惁寮哄埗涓嬬嚎璇ョ敤鎴凤紵"
+ @confirm="() => forceExist(record)"
+ >
+ <a>寮哄埗涓嬬嚎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+import store from '@/store'
+import { STable, Ellipsis, XCard } from '@/components'
+import { sysOnlineUserForceExist, sysOnlineUserPage } from '@/api/modular/system/onlineUserManage'
+//鑷畾涔塼able楂樺害
+import setTableHtMixin from '@/mixins/handleTableHt.js'
+export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ Ellipsis
+ },
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ // {
+ // title: '鐢ㄦ埛Id',
+ // dataIndex: 'userId'
+ // },
+ {
+ title: '璐﹀彿',
+ dataIndex: 'account'
+ },
+ {
+ title: '濮撳悕',
+ dataIndex: 'name'
+ },
+ {
+ title: '鐧诲綍IP',
+ dataIndex: 'lastLoginIp'
+ },
+ {
+ title: '鐧诲綍鏃堕棿',
+ dataIndex: 'lastTime'
+ },
+ {
+ title: '娴忚鍣�',
+ dataIndex: 'lastLoginBrowser',
+ scopedSlots: {
+ customRender: 'lastLoginBrowser'
+ }
+ },
+ {
+ title: '鎿嶄綔绯荤粺',
+ dataIndex: 'lastLoginOs'
+ }
+ ],
+ // loading: true,
+ loadData: parameter => {
+ return sysOnlineUserPage(Object.assign(parameter, this.queryParam)).then(res => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ // 杩涢〉闈㈠姞杞�
+ created() {
+ // 濡傛灉鏄秴绾х鐞嗗憳
+ // eslint-disable-next-line eqeqeq
+ if (store.getters.admintype == '1') {
+ this.columns.push({
+ title: '绉熸埛',
+ dataIndex: 'tenantName'
+ })
+ }
+
+ if (this.hasPerm('sysOnlineUser:forceExist')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ mounted() {
+ const that = this
+ setTimeout(() => {
+ that.$refs.table.refresh(true)
+ }, 1000)
+ },
+ methods: {
+ forceExist(record) {
+ const that = this
+ sysOnlineUserForceExist(record)
+ .then(res => {
+ if (res.success) {
+ this.$message.success('寮哄埗涓嬬嚎鎴愬姛')
+ if (this.$store.getters.userInfo.id !== record.userId) {
+ // 閲嶆柊鍔犺浇琛ㄦ牸
+ setTimeout(() => {
+ that.$refs.table.refresh(false)
+ }, 1000)
+ }
+ } else {
+ this.$message.error('寮哄埗涓嬬嚎澶辫触锛�' + res.message)
+ }
+ })
+ .catch(err => {
+ this.$message.error('寮哄埗涓嬬嚎閿欒锛�' + err.message)
+ })
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+}
+</script>
+<style lang="less">
+.table-operator {
+ margin-bottom: 18px;
+}
+
+button {
+ margin-right: 8px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue
new file mode 100644
index 0000000..19d23b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/addForm.vue
@@ -0,0 +1,164 @@
+<template>
+ <a-modal
+ title="鏂板鏈烘瀯"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item label="鏈烘瀯绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-radio-group v-decorator="['orgtype',{rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }]}]">
+ <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:80px">
+ {{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+
+ <a-form-item label="鏈烘瀯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ満鏋勫悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item label="涓婄骇鏈烘瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-tree-select
+ v-decorator="['pid', {rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="orgTree"
+ placeholder="璇烽�夋嫨涓婄骇鏈烘瀯"
+ treeDefaultExpandAll>
+ <span slot="title" slot-scope="{ id }">{{ id }}
+ </span>
+ </a-tree-select>
+ </a-form-item>
+
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+ <a-input-number
+ placeholder="璇疯緭鍏ユ帓搴�"
+ style="width: 100%"
+ v-decorator="['sort', { initialValue: 100 }]"
+ :min="1"
+ :max="1000" />
+ </a-form-item>
+
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ sysOrgAdd,
+ getOrgTree
+ } from '@/api/modular/system/orgManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ typeEnumDataDropDown: [],
+ orgTree: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ form: this.$form.createForm(this)
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add() {
+ this.visible = true
+ this.getOrgTree()
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'org_type'
+ }).then((res) => {
+ this.typeEnumDataDropDown = res.data
+ })
+ },
+ /**
+ * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+ */
+ getOrgTree() {
+ getOrgTree().then((res) => {
+ this.formLoading = false
+ if (!res.success) {
+ this.orgTree = []
+ return
+ }
+ this.orgTree = [{
+ 'id': '-1',
+ 'parentId': '0',
+ 'title': '椤剁骇',
+ 'value': '0',
+ 'pid': '0',
+ 'children': res.data
+ }]
+ })
+ },
+
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysOrgAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue
new file mode 100644
index 0000000..2cc592e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/editForm.vue
@@ -0,0 +1,192 @@
+<template>
+ <a-modal
+ title="缂栬緫鏈烘瀯"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item style="display: none" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+
+ <a-form-item label="鏈烘瀯绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-radio-group
+ placeholder="璇烽�夋嫨鏈烘瀯绫诲瀷锛�"
+ v-decorator="['orgtype', { rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯绫诲瀷锛�' }] }]"
+ >
+ <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="item.code" style="width:80px"
+ >{{ item.value }}
+ </a-radio>
+ </a-radio-group>
+ </a-form-item>
+
+ <a-form-item label="鏈烘瀯鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ユ満鏋勫悕绉�"
+ v-decorator="['name', { rules: [{ required: true, message: '璇疯緭鍏ユ満鏋勫悕绉帮紒' }] }]"
+ />
+ </a-form-item>
+
+ <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input
+ placeholder="璇疯緭鍏ュ敮涓�缂栫爜"
+ v-decorator="['code', { rules: [{ required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�' }] }]"
+ />
+ </a-form-item>
+
+ <a-form-item label="涓婄骇鏈烘瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-tree-select
+ v-decorator="['pid', { rules: [{ required: true, message: '璇烽�夋嫨涓婄骇鏈烘瀯锛�' }] }]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="orgTree"
+ placeholder="璇烽�夋嫨涓婄骇鏈烘瀯"
+ treeDefaultExpandAll
+ >
+ <span slot="title" slot-scope="{ id }">{{ id }} </span>
+ </a-tree-select>
+ </a-form-item>
+
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+ <a-input-number
+ placeholder="璇疯緭鍏ユ帓搴�"
+ style="width: 100%"
+ v-decorator="['sort', { initialValue: 100 }]"
+ :min="1"
+ :max="1000"
+ />
+ </a-form-item>
+
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { sysOrgEdit, getOrgTree } from '@/api/modular/system/orgManage'
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 5,
+ },
+ },
+ wrapperCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 15,
+ },
+ },
+ typeEnumDataDropDown: [],
+ orgTree: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ form: this.$form.createForm(this),
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.getOrgTree()
+ this.form.getFieldDecorator('orgtype', {
+ valuePropName: 'checked',
+ initialValue: record.orgType,
+ })
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ orgType: record.orgType,
+ name: record.name,
+ code: record.code,
+ sort: record.sort,
+ pid: record.pid,
+ remark: record.remark,
+ })
+ }, 100)
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'org_type',
+ }).then((res) => {
+ this.typeEnumDataDropDown = res.data
+ })
+ },
+ /**
+ * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+ */
+ getOrgTree() {
+ getOrgTree().then((res) => {
+ this.formLoading = false
+ if (!res.success) {
+ this.orgTree = []
+ return
+ }
+ this.orgTree = [
+ {
+ id: '-1',
+ parentId: '0',
+ title: '椤剁骇',
+ value: '0',
+ pid: '0',
+ children: res.data,
+ },
+ ]
+ })
+ },
+
+ handleSubmit() {
+ const {
+ form: { validateFields },
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysOrgEdit(values)
+ .then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ })
+ .finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue
new file mode 100644
index 0000000..1fb9df0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/org/index.vue
@@ -0,0 +1,233 @@
+<template>
+ <a-row :gutter="24" >
+ <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+ <a-card :bordered="false" :loading="treeLoading">
+ <div v-if="this.orgTree!='' ">
+ <a-tree
+ style="scroll:true"
+ :treeData="orgTree"
+ v-if="orgTree.length"
+ @select="handleClick"
+ :defaultExpandAll="true"
+ :defaultExpandedKeys="defaultExpandedKeys"
+ :replaceFields="replaceFields" />
+ </div>
+ <div v-else>
+ <a-empty :image="simpleImage" />
+ </div>
+ </a-card>
+ </a-col>
+ <a-col :md="19" :sm="24">
+ <x-card v-if="hasPerm('sysOrg:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏈烘瀯鍚嶇О" >
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ユ満鏋勫悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="operator" v-if="hasPerm('sysOrg:add')">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysOrg:add')">鏂板鏈烘瀯</a-button>
+ </template>
+ <span slot="orgType" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysOrg:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysOrg:edit') & hasPerm('sysOrg:delete')"/>
+ <a-popconfirm v-if="hasPerm('sysOrg:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysOrgDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </a-col>
+ </a-row>
+</template>
+<script>
+ import { STable, XCard } from '@/components'
+ import { Empty } from 'ant-design-vue'
+ import { getOrgPage, sysOrgDelete, getOrgTree } from '@/api/modular/system/orgManage'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ export default {
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '鏈烘瀯鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '鏈烘瀯绫诲瀷',
+ dataIndex: 'orgType',
+ scopedSlots: {
+ customRender: 'orgType'
+ }
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark'
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getOrgPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ orgTree: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ defaultExpandedKeys: [],
+ typeDictTypeDropDown: [],
+ // 鎼滅储鐨勪笁涓弬鏁�
+ expandedKeys: [],
+ searchValue: '',
+ autoExpandParent: true,
+ treeLoading: true,
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
+ replaceFields: {
+ key: 'id'
+ }
+ }
+ },
+ created () {
+ this.sysDictTypeDropDown()
+ this.getOrgTree()
+ if (this.hasPerm('sysOrg:edit') || this.hasPerm('sysOrg:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ },
+ methods: {
+ /**
+ * 鑾峰彇鍒版満鏋勬爲锛屽睍寮�椤剁骇涓嬫爲鑺傜偣锛岃�冭檻鍒板悗鏈熸暟鎹噺鍙樺ぇ锛屼笉寤鸿鍏ㄩ儴灞曞紑
+ */
+ getOrgTree () {
+ getOrgTree(Object.assign(this.queryParam)).then(res => {
+ this.treeLoading = false
+ if (!res.success) {
+ return
+ }
+ this.orgTree = res.data
+ this.queryParam.parentId = this.orgTree[0].id
+ // 鍏ㄩ儴灞曞紑锛屼笂闈pi鏂规硶鎻愪緵鐨勪笉鐢熸晥锛屽厛鐢ㄦ鏂规硶
+ for (var item of res.data) {
+ // eslint-disable-next-line eqeqeq
+ if (item.parentId == 0) {
+ this.defaultExpandedKeys.push(item.id)
+ }
+ }
+ this.$refs.table.refresh()
+ })
+ },
+
+ typeFilter(orgType) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.typeDictTypeDropDown.filter(item => item.code == orgType)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'org_type'
+ }).then((res) => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ /**
+ * 鍒犻櫎
+ * @param record
+ */
+ sysOrgDelete (record) {
+ sysOrgDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.getOrgTree()
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ handleClick (e) {
+ this.queryParam = {
+ pid: e.toString()
+ }
+ this.$refs.table.refresh(true)
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ handleOk () {
+ this.getOrgTree()
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue
new file mode 100644
index 0000000..765eb75
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/addForm.vue
@@ -0,0 +1,106 @@
+<template>
+ <a-modal
+ title="鏂板鑱屼綅"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item
+ label="鑱屼綅鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ >
+ <a-input-number placeholder="璇疯緭鍏ユ帓搴�" style="width: 100%" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysPosAdd } from '@/api/modular/system/posManage'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysPosAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue
new file mode 100644
index 0000000..2fe5671
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/editForm.vue
@@ -0,0 +1,129 @@
+<template>
+ <a-modal
+ title="鑱屼綅缂栬緫"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+
+ <a-form-item
+ style="display: none;"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+
+ <a-form-item
+ label="鑱屼綅鍚嶇О"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ亴浣嶅悕绉帮紒'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ label="鍞竴缂栫爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎺掑簭"
+ has-feedback
+ >
+ <a-input-number style="width: 100%" placeholder="璇疯緭鍏ユ帓搴�" v-decorator="['sort', { initialValue: 100 }]" :min="1" :max="1000" />
+ </a-form-item>
+
+ <a-form-item
+ label="澶囨敞"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+
+ </a-form>
+
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysPosEdit } from '@/api/modular/system/posManage'
+
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ name: record.name,
+ code: record.code,
+ sort: record.sort,
+ remark: record.remark
+ }
+ )
+ }, 100)
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysPosEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue
new file mode 100644
index 0000000..cc04077
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/pos/index.vue
@@ -0,0 +1,178 @@
+<template>
+<div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysPos:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鑱屼綅鍚嶇О" >
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ヨ亴浣嶅悕绉�"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜" >
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.code"
+ :scroll="{ x: true, y: tableHeight }"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <template slot="operator" v-if="hasPerm('sysPos:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysPos:add')">鏂板鑱屼綅</a-button>
+ </div>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysPos:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysPos:edit') & hasPerm('sysPos:delete')"/>
+ <a-popconfirm v-if="hasPerm('sysPos:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysPosDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+
+ </s-table>
+
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+
+ </a-card>
+ </div>
+</template>
+
+<script>
+ import { STable, XCard } from '@/components'
+ import { sysPosPage, sysPosDelete } from '@/api/modular/system/posManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm'
+ import editForm from './editForm'
+
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm
+ },
+
+ data () {
+ return {
+
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '鑱屼綅鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark'
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysPosPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+
+ created () {
+ if (this.hasPerm('sysPos:edit') || this.hasPerm('sysPos:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+ },
+
+ methods: {
+ sysPosDelete (record) {
+ sysPosDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ },
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+
+ }
+</script>
+
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue
new file mode 100644
index 0000000..8f0593a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/addForm.vue
@@ -0,0 +1,125 @@
+<template>
+ <a-modal
+ title="鏂板瑙掕壊"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item label="瑙掕壊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-radio-group v-decorator="['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]">
+ <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:110px">
+ {{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+ <a-form-item label="瑙掕壊鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鑹插悕" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭">
+ <a-input-number
+ placeholder="璇疯緭鍏ユ帓搴�"
+ style="width: 100%"
+ v-decorator="['sort', { initialValue: 100 }]"
+ :min="1"
+ :max="1000" />
+ </a-form-item>
+
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ sysRoleAdd
+ } from '@/api/modular/system/roleManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ form: this.$form.createForm(this),
+ typeEnumDataDropDown: []
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add(record) {
+ this.visible = true
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'role_type'
+ }).then((res) => {
+ this.typeEnumDataDropDown = res.data
+ })
+ },
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysRoleAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue
new file mode 100644
index 0000000..a207d8f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/editForm.vue
@@ -0,0 +1,144 @@
+<template>
+ <a-modal
+ title="瑙掕壊缂栬緫"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+ <a-form :form="form">
+ <a-form-item style="display: none;" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+
+ <a-form-item label="瑙掕壊绫诲瀷" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-radio-group v-decorator="['roleType',{rules: [{ required: true, message: '璇烽�夋嫨瑙掕壊绫诲瀷锛�' }]}]">
+ <a-radio v-for="(item, index) in typeEnumDataDropDown" :key="index" :value="parseInt(item.code)" style="width:110px">
+ {{ item.value }}</a-radio>
+ </a-radio-group>
+ </a-form-item>
+
+ <a-form-item label="瑙掕壊鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ鑹插悕" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ヨ鑹插悕锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item label="鍞竴缂栫爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ敮涓�缂栫爜" v-decorator="['code', {rules: [{required: true, message: '璇疯緭鍏ュ敮涓�缂栫爜锛�'}]}]" />
+ </a-form-item>
+
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鎺掑簭" has-feedback>
+ <a-input-number
+ style="width: 100%"
+ placeholder="璇疯緭鍏ユ帓搴�"
+ v-decorator="['sort', { initialValue: 100 }]"
+ :min="1"
+ :max="1000" />
+ </a-form-item>
+
+ <a-form-item label="澶囨敞" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-textarea :rows="4" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ sysRoleEdit
+ } from '@/api/modular/system/roleManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ typeEnumDataDropDown: [],
+ form: this.$form.createForm(this)
+ }
+ },
+ created() {
+ this.sysDictTypeDropDown()
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.form.getFieldDecorator('roleType', {
+ valuePropName: 'checked',
+ initialValue: record.roleType.toString()
+ })
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ roleType: record.roleType,
+ name: record.name,
+ code: record.code,
+ sort: record.sort,
+ remark: record.remark
+ })
+ }, 100)
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'role_type'
+ }).then((res) => {
+ this.typeEnumDataDropDown = res.data
+ })
+ },
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysRoleEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue
new file mode 100644
index 0000000..63be54f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/index.vue
@@ -0,0 +1,239 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <x-card v-if="hasPerm('sysRole:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="瑙掕壊鍚�">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ヨ鑹插悕" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍞竴缂栫爜">
+ <a-input v-model="queryParam.code" allow-clear placeholder="璇疯緭鍏ュ敮涓�缂栫爜" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ </div>
+
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :scroll="{x: true,y:tableHeight}"
+ :rowKey="(record) => record.code"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('sysRole:add')">
+ <div ref="actionBar" class="actionBar">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysRole:add')">鏂板瑙掕壊
+ </a-button>
+ </div>
+ </template>
+ <span slot="roleType" slot-scope="text">
+ {{ typeFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysRole:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysRole:edit')" />
+ <a-dropdown v-if="hasPerm('sysRole:grantMenu') || hasPerm('sysRole:grantData') || hasPerm('sysRole:delete')">
+ <a class="ant-dropdown-link">
+ 鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item v-if="hasPerm('sysRole:grantMenu')">
+ <a @click="$refs.roleMenuForm.roleMenu(record)">鎺堟潈鑿滃崟</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysRole:grantMenu')">
+ <a @click="onOpenRolePdaMenu(record.id)">鎺堟潈PDA鑿滃崟</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysRole:grantData')">
+ <a @click="$refs.roleOrgForm.roleOrg(record)">鎺堟潈鏁版嵁</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysRole:delete')">
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysRoleDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+
+ </s-table>
+
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <role-menu-form ref="roleMenuForm" @ok="handleOk" />
+ <role-org-form ref="roleOrgForm" @ok="handleOk" />
+ <role-pda-menu-modal :visible.sync="pdaMenuVisible" :roleid="pdaMenuRoleId" />
+ </a-card>
+ </div>
+</template>
+
+<script>
+ import {
+ STable,
+ XCard
+ } from '@/components'
+ import {
+ getRolePage,
+ sysRoleDelete
+ } from '@/api/modular/system/roleManage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@/mixins/handleTableHt.js'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import roleMenuForm from './roleMenuForm'
+ import roleOrgForm from './roleOrgForm'
+ import rolePdaMenuModal from './rolePdaMenuModal'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm,
+ roleMenuForm,
+ roleOrgForm,
+ rolePdaMenuModal
+ },
+
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1}`
+ },
+ {
+ title: '瑙掕壊鍚�',
+ dataIndex: 'name'
+ },
+ {
+ title: '瑙掕壊绫诲瀷',
+ dataIndex: 'roleType',
+ scopedSlots: {
+ customRender: 'roleType'
+ }
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ },
+ {
+ title: '鎺掑簭',
+ dataIndex: 'sort'
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getRolePage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ typeDictTypeDropDown: [],
+ pdaMenuVisible:false,
+ pdaMenuRoleId:null
+ }
+ },
+
+ created() {
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysRole:edit') || this.hasPerm('sysRole:grantMenu') || this.hasPerm('sysRole:grantData') || this
+ .hasPerm('sysRole:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+
+ methods: {
+ typeFilter(roleType) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.typeDictTypeDropDown.filter(item => item.code == roleType)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'role_type'
+ }).then((res) => {
+ this.typeDictTypeDropDown = res.data
+ })
+ },
+ sysRoleDelete(record) {
+ sysRoleDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ onOpenRolePdaMenu(id){
+ this.pdaMenuRoleId = id
+ this.pdaMenuVisible=true
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+
+ }
+</script>
+
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue
new file mode 100644
index 0000000..c1e06d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleMenuForm.vue
@@ -0,0 +1,185 @@
+<template>
+ <a-modal
+ title="鎺堟潈鑿滃崟"
+ :width="600"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item label="鑿滃崟鏉冮檺" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-tree
+ v-model="checkedKeys"
+ multiple
+ checkable
+ :auto-expand-parent="autoExpandParent"
+ :expanded-keys="expandedKeys"
+ :tree-data="menuTreeData"
+ :selected-keys="selectedKeys"
+ :replaceFields="replaceFields"
+ @expand="onExpand"
+ @select="onSelect"
+ @check="treeCheck">
+ </a-tree>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SysMenuTreeForGrant
+ } from '@/api/modular/system/menuManage'
+ import {
+ sysRoleOwnMenu,
+ sysRoleGrantMenu
+ } from '@/api/modular/system/roleManage'
+
+ export default {
+ data() {
+ return {
+ labelCol: {
+ style: {
+ 'padding-right': '20px'
+ },
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ menuTreeData: [],
+ expandedKeys: [],
+ checkedKeys: [],
+ halfCheckedKeys: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ autoExpandParent: true,
+ selectedKeys: [],
+ subValues: [],
+ roleEntity: [],
+ replaceFields: {
+ key: 'id'
+ },
+ form: this.$form.createForm(this)
+ }
+ },
+
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ async roleMenu(record) {
+ this.formLoading = true
+ this.roleEntity = record
+ this.visible = true
+ await this.getMenuTree()
+ await this.expandedMenuKeys(record)
+ },
+
+ /**
+ * 鑾峰彇鑿滃崟鍒楄〃
+ */
+ getMenuTree() {
+ return SysMenuTreeForGrant().then((res) => {
+ if (res.success) {
+ this.menuTreeData = res.data
+ // 榛樿灞曞紑鐩綍绾�
+ this.menuTreeData.forEach(item => {
+ this.expandedKeys.push(item.id)
+ })
+ }
+ })
+ },
+
+ /**
+ * 姝よ鑹插凡鏈夎彍鍗曟潈闄�
+ */
+ expandedMenuKeys(record) {
+ return sysRoleOwnMenu({
+ id: record.id
+ }).then((res) => {
+ if (res.success) {
+ this.checkedKeys = res.data
+ this.findAllChildren(this.menuTreeData)
+ }
+ this.formLoading = false
+ })
+ },
+
+ treeCheck(checkKeys, event) {
+ this.halfCheckedKeys = event.halfCheckedKeys
+ },
+ onExpand(expandedKeys) {
+ this.expandedKeys = expandedKeys
+ this.autoExpandParent = false
+ },
+ onCheck(checkedKeys) {
+ this.checkedKeys = checkedKeys
+ },
+ onSelect(selectedKeys, info) {
+ this.selectedKeys = selectedKeys
+ },
+
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysRoleGrantMenu({
+ id: this.roleEntity.id,
+ grantMenuIdList: this.checkedKeys.concat(this.halfCheckedKeys)
+ }).then((res) => {
+ if (res.success) {
+ this.$message.success('鎺堟潈鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ // 娓呯┖宸查�夋嫨鐨�
+ this.checkedKeys = []
+ // 娓呯┖宸插睍寮�鐨�
+ this.expandedKeys = []
+ this.visible = false
+ },
+ // 閬嶅巻鏍戝舰鐒跺悗鑾峰彇鍒板鐖惰妭鐐硅繘琛岀Щ闄わ紝浣跨敤瀛愯妭鐐癸紝鑰屼笖灏嗙埗鑺傜偣鍔犲叆鍒癿ainMenuList
+ findAllChildren(data) {
+ data.forEach((item, index) => {
+ if (item.children.length !== 0) {
+ for (let i = 0; i < this.checkedKeys.length; i++) {
+ if (item.id === this.checkedKeys[i]) {
+ this.checkedKeys.splice(i, 1)
+ }
+ }
+ this.findAllChildren(item.children)
+ }
+ })
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue
new file mode 100644
index 0000000..4df7e35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/roleOrgForm.vue
@@ -0,0 +1,195 @@
+<template>
+ <a-modal
+ title="鎺堟潈鏁版嵁"
+ :width="600"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item
+ label="鎺堟潈鑼冨洿"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select style="width: 100%" placeholder="璇烽�夋嫨鎺堟潈鑼冨洿" v-decorator="['dataScopeType', {rules: [{ required: true, message: '璇烽�夋嫨鎺堟潈鑼冨洿锛�' }]}]" >
+ <a-select-option v-for="(item,index) in dataScopeTypeData" :key="index" :value="item.code" @click="handleChange(item.code)">{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <div v-show="orgTreeShow">
+ <a-form-item
+ label="閫夋嫨鏈烘瀯"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+ <a-tree
+ v-model="checkedKeys"
+ checkable
+ checkStrictly
+ :auto-expand-parent="autoExpandParent"
+ :expanded-keys="expandedKeys"
+ :tree-data="orgTreeData"
+ :selected-keys="selectedKeys"
+ :replaceFields="replaceFields"
+ @expand="onExpand"
+ @select="onSelect"
+ />
+ </a-form-item>
+ </div>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { getOrgTree } from '@/api/modular/system/orgManage'
+ import { sysRoleOwnData, sysRoleGrantData } from '@/api/modular/system/roleManage'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+
+ export default {
+ data () {
+ return {
+ labelCol: {
+ style: { 'padding-right': '20px' },
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orgTreeData: [],
+ expandedKeys: [],
+ checkedKeys: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ autoExpandParent: true,
+ selectedKeys: [],
+ subValues: [],
+ roleEntity: [],
+ dataScopeTypeData: [],
+ orgTreeShow: false,
+ replaceFields: {
+ key: 'id'
+ },
+ form: this.$form.createForm(this)
+ }
+ },
+
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ roleOrg (record) {
+ this.roleEntity = record
+ this.visible = true
+ this.formLoading = true
+ this.sysDictTypeDropDown()
+ this.form.getFieldDecorator('dataScopeType', { initialValue: record.dataScopeType.toString() })
+ this.handleChange(record.dataScopeType)
+ },
+
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown () {
+ // 鏁版嵁鑼冨洿
+ sysDictTypeDropDown({ code: 'data_scope_type' }).then((res) => {
+ this.dataScopeTypeData = res.data
+ this.formLoading = false
+ })
+ },
+
+ // 鑼冨洿涓嬫媺妗嗕簨浠�
+ handleChange (value) {
+ // eslint-disable-next-line eqeqeq
+ if (value == '5') {
+ this.formLoading = true
+ this.orgTreeShow = true
+ // 鑾峰彇鏈烘瀯鏍�
+ this.getOrgTree()
+ // 宸插叧鑱旀暟鎹�
+ this.sysRoleOwnData(this.roleEntity)
+ } else {
+ this.orgTreeShow = false
+ // 娓呯悊宸查�変腑鏈烘瀯
+ this.checkedKeys = []
+ }
+ },
+
+ /**
+ * 鑾峰彇鏈烘瀯鏍�
+ */
+ getOrgTree () {
+ getOrgTree().then((res) => {
+ if (res.success) {
+ this.orgTreeData = res.data
+ // 榛樿灞曞紑
+ this.orgTreeData.forEach(item => {
+ this.expandedKeys.push(item.id)
+ })
+ }
+ })
+ },
+
+ /**
+ * 姝よ鑹插凡鏈夋暟鎹垪琛�
+ */
+ sysRoleOwnData (record) {
+ sysRoleOwnData({ id: record.id }).then((res) => {
+ if (res.success) {
+ this.checkedKeys = res.data
+ }
+ this.formLoading = false
+ })
+ },
+
+ onExpand (expandedKeys) {
+ this.expandedKeys = expandedKeys
+ this.autoExpandParent = false
+ },
+ onCheck (checkedKeys) {
+ this.checkedKeys = checkedKeys
+ },
+ onSelect (selectedKeys, info) {
+ this.selectedKeys = selectedKeys
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ const checkedKeys = this.checkedKeys.checked === undefined ? this.checkedKeys : this.checkedKeys.checked
+ sysRoleGrantData({ id: this.roleEntity.id, grantOrgIdList: checkedKeys, dataScopeType: values.dataScopeType }).then((res) => {
+ this.confirmLoading = false
+ if (res.success) {
+ this.$message.success('鎺堟潈鎴愬姛')
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ // 娓呯┖宸查�夋嫨鐨�
+ this.checkedKeys = []
+ // 娓呯┖宸插睍寮�鐨�
+ this.expandedKeys = []
+ this.visible = false
+ // 闅愯棌鏈烘瀯鏍�
+ this.orgTreeShow = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue
new file mode 100644
index 0000000..b9be6bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/role/rolePdaMenuModal.vue
@@ -0,0 +1,123 @@
+<template>
+ <a-modal
+ title="PDA鑿滃崟鎺堟潈"
+ width="600px"
+ :visible="visible"
+ dialogClass="zero-modal"
+ @cancel="handleCancel"
+ >
+ <div class="system-role-pda-menu-modal">
+ <a-collapse v-model="activeKey">
+ <a-collapse-panel v-for="(itema,indexa) in menus" :key="String(indexa)" :header="itema.workShopName">
+ <div class="menu-lists">
+ <div class="menu-item" v-for="(itemb,indexb) in (itema.wmsPdaPowerOutput || [])" :key="`${indexa}-${indexb}`">
+ <a-checkbox :checked="itemb.isCheck" @change="onChangeChecked(itemb)">{{itemb.name}}</a-checkbox>
+ </div>
+ </div>
+ </a-collapse-panel>
+ </a-collapse>
+ </div>
+ <template slot="footer">
+ <a-button key="back" @click="handleCancel">鍙栨秷</a-button>
+ <a-button type="primary" key="ok" @click="onConfirm">纭</a-button>
+ </template>
+ </a-modal>
+</template>
+
+<script>
+import { getPdaMenuList } from '@/api/modular/system/menuManage'
+import { sysRoleGrantPdaMenu } from '@/api/modular/system/roleManage'
+
+export default {
+ name:'systemRolePdaMenuModal',
+ emits:['update:visible'],
+ props:{
+ visible:{
+ type:Boolean,
+ default:false
+ },
+ roleid:{
+ type:[Number,String,null],
+ default:null
+ }
+ },
+ data(){
+ return {
+ menus:[],
+ activeKey:[]
+ }
+ },
+ watch:{
+ visible(newV,oldV){
+ if (newV!==oldV){
+ this.initShow()
+ }
+ }
+ },
+ methods:{
+ handleCancel(){
+ this.$emit('update:visible',false)
+ },
+ initShow(){
+ if (this.visible) {
+ this.getMenus()
+ }
+ },
+ getMenus(){
+ this.$loading.show()
+ getPdaMenuList(this.roleid).then((d)=>{
+ this.menus = d.data || []
+ if (this.menus.length>0) {
+ this.activeKey = ['0']
+ }
+ this.$loading.hide()
+ }).catch(()=>{
+ this.$loading.hide()
+ })
+ },
+ onChangeChecked(row){
+ row.isCheck = !row.isCheck
+ },
+ onConfirm(){
+ this.$loading.show()
+ this.handleUpdateAjax((f)=>{
+ this.$loading.hide()
+ if (f) {
+ this.$message.success('鎿嶄綔鎴愬姛锛�');
+ this.handleCancel()
+ }
+ })
+ },
+ handleUpdateAjax(callback){
+ let _params = {
+ id:this.roleid,
+ grantMenuIdList:[]
+ }
+ this.menus.forEach((itema)=>{
+ if (itema.wmsPdaPowerOutput instanceof Array) {
+ itema.wmsPdaPowerOutput .forEach((itemb)=>{
+ if (itemb.isCheck){
+ _params.grantMenuIdList.push(itemb.id)
+ }
+ })
+ }
+ })
+ if (_params.grantMenuIdList.length<=0) {
+ callback(false)
+ } else {
+ sysRoleGrantPdaMenu(_params).then(()=>{
+ callback(true)
+ }).catch(()=>{
+ callback(false)
+ })
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.system-role-pda-menu-modal{
+ padding: 16px;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue
new file mode 100644
index 0000000..ef8c357
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/sms/index.vue
@@ -0,0 +1,163 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('sysSms:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鎵嬫満鍙�">
+ <a-input v-model="queryParam.phoneNumbers" placeholder="璇疯緭鍏ユ墜鏈哄彿"/>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍙戦�佺姸鎬�">
+ <a-select v-model="queryParam.status" placeholder="璇烽�夋嫨鍙戦�佺姸鎬�" >
+ <a-select-option v-for="(item,index) in statusDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <template v-if="advanced">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鏉ユ簮">
+ <a-select v-model="queryParam.source" placeholder="璇烽�夋嫨鏉ユ簮" >
+ <a-select-option v-for="(item,index) in sourceDictTypeDropDown" :key="index" :value="item.code" >{{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </template>
+ <a-col :md="!advanced && 8 || 24" :sm="24">
+ <span class="table-page-search-submitButtons" :style="advanced && { float: 'right', overflow: 'hidden' } || {} ">
+ <a-button type="primary" @click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @click="toggleAdvanced" style="margin-left: 8px">
+ {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ >
+ <span slot="status" slot-scope="text">
+ {{ statusFilter(text) }}
+ </span>
+ <span slot="source" slot-scope="text">
+ {{ sourceFilter(text) }}
+ </span>
+ </s-table>
+ </a-card>
+ </div>
+</template>
+<script>
+ import { STable, XCard } from '@/components'
+ import { smsPage } from '@/api/modular/system/smsManage'
+ import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+ export default {
+ components: {
+ XCard,
+ STable
+ },
+ data () {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [
+ {
+ title: '鎵嬫満鍙�',
+ dataIndex: 'phoneNumbers'
+ },
+ {
+ title: '鐭俊楠岃瘉鐮�',
+ dataIndex: 'validateCode'
+ },
+ {
+ title: '鐭俊妯℃澘ID',
+ dataIndex: 'templateCode'
+ },
+ {
+ title: '鍙戦�佺姸鎬�',
+ dataIndex: 'status',
+ scopedSlots: { customRender: 'status' }
+ },
+ {
+ title: '鏉ユ簮',
+ dataIndex: 'source',
+ scopedSlots: { customRender: 'source' }
+ },
+ {
+ title: '澶辨晥鏃堕棿',
+ dataIndex: 'invalidTime'
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return smsPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ statusDictTypeDropDown: [],
+ sourceDictTypeDropDown: []
+ }
+ },
+ created () {
+ this.sysDictTypeDropDown()
+ },
+ methods: {
+ sourceFilter (source) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.sourceDictTypeDropDown.filter(item => item.code == source)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ statusFilter (status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown () {
+ sysDictTypeDropDown({ code: 'send_type' }).then((res) => {
+ this.statusDictTypeDropDown = res.data
+ })
+ sysDictTypeDropDown({ code: 'sms_send_source' }).then((res) => {
+ this.sourceDictTypeDropDown = res.data
+ })
+ },
+ toggleAdvanced () {
+ this.advanced = !this.advanced
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue
new file mode 100644
index 0000000..ad83e6d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/addForm.vue
@@ -0,0 +1,157 @@
+<template>
+ <a-modal
+ title="鏂板绉熸埛"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ叕鍙稿悕绉�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉帮紒'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="绠$悊鍛樺鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鐞嗗憳濮撳悕" v-decorator="['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="閭(璐﹀彿)" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email', {rules: [{required: true, message: '璇疯緭鍏ョ數瀛愰偖绠�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐢佃瘽鍙风爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇濆彿鐮�" v-decorator="['phone']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <!--<a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鏋舵瀯" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ユ灦鏋勫悕绉�" v-decorator="['schema']" />
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+
+ <!-- <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-textarea
+ :rows="4"
+ placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"
+ v-decorator="['connection', {rules: [{required: false, message: '璇疯緭鍏ユ暟鎹簱杩炴帴瀛楃涓诧紒'}]}]"></a-textarea>
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form :form="form">
+ <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-textarea :rows="2" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ sysTenantAdd
+ } from '@/api/modular/system/tenantManage'
+
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 6
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ labelCol_JG: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 3
+ }
+ },
+ wrapperCol_JG: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 20
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ formLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add(record) {
+ this.visible = true
+ this.formLoading = false
+ },
+
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysTenantAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue
new file mode 100644
index 0000000..4961fa7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/editForm.vue
@@ -0,0 +1,163 @@
+<template>
+ <a-modal
+ title="缂栬緫绉熸埛"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item style="display: none;" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="鍏徃鍚嶇О" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ叕鍙稿悕绉�'}]}]" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="绠$悊鍛樺鍚�" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ鐞嗗憳濮撳悕" v-decorator="['adminName', {rules: [{required: true, message: '璇疯緭鍏ョ鐞嗗憳濮撳悕'}]}]" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item label="閭(璐﹀彿)" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數瀛愰偖绠�" v-decorator="['email']" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="鐢佃瘽鍙风爜" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-input placeholder="璇疯緭鍏ョ數璇濆彿鐮�" v-decorator="['phone']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <!-- <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item label="鏁版嵁搴撹繛鎺�" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-textarea
+ :rows="4"
+ placeholder="璇疯緭鍏ユ暟鎹簱杩炴帴"
+ v-decorator="['connection', {rules: [{required: true, message: '璇疯緭鍏ユ暟鎹簱杩炴帴瀛楃涓诧紒'}]}]"></a-textarea>
+ </a-form-item>
+ </a-col>
+ </a-row> -->
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form :form="form">
+ <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-textarea :rows="2" placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-textarea>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ sysTenantEdit
+ } from '@/api/modular/system/tenantManage'
+
+ export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 6
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 16
+ }
+ },
+ labelCol_JG: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 3
+ }
+ },
+ wrapperCol_JG: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 20
+ }
+ },
+ visible: false,
+ confirmLoading: false,
+ formLoading: false,
+ form: this.$form.createForm(this)
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ name: record.name,
+ adminName: record.adminName,
+ host: record.host,
+ email: record.email,
+ phone: record.phone,
+ remark: record.remark,
+ connection: record.connection
+ })
+ }, 100)
+ },
+
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysTenantEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue
new file mode 100644
index 0000000..1005acb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/index.vue
@@ -0,0 +1,200 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('sysTenant:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏徃鍚嶇О">
+ <a-input v-model="queryParam.name" allow-clear placeholder="璇疯緭鍏ョ鎴峰悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('sysTenant:add')">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysTenant:add')">鏂板绉熸埛
+ </a-button>
+ </template>
+ <span slot="host" slot-scope="host">
+ <a-tag :color="'geekblue'">
+ {{ host }}
+ </a-tag>
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysTenant:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysTenant:edit')" />
+ <a-dropdown
+ v-if="hasPerm('sysTenant:grantMenu') || hasPerm('sysTenant:delete')">
+ <a class="ant-dropdown-link">
+ 鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item v-if="hasPerm('sysTenant:grantMenu')">
+ <a @click="$refs.tenantMenuForm.tenantMenu(record)">鎺堟潈鑿滃崟</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysTenant:resetPwd')">
+ <a-popconfirm placement="topRight" title="纭閲嶇疆瀵嗙爜锛�" @confirm="() => resetPwd(record)">
+ <a>閲嶇疆瀵嗙爜</a>
+ </a-popconfirm>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysTenant:delete')">
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysTenantDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <tenant-menu-form ref="tenantMenuForm" @ok="handleOk"/>
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ STable,
+ Ellipsis,
+ XCard
+ } from '@/components'
+ import {
+ sysTenantPage,
+ sysTenantDelete,
+ sysTenantResetPwd
+ } from '@/api/modular/system/tenantManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import tenantMenuForm from './tenantMenuForm'
+
+ export default {
+ components: {
+ XCard,
+ STable,
+ Ellipsis,
+ addForm,
+ editForm,
+ tenantMenuForm
+ },
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [{
+ title: '鍏徃鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '璐﹀彿(閭)',
+ dataIndex: 'email'
+ },
+ {
+ title: '濮撳悕',
+ dataIndex: 'adminName'
+ },
+ {
+ title: '鐢佃瘽',
+ dataIndex: 'phone'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark'
+ }
+ // {
+ // title: '鏋舵瀯',
+ // dataIndex: 'schema',
+ // width: 100
+ // },
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysTenantPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created() {
+ if (this.hasPerm('sysTenant:edit') || this.hasPerm('sysTenant:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ },
+ methods: {
+ sysTenantDelete(record) {
+ sysTenantDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ },
+ /**
+ * 閲嶇疆瀵嗙爜
+ */
+ resetPwd(record) {
+ sysTenantResetPwd({
+ id: record.id
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('閲嶇疆鎴愬姛')
+ // this.$refs.table.refresh()
+ } else {
+ this.$message.error('閲嶇疆澶辫触锛�' + res.message)
+ }
+ })
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue
new file mode 100644
index 0000000..879246b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/tenant/tenantMenuForm.vue
@@ -0,0 +1,186 @@
+<template>
+ <a-modal
+ title="绉熸埛鎺堟潈鑿滃崟"
+ :width="600"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel">
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item label="鑿滃崟鏉冮檺" :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <a-tree
+ v-model="checkedKeys"
+ multiple
+ checkable
+ :auto-expand-parent="autoExpandParent"
+ :expanded-keys="expandedKeys"
+ :tree-data="menuTreeData"
+ :selected-keys="selectedKeys"
+ :replaceFields="replaceFields"
+ @expand="onExpand"
+ @select="onSelect"
+ @check="treeCheck">
+ </a-tree>
+ </a-form-item>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+ SysMenuTreeForGrant
+ } from '@/api/modular/system/menuManage'
+ import {
+ sysTenantOwnMenu,
+ sysTenantGrantMenu
+ } from '@/api/modular/system/tenantManage'
+
+ export default {
+ data() {
+ return {
+ labelCol: {
+ style: {
+ 'padding-right': '20px'
+ },
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 5
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 24
+ },
+ sm: {
+ span: 15
+ }
+ },
+ menuTreeData: [],
+ expandedKeys: [],
+ checkedKeys: [],
+ halfCheckedKeys: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ autoExpandParent: true,
+ selectedKeys: [],
+ subValues: [],
+ tenantEntity: [],
+ replaceFields: {
+ key: 'id'
+ },
+ form: this.$form.createForm(this)
+ }
+ },
+
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ tenantMenu(record) {
+ this.formLoading = true
+ this.tenantEntity = record
+ this.visible = true
+ this.getMenuTree()
+ this.expandedMenuKeys(record)
+ },
+
+ /**
+ * 鑾峰彇鑿滃崟鍒楄〃
+ */
+ getMenuTree() {
+ SysMenuTreeForGrant().then((res) => {
+ if (res.success) {
+ this.menuTreeData = res.data
+ // 榛樿灞曞紑鐩綍绾�
+ this.menuTreeData.forEach(item => {
+ this.expandedKeys.push(item.id)
+ })
+ }
+ })
+ },
+
+ /**
+ * 姝ょ鎴峰凡鏈夎彍鍗曟潈闄�
+ */
+ expandedMenuKeys(record) {
+ sysTenantOwnMenu({
+ id: record.id
+ }).then((res) => {
+ if (res.success) {
+ this.checkedKeys = res.data
+ this.findAllChildren(this.menuTreeData)
+ }
+ this.formLoading = false
+ })
+ },
+
+ treeCheck(checkKeys, event) {
+ this.halfCheckedKeys = event.halfCheckedKeys
+ },
+ onExpand(expandedKeys) {
+ this.expandedKeys = expandedKeys
+ this.autoExpandParent = false
+ },
+ onCheck(checkedKeys) {
+ this.checkedKeys = checkedKeys
+ },
+ onSelect(selectedKeys, info) {
+ this.selectedKeys = selectedKeys
+ },
+
+ handleSubmit() {
+ const {
+ form: {
+ validateFields
+ }
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysTenantGrantMenu({
+ id: this.tenantEntity.id,
+ grantMenuIdList: this.checkedKeys.concat(this.halfCheckedKeys)
+ }).then((res) => {
+ if (res.success) {
+ this.$message.success('鎺堟潈鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鎺堟潈澶辫触锛�' + res.message)
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ // 娓呯┖宸查�夋嫨鐨�
+ this.checkedKeys = []
+ // 娓呯┖宸插睍寮�鐨�
+ this.expandedKeys = []
+ this.visible = false
+ },
+
+ // 閬嶅巻鏍戝舰鐒跺悗鑾峰彇鍒板鐖惰妭鐐硅繘琛岀Щ闄わ紝浣跨敤瀛愯妭鐐癸紝鑰屼笖灏嗙埗鑺傜偣鍔犲叆鍒癿ainMenuList
+ findAllChildren(data) {
+ data.forEach((item, index) => {
+ if (item.children.length !== 0) {
+ for (let i = 0; i < this.checkedKeys.length; i++) {
+ if (item.id === this.checkedKeys[i]) {
+ this.checkedKeys.splice(i, 1)
+ }
+ }
+ this.findAllChildren(item.children)
+ }
+ })
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue
new file mode 100644
index 0000000..c071d3b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/addForm.vue
@@ -0,0 +1,367 @@
+<template>
+ <a-modal
+ title="鏂板瀹氭椂浠诲姟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :label="jobNameLabel" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select
+ :placeholder="jobNamePlaceholder"
+ :showArrow="true"
+ :mode="jobNameMode"
+ v-decorator="['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]"
+ >
+ <a-select-option
+ v-for="(item, index) in JobNameData"
+ :key="index"
+ :value="item.jobName"
+ @click="onChangeJobName(item)"
+ >{{ item.jobName }}</a-select-option
+ >
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃">
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 璇锋眰鍦板潃
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ヨ鍦板潃"
+ v-decorator="['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰绫诲瀷">
+ <a-radio-group
+ v-decorator="['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]"
+ >
+ <a-radio
+ v-for="(item, index) in requestTypeEnumDataDropDown"
+ :key="index"
+ :value="parseInt(item.code)"
+ @click="onChangeRequestType(item.code)"
+ >{{ item.value }}</a-radio
+ >
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <div v-show="showHeaders">
+ <a-col :md="24" :sm="24">
+ <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰澶�" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ姹傚ご" style="width: 100%" v-decorator="['headers']" />
+ </a-form-item>
+ </a-col>
+ </div>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item
+ :labelCol="labelCol_JG"
+ :wrapperCol="wrapperCol_JG"
+ :label="requestParametersLabel"
+ has-feedback
+ >
+ <a-textarea :rows="1" :placeholder="requestParametersPlaceholder" v-decorator="['requestParameters']">
+ </a-textarea>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="瀹氭椂鍣ㄧ被鍨�">
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�"
+ @change="onChangeTimerType"
+ v-decorator="['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]"
+ >
+ <a-select-option v-for="(item, index) in spareTimeTypeDropDown" :key="index" :value="item.code">{{
+ item.value
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎵ц闂撮殧(绉�)"
+ has-feedback
+ v-if="VisibleTimerType"
+ >
+ <a-input-number
+ placeholder="璇疯緭鍏ユ墽琛岄棿闅�"
+ style="width: 100%"
+ v-decorator="['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]"
+ :min="1"
+ />
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="浠诲姟琛ㄨ揪寮�" has-feedback v-else>
+ <nobr>
+ <a-input
+ placeholder="璇疯緭鍏ヤ换鍔¤〃杈惧紡"
+ v-decorator="['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]"
+ />
+ <a href="https://www.bejson.com/othertools/cron/" target="_Blank">鍙傝��</a>
+ </nobr>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�">
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 绔嬪嵆鎵ц
+ </span>
+ <a-switch
+ id="startNow"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['startNow', { valuePropName: 'checked' }]"
+ />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍙墽琛屼竴娆�">
+ <a-switch
+ id="doOnce"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['doOnce', { valuePropName: 'checked' }]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip
+ title="骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�"
+ >
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 鎵ц绫诲瀷
+ </span>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵ц绫诲瀷"
+ v-decorator="['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]"
+ >
+ <a-select-option v-for="(item, index) in executeTypeDropDown" :key="index" :value="item.code">{{
+ item.value
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { sysTimersAdd, sysTimersLocalJobList } from '@/api/modular/system/timersManage'
+import { sysEnumDataList, sysEnumDataListByField } from '@/api/modular/system/enumManage'
+export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 6,
+ },
+ },
+ wrapperCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 16,
+ },
+ },
+ labelCol_JG: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 3,
+ },
+ },
+ wrapperCol_JG: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 20,
+ },
+ },
+ visible: false,
+ confirmLoading: false,
+ VisibleTimerType: true,
+ requestTypeEnumDataDropDown: [],
+ spareTimeTypeDropDown: [],
+ executeTypeDropDown: [],
+ LocalJobsDropDown: [],
+ JobNameData: [],
+ formLoading: false,
+ jobNameLabel: '浠诲姟鍚嶇О',
+ jobNameMode: 'combobox',
+ jobNamePlaceholder: '璇疯緭鍏ヤ换鍔″悕绉�',
+ requestParametersLabel: '璇锋眰鍙傛暟',
+ requestParametersPlaceholder: '璇疯緭鍏ヨ姹傚弬鏁�',
+ showHeaders: true,
+ form: this.$form.createForm(this),
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add(record) {
+ this.visible = true
+ // this.formLoading = true
+ this.formLoading = false
+ this.sysEnumDataList()
+
+ this.form.getFieldDecorator('requestType', {
+ initialValue: 2,
+ })
+ this.form.getFieldDecorator('timerType', {
+ initialValue: 0,
+ })
+ this.form.getFieldDecorator('executeType', {
+ initialValue: 0,
+ })
+ },
+
+ /**
+ * 鑾峰彇鏋氫妇鏁版嵁
+ */
+ sysEnumDataList() {
+ sysEnumDataList({
+ enumName: 'RequestTypeEnum',
+ }).then((res) => {
+ this.requestTypeEnumDataDropDown = res.data
+ })
+ sysEnumDataListByField({
+ EntityName: 'SysTimer',
+ FieldName: 'TimerType',
+ }).then((res) => {
+ this.spareTimeTypeDropDown = res.data
+ })
+ sysEnumDataListByField({
+ EntityName: 'SysTimer',
+ FieldName: 'ExecuteType',
+ }).then((res) => {
+ this.executeTypeDropDown = res.data
+ })
+ },
+
+ onChangeTimerType(e) {
+ this.VisibleTimerType = e === 0
+ },
+
+ onChangeRequestType(e) {
+ this.showHeaders = e !== 0
+ if (!this.showHeaders) {
+ if (this.LocalJobsDropDown.length === 0) {
+ sysTimersLocalJobList().then((res) => {
+ this.LocalJobsDropDown = res.data
+ this.JobNameData = res.data
+ })
+ } else {
+ this.JobNameData = this.LocalJobsDropDown
+ }
+ this.jobNameLabel = '浠诲姟鏂规硶'
+ this.jobNameMode = 'default'
+ this.jobNamePlaceholder = '璇烽�夋嫨浠诲姟鏂规硶'
+ this.requestParametersLabel = '閰嶇疆椤瑰弬鏁�'
+ this.requestParametersPlaceholder = '璇疯緭鍏ラ厤缃」鍙傛暟'
+ } else {
+ this.JobNameData = []
+ this.jobNameLabel = '浠诲姟鍚嶇О'
+ this.jobNameMode = 'combobox'
+ this.jobNamePlaceholder = '璇疯緭鍏ヤ换鍔″悕绉�'
+ this.requestParametersLabel = '璇锋眰鍙傛暟'
+ this.requestParametersPlaceholder = '璇疯緭鍏ヨ姹傚弬鏁�'
+ }
+ },
+
+ onChangeJobName(e) {
+ this.onChangeTimerType(e.timerType)
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ requestUrl: e.requestUrl,
+ startNow: e.startNow,
+ doOnce: e.doOnce,
+ interval: e.interval,
+ timerType: e.timerType,
+ remark: e.remark,
+ executeType: e.executeType,
+ cron: e.cron,
+ })
+ }, 100)
+ },
+
+ handleSubmit() {
+ const {
+ form: { validateFields },
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysTimersAdd(values)
+ .then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + res.message)
+ }
+ })
+ .finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue
new file mode 100644
index 0000000..4a862b0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/editForm.vue
@@ -0,0 +1,390 @@
+<template>
+ <a-modal
+ title="缂栬緫瀹氭椂浠诲姟"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-row :gutter="24" style="display: none">
+ <a-col :md="12" :sm="24">
+ <a-form-item>
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :label="jobNameLabel" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+ <a-select
+ :placeholder="jobNamePlaceholder"
+ :showArrow="true"
+ :mode="jobNameMode"
+ v-decorator="['jobName', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔″悕绉帮紒' }] }]"
+ >
+ <a-select-option
+ v-for="(item, index) in JobNameData"
+ :key="index"
+ :value="item.jobName"
+ @click="onChangeJobName(item)"
+ >{{ item.jobName }}</a-select-option
+ >
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="Run绫诲瀷锛氱被鍚�/鏂规硶鍚嶏紝http绫诲瀷锛歎RL鍦板潃">
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 璇锋眰鍦板潃
+ </span>
+ <a-input
+ placeholder="璇疯緭鍏ヨ鍦板潃"
+ v-decorator="['requestUrl', { rules: [{ required: true, message: '璇疯緭鍏ヨ姹傚湴鍧�锛�' }] }]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰绫诲瀷">
+ <a-radio-group
+ v-decorator="['requestType', { rules: [{ required: true, message: '璇烽�夋嫨璇锋眰绫诲埆锛�' }] }]"
+ >
+ <a-radio
+ v-for="(item, index) in requestTypeEnumDataDropDown"
+ :key="index"
+ :value="parseInt(item.code)"
+ @click="onChangeRequestType(item.code)"
+ >{{ item.value }}</a-radio
+ >
+ </a-radio-group>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <div v-show="showHeaders">
+ <a-col :md="24" :sm="24">
+ <a-form-item :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" label="璇锋眰澶�" has-feedback>
+ <a-input placeholder="璇疯緭鍏ヨ姹傚ご" style="width: 100%" v-decorator="['headers']" />
+ </a-form-item>
+ </a-col>
+ </div>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form-item
+ :labelCol="labelCol_JG"
+ :wrapperCol="wrapperCol_JG"
+ :label="requestParametersLabel"
+ has-feedback
+ >
+ <a-textarea :rows="1" :placeholder="requestParametersPlaceholder" v-decorator="['requestParameters']">
+ </a-textarea>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="瀹氭椂鍣ㄧ被鍨�">
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨瀹氭椂鍣ㄧ被鍨�"
+ @change="onChangeTimerType"
+ v-decorator="['timerType', { rules: [{ required: true, message: '璇烽�夋嫨瀹氭椂鍣ㄧ被鍨嬶紒' }] }]"
+ >
+ <a-select-option v-for="(item, index) in spareTimeTypeDropDown" :key="index" :value="item.code">{{
+ item.value
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ label="鎵ц闂撮殧(绉�)"
+ has-feedback
+ v-if="VisibleTimerType"
+ >
+ <a-input-number
+ placeholder="璇疯緭鍏ユ墽琛岄棿闅�"
+ style="width: 100%"
+ v-decorator="['interval', { rules: [{ required: true, message: '璇疯緭鍏ユ墽琛岄棿闅旓紒' }] }]"
+ :min="1"
+ />
+ </a-form-item>
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="浠诲姟琛ㄨ揪寮�" has-feedback v-else>
+ <nobr>
+ <a-input
+ placeholder="璇疯緭鍏ヤ换鍔¤〃杈惧紡"
+ v-decorator="['cron', { rules: [{ required: true, message: '璇疯緭鍏ヤ换鍔¤〃杈惧紡锛�' }] }]"
+ />
+ <a href="https://www.bejson.com/othertools/cron/" target="_Blank">鍙傝��</a>
+ </nobr>
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip title="鏂板浠诲姟鍚庣珛鍗虫墽琛岋紝椤圭洰鍚姩鍚庣珛鍗虫墽琛�">
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 绔嬪嵆鎵ц
+ </span>
+ <a-switch
+ id="startNow"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['startNow', { valuePropName: 'checked' }]"
+ />
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="鍙墽琛屼竴娆�">
+ <a-switch
+ id="doOnce"
+ checkedChildren="鏄�"
+ unCheckedChildren="鍚�"
+ v-decorator="['doOnce', { valuePropName: 'checked' }]"
+ />
+ </a-form-item>
+ </a-col>
+ </a-row>
+
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol">
+ <span slot="label">
+ <a-tooltip
+ title="骞惰鎵ц涓嶄細绛夊緟褰撳墠浠诲姟瀹屾垚锛屽彂璧锋墽琛屽悗绔嬪嵆寮�濮嬩笅娆′换鍔$殑鍊掕鏃躲�備覆琛屾墽琛屼細绛夊緟褰撳墠浠诲姟瀹屾垚鎵嶅紑濮嬩笅娆′换鍔$殑鍊掕鏃�"
+ >
+ <a-icon type="question-circle-o" /> </a-tooltip
+ > 鎵ц绫诲瀷
+ </span>
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵ц绫诲瀷"
+ v-decorator="['executeType', { rules: [{ required: true, message: '璇烽�夋嫨鎵ц绫诲瀷锛�' }] }]"
+ >
+ <a-select-option v-for="(item, index) in executeTypeDropDown" :key="index" :value="item.code">{{
+ item.value
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form-item label="澶囨敞" :labelCol="labelCol_JG" :wrapperCol="wrapperCol_JG" has-feedback>
+ <a-input placeholder="璇疯緭鍏ュ娉�" v-decorator="['remark']"></a-input>
+ </a-form-item>
+ </a-col>
+ </a-row>
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { sysTimersEdit, sysTimersLocalJobList } from '@/api/modular/system/timersManage'
+import { sysEnumDataList, sysEnumDataListByField } from '@/api/modular/system/enumManage'
+
+export default {
+ data() {
+ return {
+ labelCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 6,
+ },
+ },
+ wrapperCol: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 16,
+ },
+ },
+ labelCol_JG: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 3,
+ },
+ },
+ wrapperCol_JG: {
+ xs: {
+ span: 24,
+ },
+ sm: {
+ span: 20,
+ },
+ },
+ visible: false,
+ confirmLoading: false,
+ VisibleTimerType: true,
+ requestTypeEnumDataDropDown: [],
+ spareTimeTypeDropDown: [],
+ executeTypeDropDown: [],
+ LocalJobsDropDown: [],
+ JobNameData: [],
+ formLoading: false,
+ jobNameLabel: '浠诲姟鍚嶇О',
+ jobNameMode: 'combobox',
+ jobNamePlaceholder: '璇疯緭鍏ヤ换鍔″悕绉�',
+ requestParametersLabel: '璇锋眰鍙傛暟',
+ requestParametersPlaceholder: '璇疯緭鍏ヨ姹傚弬鏁�',
+ showHeaders: true,
+ form: this.$form.createForm(this),
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit(record) {
+ this.visible = true
+ this.formLoading = true
+ this.sysEnumDataList()
+
+ // eslint-disable-next-line eqeqeq
+ this.VisibleTimerType = record.timerType == 0
+
+ if (record.requestType === 0) {
+ this.onChangeRequestType(record.requestType)
+ }
+
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ id: record.id,
+ jobName: record.jobName,
+ requestUrl: record.requestUrl,
+ requestType: record.requestType,
+ timerType: record.timerType,
+ cron: record.cron,
+ interval: record.interval,
+ headers: record.headers,
+ requestParameters: record.requestParameters,
+ remark: record.remark,
+ startNow: record.startNow,
+ doOnce: record.doOnce,
+ executeType: record.executeType,
+ })
+ }, 100)
+ },
+
+ /**
+ * 鑾峰彇鏋氫妇鏁版嵁
+ */
+ sysEnumDataList() {
+ sysEnumDataList({
+ enumName: 'RequestTypeEnum',
+ }).then((res) => {
+ this.requestTypeEnumDataDropDown = res.data
+ })
+ sysEnumDataListByField({
+ EntityName: 'SysTimer',
+ FieldName: 'TimerType',
+ }).then((res) => {
+ this.spareTimeTypeDropDown = res.data
+ })
+ sysEnumDataListByField({
+ EntityName: 'SysTimer',
+ FieldName: 'ExecuteType',
+ }).then((res) => {
+ this.executeTypeDropDown = res.data
+ })
+ this.formLoading = false
+ },
+
+ onChangeTimerType(e) {
+ this.VisibleTimerType = e === 0
+ },
+
+ onChangeRequestType(e) {
+ this.showHeaders = e !== 0
+ if (!this.showHeaders) {
+ if (this.LocalJobsDropDown.length === 0) {
+ sysTimersLocalJobList().then((res) => {
+ this.LocalJobsDropDown = res.data
+ this.JobNameData = res.data
+ })
+ } else {
+ this.JobNameData = this.LocalJobsDropDown
+ }
+ this.jobNameLabel = '浠诲姟鏂规硶'
+ this.jobNameMode = 'default'
+ this.jobNamePlaceholder = '璇烽�夋嫨浠诲姟鏂规硶'
+ this.requestParametersLabel = '閰嶇疆椤瑰弬鏁�'
+ this.requestParametersPlaceholder = '璇疯緭鍏ラ厤缃」鍙傛暟'
+ } else {
+ this.JobNameData = []
+ this.jobNameLabel = '浠诲姟鍚嶇О'
+ this.jobNameMode = 'combobox'
+ this.jobNamePlaceholder = '璇疯緭鍏ヤ换鍔″悕绉�'
+ this.requestParametersLabel = '璇锋眰鍙傛暟'
+ this.requestParametersPlaceholder = '璇疯緭鍏ヨ姹傚弬鏁�'
+ }
+ },
+
+ onChangeJobName(e) {
+ this.onChangeTimerType(e.timerType)
+ setTimeout(() => {
+ this.form.setFieldsValue({
+ requestUrl: e.requestUrl,
+ startNow: e.startNow,
+ doOnce: e.doOnce,
+ interval: e.interval,
+ timerType: e.timerType,
+ remark: e.remark,
+ executeType: e.executeType,
+ cron: e.cron,
+ })
+ }, 100)
+ },
+
+ handleSubmit() {
+ const {
+ form: { validateFields },
+ } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysTimersEdit(values)
+ .then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.visible = false
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.form.resetFields()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + res.message)
+ }
+ })
+ .finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel() {
+ this.form.resetFields()
+ this.visible = false
+ },
+ },
+}
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue
new file mode 100644
index 0000000..bf2afdb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/timers/index.vue
@@ -0,0 +1,264 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('sysTimers:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="浠诲姟鍚嶇О">
+ <a-input v-model="queryParam.timerName" allow-clear placeholder="璇疯緭鍏ヤ换鍔″悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator" v-if="hasPerm('sysTimers:add')">
+ <a-button @click="$refs.addForm.add()" icon="plus" type="primary" v-if="hasPerm('sysTimers:add')">鏂板瀹氭椂浠诲姟
+ </a-button>
+ </template>
+ <span slot="actionClass" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="remark" slot-scope="text">
+ <ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+ </span>
+ <span slot="requestType" slot-scope="requestType">
+ {{ requestTypeFilter(requestType) }}
+ </span>
+ <span slot="jobStatus" slot-scope="text,record" v-if="hasPerm('sysTimers:start') || hasPerm('sysTimers:stop')">
+ <a-popconfirm
+ placement="top"
+ :title="text===0? '纭畾鍋滄璇ヤ换鍔★紵':'纭畾鍚姩璇ヤ换鍔★紵'"
+ @confirm="() => editjobStatusStatus(text,record)">
+ <a-badge :status="text===0? 'processing':'default'" />
+ <a>{{ jobStatusFilter(text) }}</a>
+ </a-popconfirm>
+ </span>
+ <span slot="jobStatus" v-else>
+ <a-badge :status="text===0? 'processing':'default'" />
+ {{ jobStatusFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysTimers:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysTimers:edit') & hasPerm('sysTimers:delete')" />
+ <a-popconfirm
+ v-if="hasPerm('sysTimers:delete')"
+ placement="topRight"
+ title="纭鍒犻櫎锛�"
+ @confirm="() => sysTimersDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ import {
+ STable,
+ Ellipsis,
+ XCard
+ } from '@/components'
+ import {
+ sysTimersPage,
+ sysTimersDelete,
+ sysTimersStart,
+ sysTimersStop
+ } from '@/api/modular/system/timersManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import {
+ sysEnumDataList
+ } from '@/api/modular/system/enumManage'
+ export default {
+ // name: 'PosIndex',
+ components: {
+ XCard,
+ STable,
+ Ellipsis,
+ addForm,
+ editForm
+ },
+ data() {
+ return {
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [{
+ title: '浠诲姟鍚嶇О',
+ dataIndex: 'jobName'
+ },
+ {
+ title: '璇锋眰鍦板潃',
+ dataIndex: 'requestUrl'
+ },
+ {
+ title: '璇锋眰绫诲瀷',
+ dataIndex: 'requestType',
+ scopedSlots: {
+ customRender: 'requestType'
+ }
+ },
+ {
+ title: '璇锋眰鍙傛暟',
+ dataIndex: 'requestParameters'
+ },
+ {
+ title: '闂撮殧',
+ dataIndex: 'interval'
+ },
+ {
+ title: 'Cron',
+ dataIndex: 'cron'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'timerStatus',
+ scopedSlots: {
+ customRender: 'jobStatus'
+ }
+ },
+ {
+ title: '鎵ц娆℃暟',
+ dataIndex: 'runNumber'
+ },
+ {
+ title: '澶囨敞',
+ dataIndex: 'remark',
+ width: 100
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return sysTimersPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ selectedRowKeys: [],
+ selectedRows: [],
+ requestTypeEnumDataDropDown: []
+ }
+ },
+ created() {
+ this.sysEnumDataList()
+ if (this.hasPerm('sysTimers:edit') || this.hasPerm('sysTimers:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ },
+ methods: {
+ /**
+ * 鑾峰彇鏋氫妇鏁版嵁
+ */
+ sysEnumDataList() {
+ sysEnumDataList({
+ enumName: 'RequestTypeEnum'
+ }).then((res) => {
+ this.requestTypeEnumDataDropDown = res.data
+ })
+ },
+ requestTypeFilter(requestType) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.requestTypeEnumDataDropDown.filter(item => item.code == requestType)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ jobStatusFilter(jobStatus) {
+ if (jobStatus === 0) {
+ return '杩愯涓�'
+ } else if (jobStatus === 1) {
+ return '宸插仠姝�'
+ } else if (jobStatus === 2) {
+ return '鎵ц澶辫触'
+ } else if (jobStatus === 3) {
+ return '宸插彇娑�'
+ }
+ },
+ /**
+ * 鍚姩鍋滄
+ */
+ editjobStatusStatus(code, record) {
+ // eslint-disable-next-line eqeqeq
+ if (code === 0) {
+ sysTimersStop({
+ id: record.id,
+ jobName: record.jobName
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鍋滄鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍋滄澶辫触锛�' + res.message)
+ }
+ })
+ // eslint-disable-next-line eqeqeq
+ } else if (code != 0) {
+ sysTimersStart(record).then(res => {
+ if (res.success) {
+ this.$message.success('鍚姩鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍚姩澶辫触锛�' + res.message)
+ }
+ })
+ }
+ },
+ sysTimersDelete(record) {
+ sysTimersDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ },
+ mounted() {
+ // this.timer = setInterval(this.loadData, 5000)
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue
new file mode 100644
index 0000000..aac559f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/addForm.vue
@@ -0,0 +1,305 @@
+<template>
+ <a-modal
+ title="鐢ㄦ埛澧炲姞"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-divider orientation="left">鍩烘湰淇℃伅</a-divider>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="璐﹀彿"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ヨ处鍙�" v-decorator="['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24" >
+ <a-form :form="form">
+ <a-form-item
+ label="濮撳悕"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="瀵嗙爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input
+ placeholder="璇疯緭鍏ュ瘑鐮�"
+ type="password"
+ v-decorator="['password', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑瀵嗙爜锛�'},{
+ validator: validateToNextPassword,
+ },]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="閲嶅瀵嗙爜"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input
+ placeholder="璇峰啀娆¤緭鍏ュ瘑鐮�"
+ type="password"
+ v-decorator="['confirm', {rules: [{required: true, message: '璇峰啀娆¤緭鍏ュ瘑鐮侊紒'},
+ {
+ validator: compareToFirstPassword,
+ }]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+
+ <a-divider orientation="left">鍛樺伐淇℃伅</a-divider>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鏈烘瀯"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-tree-select
+ v-decorator="['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="orgTree"
+ placeholder="璇烽�夋嫨鏈烘瀯"
+ treeDefaultExpandAll
+ @change="e => initrOrgName(e)"
+ >
+ <span slot="title" slot-scope="{ id }">{{ id }}</span>
+ </a-tree-select>
+ </a-form-item>
+ <a-form-item v-show="false">
+ <a-input v-decorator="['sysEmpParam.orgName']" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="宸ュ彿"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ伐鍙�" v-decorator="['sysEmpParam.jobNum']" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鑱屼綅淇℃伅"
+ :labelCol="labelCol_JG"
+ :wrapperCol="wrapperCol_JG"
+ has-feedback
+ >
+ <a-select
+ mode="multiple"
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鑱屼綅淇℃伅"
+ v-decorator="['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]"
+ >
+ <a-select-option v-for="(item,index) in posList" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鎵�灞炶溅闂�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵�灞炶溅闂�"
+ v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]"
+ >
+ <a-select-option v-for="(item,index) in selectOptions.workShopTypes" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鎵�灞炰骇绾�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵�灞炰骇绾�"
+ >
+ <a-select-option v-for="(item,index) in selectOptions.lines" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { sysUserAdd,sysUserGetLines } from '@/api/modular/system/userManage'
+ import { getOrgTree, getOrgList } from '@/api/modular/system/orgManage'
+ import { sysPosList } from '@/api/modular/system/posManage'
+ import moment from 'moment'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 }
+ },
+ // 鏈烘瀯琛屾牱寮�
+ labelCol_JG: {
+ xs: { span: 24 },
+ sm: { span: 3 }
+ },
+ wrapperCol_JG: {
+ xs: { span: 24 },
+ sm: { span: 20 }
+ },
+ visible: false,
+ confirmLoading: false,
+ orgTree: [],
+ orgList: [],
+ posList: [],
+ form: this.$form.createForm(this),
+ selectOptions:{
+ workShopTypes:[],
+ lines:[]
+ }
+ }
+ },
+ created(){
+ this.selectOptions.workShopTypes = this.$options.filters['dictData']('les_workshop_type')
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ add () {
+ this.visible = true
+ this.getOrgDate()
+ this.getPosList()
+ this.getLinesList()
+ },
+ /**
+ * 鑾峰彇鏈烘瀯鏍戯紝骞跺姞杞戒簬琛ㄥ崟涓�
+ */
+ getOrgDate () {
+ getOrgTree().then((res) => {
+ this.orgTree = res.data
+ })
+ getOrgList().then((res) => {
+ this.orgList = res.data
+ })
+ },
+ /**
+ * 鑾峰彇鎵�灞炰骇绾縧ist鍒楄〃
+ */
+ getLinesList () {
+ if (this.selectOptions.lines!==0) {
+ sysUserGetLines().then((res) => {
+ this.selectOptions.lines = res.data
+ })
+ }
+ },
+ /**
+ * 鑾峰彇鑱屼綅list鍒楄〃
+ */
+ getPosList () {
+ sysPosList().then((res) => {
+ this.posList = res.data
+ })
+ },
+ compareToFirstPassword (rule, value, callback) {
+ const form = this.form
+ if (value && value !== form.getFieldValue('password')) {
+ // eslint-disable-next-line standard/no-callback-literal
+ callback('璇风‘璁や袱娆¤緭鍏ュ瘑鐮佺殑涓�鑷存�э紒')
+ } else {
+ callback()
+ }
+ },
+ validateToNextPassword (rule, value, callback) {
+ const form = this.form
+ if (value && this.confirmDirty) {
+ form.validateFields(['confirm'], { force: true })
+ }
+ callback()
+ },
+ /**
+ * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+ */
+ initrOrgName (value) {
+ this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: this.orgList.find(item => value === item.id).name })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysUserAdd(values).then((res) => {
+ if (res.success) {
+ this.$message.success('鏂板鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue
new file mode 100644
index 0000000..7706877
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/editForm.vue
@@ -0,0 +1,291 @@
+/* eslint-disable vue/no-template-shadow */
+<template>
+ <a-modal
+ title="缂栬緫鐢ㄦ埛"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="confirmLoading">
+ <a-divider orientation="left">鍩烘湰淇℃伅</a-divider>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ style="display: none;"
+ >
+ <a-input v-decorator="['id']" />
+ </a-form-item>
+ <a-form-item
+ label="璐﹀彿"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ヨ处鍙�" v-decorator="['account', {rules: [{required: true, min: 5, message: '璇疯緭鍏ヨ嚦灏戜簲涓瓧绗︾殑璐﹀彿锛�'}]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24" >
+ <a-form :form="form">
+ <a-form-item
+ label="濮撳悕"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ鍚�" v-decorator="['name', {rules: [{required: true, message: '璇疯緭鍏ュ鍚嶏紒'}]}]" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-divider orientation="left">鍛樺伐淇℃伅</a-divider>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鏈烘瀯"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-tree-select
+ v-decorator="['sysEmpParam.orgId', {rules: [{ required: true, message: '璇烽�夋嫨鏈烘瀯锛�' }]}]"
+ style="width: 100%"
+ :dropdownStyle="{ maxHeight: '300px', overflow: 'auto' }"
+ :treeData="orgTree"
+ placeholder="璇烽�夋嫨鏈烘瀯"
+ treeDefaultExpandAll
+ @change="e => initrOrgName(e)"
+ >
+ <span slot="title" slot-scope="{ id }">{{ id }}</span>
+ </a-tree-select>
+ </a-form-item>
+ <a-form :form="form">
+ <a-form-item v-show="false">
+ <a-input v-decorator="['sysEmpParam.orgName']" />
+ </a-form-item>
+ </a-form>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="宸ュ彿"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-input placeholder="璇疯緭鍏ュ伐鍙�" v-decorator="['sysEmpParam.jobNum']" />
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="24" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鑱屼綅淇℃伅"
+ :labelCol="labelCol_JG"
+ :wrapperCol="wrapperCol_JG"
+ has-feedback
+ >
+ <a-select
+ mode="multiple"
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鑱屼綅淇℃伅"
+ v-decorator="['sysEmpParam.posIdList', {rules: [{ required: true, message: '璇烽�夋嫨鑱屼綅淇℃伅锛�' }]}]"
+ >
+ <a-select-option v-for="(item,index) in posList" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ <a-row :gutter="24">
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鎵�灞炶溅闂�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵�灞炶溅闂�"
+ v-decorator="['workShopType', {rules: [{ required: true, message: '璇烽�夋嫨鎵�灞炶溅闂达紒' }]}]"
+ >
+ <a-select-option v-for="(item,index) in selectOptions.workShopTypes" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ <a-col :md="12" :sm="24">
+ <a-form :form="form">
+ <a-form-item
+ label="鎵�灞炰骇绾�"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ has-feedback
+ >
+ <a-select
+ style="width: 100%"
+ placeholder="璇烽�夋嫨鎵�灞炰骇绾�"
+ >
+ <a-select-option v-for="(item,index) in selectOptions.lines" :key="index" :value="item.id">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-form>
+ </a-col>
+ </a-row>
+ </a-spin>
+ </a-modal>
+</template>
+<script>
+ import { sysUserEdit, sysUserDetail, sysUserGetLines } from '@/api/modular/system/userManage'
+ import { getOrgTree, getOrgList } from '@/api/modular/system/orgManage'
+ import { sysPosList } from '@/api/modular/system/posManage'
+ import moment from 'moment'
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 6 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 16 }
+ },
+ // 鏈烘瀯琛屾牱寮�
+ labelCol_JG: {
+ xs: { span: 24 },
+ sm: { span: 3 }
+ },
+ wrapperCol_JG: {
+ xs: { span: 24 },
+ sm: { span: 20 }
+ },
+ visible: false,
+ confirmLoading: false,
+ orgTree: [],
+ orgList: [],
+ posList: [],
+ form: this.$form.createForm(this),
+ selectOptions:{
+ workShopTypes:[],
+ lines:[]
+ }
+ }
+ },
+ created(){
+ this.selectOptions.workShopTypes = this.$options.filters['dictData']('les_workshop_type')
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.confirmLoading = true
+ this.visible = true
+ this.getOrgData()
+ this.getPosList()
+ this.getLinesList()
+ // 鍩烘湰淇℃伅鍔犱汉琛ㄥ崟
+ setTimeout(() => {
+ this.form.setFieldsValue(
+ {
+ id: record.id,
+ account: record.account,
+ name: record.name
+ }
+ )
+ }, 100)
+ // 鑱屼綅淇℃伅鍔犲叆琛ㄥ崟
+ this.getUserDetaile(record.id)
+ },
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鍑虹敤鎴疯鎯咃紝灏嗚亴浣嶄俊鎭~鍏�
+ * @param id
+ */
+ getUserDetaile (id) {
+ sysUserDetail({ 'id': id }).then((res) => {
+ this.form.getFieldDecorator('workShopType', { initialValue: String(res.data.workShopType) })
+ this.form.getFieldDecorator('productionlineId', { initialValue: res.data.productionlineId })
+ let SysEmpInfo = res.data.sysEmpInfo
+ let Positions = []
+ SysEmpInfo.positions.forEach(item => {
+ Positions.push(item.posId)
+ })
+ this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: SysEmpInfo.orgName })
+ this.form.getFieldDecorator('sysEmpParam.posIdList', { initialValue: Positions })
+ this.form.getFieldDecorator('sysEmpParam.jobNum', { initialValue: SysEmpInfo.jobNum })
+ this.form.getFieldDecorator('sysEmpParam.orgId', { initialValue: SysEmpInfo.orgId })
+ this.confirmLoading = false
+ })
+ },
+ /**
+ * 鑾峰彇鏈烘瀯鏁版嵁锛屽苟鍔犺浇浜庤〃鍗曚腑
+ */
+ getOrgData () {
+ getOrgTree().then((res) => {
+ this.orgTree = res.data
+ })
+ getOrgList().then((res) => {
+ this.orgList = res.data
+ })
+ },
+ /**
+ * 鑾峰彇鎵�灞炰骇绾縧ist鍒楄〃
+ */
+ getLinesList () {
+ if (this.selectOptions.lines!==0) {
+ sysUserGetLines().then((res) => {
+ this.selectOptions.lines = res.data
+ })
+ }
+ },
+ /**
+ * 鑾峰彇鑱屼綅list鍒楄〃
+ */
+ getPosList () {
+ sysPosList().then((res) => {
+ this.posList = res.data
+ })
+ },
+ /**
+ * 閫夋嫨鏍戞満鏋勶紝鍒濆鍖栨満鏋勫悕绉颁簬琛ㄥ崟涓�
+ */
+ initrOrgName (value) {
+ this.form.getFieldDecorator('sysEmpParam.orgName', { initialValue: this.orgList.find(item => value === item.id).name })
+ },
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysUserEdit(values).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue
new file mode 100644
index 0000000..100784f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/index.vue
@@ -0,0 +1,372 @@
+<template>
+ <a-row :gutter="24">
+ <a-col :md="5" :sm="24" style="padding: 0 0 0 0;">
+ <a-card :bordered="false" :loading="treeLoading" >
+ <div v-if="this.orgTree != ''">
+ <a-tree
+ :treeData="orgTree"
+ v-if="orgTree.length"
+ @select="handleClick"
+ :defaultExpandAll="true"
+ :defaultExpandedKeys="defaultExpandedKeys"
+ :replaceFields="replaceFields" />
+ </div>
+ <div v-else>
+ <a-empty :image="simpleImage" />
+ </div>
+ </a-card>
+ </a-col>
+ <a-col :md="19" :sm="24">
+ <x-card v-if="hasPerm('sysUser:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鍏抽敭璇�">
+ <a-input v-model="queryParam.searchValue" allow-clear placeholder="璇疯緭鍏ュ鍚嶃�佽处鍙�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="鐘舵��">
+ <a-select v-model="queryParam.searchStatus" allow-clear placeholder="璇烽�夋嫨鐘舵��" default-value="0">
+ <a-select-option v-for="(item,index) in statusDictTypeDropDown" :key="index" :value="item.code">
+ {{ item.value }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id"
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template slot="operator">
+ <a-button type="primary" v-if="hasPerm('sysUser:add')" icon="plus" @click="$refs.addForm.add()">鏂板鐢ㄦ埛
+ </a-button>
+ <!-- <a-upload
+ :customRequest="customRequest"
+ :multiple="true"
+ :showUploadList="false"
+ name="file"
+ v-if="hasPerm('sysUser:import')">
+ <a-button icon="up-circle">瀵煎叆</a-button>
+ </a-upload>
+ <a-button v-if="hasPerm('sysUser:export')" icon="down-circle" @click="sysUserExport()">瀵煎嚭
+ </a-button> -->
+ </template>
+ <span slot="status" slot-scope="text,record" v-if="hasPerm('sysUser:changeStatus')">
+ <a-popconfirm
+ placement="top"
+ :title="text===0? '纭畾鍋滅敤璇ョ敤鎴凤紵':'纭畾鍚敤璇ョ敤鎴凤紵'"
+ @confirm="() => editUserStatus(text,record)">
+ <a>{{ statusFilter(text) }}</a>
+ </a-popconfirm>
+ </span>
+ <span slot="status" v-else>
+ {{ statusFilter(text) }}
+ </span>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('sysUser:edit')" @click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('sysUser:edit')" />
+ <a-dropdown
+ v-if="hasPerm('sysUser:resetPwd') || hasPerm('sysUser:grantRole') || hasPerm('sysUser:grantData') || hasPerm('sysUser:delete')">
+ <a class="ant-dropdown-link">
+ 鏇村
+ <a-icon type="down" />
+ </a>
+ <a-menu slot="overlay">
+ <a-menu-item v-if="hasPerm('sysUser:resetPwd')">
+ <a-popconfirm placement="topRight" title="纭閲嶇疆瀵嗙爜锛�" @confirm="() => resetPwd(record)">
+ <a>閲嶇疆瀵嗙爜</a>
+ </a-popconfirm>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysUser:grantRole')">
+ <a @click="$refs.userRoleForm.userRole(record)">鎺堟潈瑙掕壊</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysUser:grantData')">
+ <a @click="$refs.userOrgForm.userOrg(record)">鎺堟潈鏁版嵁</a>
+ </a-menu-item>
+ <a-menu-item v-if="hasPerm('sysUser:delete')">
+ <a-popconfirm placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => sysUserDelete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </a-menu-item>
+ </a-menu>
+ </a-dropdown>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @ok="handleOk" />
+ <edit-form ref="editForm" @ok="handleOk" />
+ <user-role-form ref="userRoleForm" @ok="handleOk" />
+ <user-org-form ref="userOrgForm" @ok="handleOk" />
+ </a-card>
+ </a-col>
+ </a-row>
+</template>
+<script>
+ import {
+ STable,
+ XCard
+ } from '@/components'
+ import {
+ Empty
+ } from 'ant-design-vue'
+ import {
+ getOrgTree
+ } from '@/api/modular/system/orgManage'
+ import {
+ getUserPage,
+ sysUserDelete,
+ sysUserChangeStatus,
+ sysUserResetPwd,
+ sysUserExport,
+ sysUserImport
+ } from '@/api/modular/system/userManage'
+ import {
+ sysDictTypeDropDown
+ } from '@/api/modular/system/dictManage'
+ import addForm from './addForm'
+ import editForm from './editForm'
+ import userRoleForm from './userRoleForm'
+ import userOrgForm from './userOrgForm'
+ export default {
+ components: {
+ XCard,
+ STable,
+ addForm,
+ editForm,
+ userRoleForm,
+ userOrgForm
+ },
+ data() {
+ return {
+ // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ advanced: false,
+ // 鏌ヨ鍙傛暟
+ queryParam: {},
+ // 琛ㄥご
+ columns: [{
+ title: '璐﹀彿',
+ dataIndex: 'account'
+ },
+ {
+ title: '濮撳悕',
+ dataIndex: 'name'
+ },
+ {
+ title: '鐘舵��',
+ dataIndex: 'status',
+ scopedSlots: {
+ customRender: 'status'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getUserPage(Object.assign(parameter, this.queryParam)).then((res) => {
+ return res.data
+ })
+ },
+ orgTree: [],
+ selectedRowKeys: [],
+ selectedRows: [],
+ defaultExpandedKeys: [],
+ statusDictTypeDropDown: [],
+ treeLoading: true,
+ simpleImage: Empty.PRESENTED_IMAGE_SIMPLE,
+ replaceFields: {
+ key: 'id'
+ }
+ }
+ },
+ created() {
+ /**
+ * 鑾峰彇鍒版満鏋勬爲锛屽睍寮�椤剁骇涓嬫爲鑺傜偣锛岃�冭檻鍒板悗鏈熸暟鎹噺鍙樺ぇ锛屼笉寤鸿鍏ㄩ儴灞曞紑
+ */
+ getOrgTree(Object.assign(this.queryParam)).then(res => {
+ this.treeLoading = false
+ if (!res.success) {
+ return
+ }
+ this.orgTree = res.data
+ for (var item of res.data) {
+ // eslint-disable-next-line eqeqeq
+ if (item.parentId == 0) {
+ this.defaultExpandedKeys.push(item.id)
+ }
+ }
+ })
+ this.sysDictTypeDropDown()
+ if (this.hasPerm('sysUser:edit') || this.hasPerm('sysUser:resetPwd') || this.hasPerm('sysUser:grantRole') || this
+ .hasPerm('sysUser:grantData') || this.hasPerm('sysUser:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ })
+ }
+ },
+ methods: {
+ statusFilter(status) {
+ // eslint-disable-next-line eqeqeq
+ const values = this.statusDictTypeDropDown.filter(item => item.code == status)
+ if (values.length > 0) {
+ return values[0].value
+ }
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ sysDictTypeDropDown(text) {
+ sysDictTypeDropDown({
+ code: 'common_status'
+ }).then((res) => {
+ this.statusDictTypeDropDown = res.data
+ })
+ },
+ /**
+ * 淇敼鐢ㄦ埛鐘舵��
+ */
+ editUserStatus(code, record) {
+ // eslint-disable-next-line no-unused-vars
+ const status = 0
+ // eslint-disable-next-line eqeqeq
+ if (code == 0) {
+ this.status = 1
+ // eslint-disable-next-line eqeqeq
+ } else if (code == 1) {
+ this.status = 0
+ }
+ sysUserChangeStatus({
+ id: record.id,
+ status: this.status
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鎿嶄綔澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 閲嶇疆瀵嗙爜
+ */
+ resetPwd(record) {
+ sysUserResetPwd({
+ id: record.id
+ }).then(res => {
+ if (res.success) {
+ this.$message.success('閲嶇疆鎴愬姛')
+ // this.$refs.table.refresh()
+ } else {
+ this.$message.error('閲嶇疆澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鍒犻櫎鐢ㄦ埛
+ * @param record
+ */
+ sysUserDelete(record) {
+ sysUserDelete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触锛�' + res.message)
+ }
+ }).catch((err) => {
+ this.$message.error('鍒犻櫎閿欒锛�' + err.message)
+ })
+ },
+ // 瀵煎嚭鐢ㄦ埛鏂囦欢
+ sysUserExport(e) {
+ this.cardLoading = true
+ sysUserExport().then((res) => {
+ this.cardLoading = false
+ this.downloadfile(res)
+ // eslint-disable-next-line handle-callback-err
+ }).catch((err) => {
+ this.cardLoading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒')
+ })
+ },
+ downloadfile(res) {
+ var blob = new Blob([res.data], {
+ type: 'application/octet-stream;charset=UTF-8'
+ })
+ var contentDisposition = res.headers['content-disposition']
+ const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/
+ const matches = filenameRegex.exec(contentDisposition)
+ const filename = matches[1].replace(/['"]/g, '')
+ var downloadElement = document.createElement('a')
+ var href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ var reg = /^["](.*)["]$/g
+ downloadElement.style.display = 'none'
+ downloadElement.href = href
+ downloadElement.download = decodeURI(filename.replace(reg, '$1')) // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement)
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+ },
+ /**
+ * 涓婁紶鐢ㄦ埛鏂囦欢
+ */
+ customRequest(data) {
+ const formData = new FormData()
+ formData.append('file', data.file)
+ sysUserImport(formData).then((res) => {
+ if (res.success) {
+ this.$message.success('涓婁紶鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('涓婁紶澶辫触锛�' + res.message)
+ }
+ })
+ },
+ /**
+ * 鐐瑰嚮宸︿晶鏈烘瀯鏍戞煡璇㈠垪琛�
+ */
+ handleClick(e) {
+ this.queryParam = {
+ 'sysEmpParam.orgId': e.toString()
+ }
+ this.$refs.table.refresh(true)
+ },
+ toggleAdvanced() {
+ this.advanced = !this.advanced
+ },
+ handleOk() {
+ this.$refs.table.refresh()
+ },
+ onSelectChange(selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue
new file mode 100644
index 0000000..1debf86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userOrgForm.vue
@@ -0,0 +1,150 @@
+<template>
+ <a-modal
+ title="鎺堟潈鏁版嵁"
+ :width="600"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+ <a-spin :spinning="formLoading">
+ <a-form :form="form">
+ <a-form-item
+ label="閫夋嫨鏈烘瀯"
+ :labelCol="labelCol"
+ :wrapperCol="wrapperCol"
+ >
+
+ <a-tree
+ v-model="checkedKeys"
+ checkable
+ :auto-expand-parent="autoExpandParent"
+ :expanded-keys="expandedKeys"
+ :tree-data="orgTreeData"
+ :selected-keys="selectedKeys"
+ :replaceFields="replaceFields"
+ @expand="onExpand"
+ @select="onSelect"
+ />
+ </a-form-item>
+
+ </a-form>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { getOrgTree } from '@/api/modular/system/orgManage'
+ import { sysUserOwnData, sysUserGrantData } from '@/api/modular/system/userManage'
+
+ export default {
+ data () {
+ return {
+ labelCol: {
+ style: { 'padding-right': '20px' },
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ orgTreeData: [],
+ expandedKeys: [],
+ checkedKeys: [],
+ visible: false,
+ confirmLoading: false,
+ formLoading: true,
+ autoExpandParent: true,
+ selectedKeys: [],
+ userEntity: [],
+ replaceFields: {
+ key: 'id'
+ },
+ form: this.$form.createForm(this)
+ }
+ },
+
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ userOrg (record) {
+ this.userEntity = record
+ this.visible = true
+ // 鑾峰彇鏈烘瀯鏍�
+ this.getOrgTree()
+ // 宸插叧鑱旀暟鎹�
+ this.sysUserOwnData(this.userEntity)
+ },
+
+ /**
+ * 鑾峰彇鏈烘瀯鏍�
+ */
+ getOrgTree () {
+ this.formLoading = true
+ getOrgTree().then((res) => {
+ if (res.success) {
+ this.orgTreeData = res.data
+ // 榛樿灞曞紑
+ this.orgTreeData.forEach(item => {
+ this.expandedKeys.push(item.id)
+ })
+ }
+ })
+ },
+
+ /**
+ * 姝ょ敤鎴峰凡鏈夋暟鎹垪琛�
+ */
+ sysUserOwnData (record) {
+ sysUserOwnData({ id: record.id }).then((res) => {
+ if (res.success) {
+ this.checkedKeys = res.data
+ }
+ this.formLoading = false
+ })
+ },
+
+ onExpand (expandedKeys) {
+ this.expandedKeys = expandedKeys
+ this.autoExpandParent = false
+ },
+ onCheck (checkedKeys) {
+ this.checkedKeys = checkedKeys
+ },
+ onSelect (selectedKeys, info) {
+ this.selectedKeys = selectedKeys
+ },
+
+ handleSubmit () {
+ const { form: { validateFields } } = this
+ this.confirmLoading = true
+ validateFields((errors, values) => {
+ if (!errors) {
+ sysUserGrantData({ id: this.userEntity.id, grantOrgIdList: this.checkedKeys }).then((res) => {
+ if (res.success) {
+ this.$message.success('鎺堟潈鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('鎺堟潈澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ } else {
+ this.confirmLoading = false
+ }
+ })
+ },
+ handleCancel () {
+ this.form.resetFields()
+ // 娓呯┖宸查�夋嫨鐨�
+ this.checkedKeys = []
+ // 娓呯┖宸插睍寮�鐨�
+ this.expandedKeys = []
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue
new file mode 100644
index 0000000..20c4d9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/user/userRoleForm.vue
@@ -0,0 +1,117 @@
+<template>
+ <a-modal
+ title="鎺堟潈瑙掕壊"
+ :width="800"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @ok="handleSubmit"
+ @cancel="handleCancel"
+ >
+
+ <a-card :bordered="false">
+
+ <div>
+ <a-table
+ size="middle"
+ :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
+ :columns="columns"
+ :dataSource="loadData"
+ :pagination="false"
+ :loading="loading"
+ :rowKey="(record) => record.id"
+ />
+ </div>
+
+ </a-card>
+
+ </a-modal>
+</template>
+
+<script>
+ import { getRolePage } from '@/api/modular/system/roleManage'
+ import { sysUserOwnRole, sysUserGrantRole } from '@/api/modular/system/userManage'
+
+ const columns = [
+ {
+ title: '瑙掕壊鍚嶇О',
+ dataIndex: 'name'
+ },
+ {
+ title: '鍞竴缂栫爜',
+ dataIndex: 'code'
+ }
+ ]
+
+ export default {
+ name: 'UserRoleIndex',
+
+ data () {
+ return {
+ columns,
+ loadData: [],
+ selectedRowKeys: [], // Check here to configure the default column
+ loading: true,
+ visible: false,
+ confirmLoading: false,
+ recordEntity: []
+ }
+ },
+ computed: {
+ hasSelected () {
+ return this.selectedRowKeys.length > 0
+ }
+ },
+ methods: {
+ // 鍒濆鍖栨柟娉�
+ userRole (record) {
+ this.recordEntity = record
+ this.visible = true
+ // 鍔犺浇宸叉湁鏁版嵁
+ this.sysUserOwnRole()
+ // 鑾峰彇鍏ㄩ儴鍒楄〃,鏃犻渶鍒嗛〉
+ getRolePage({pageSize:9999}).then((res) => {
+ this.loadData = res.data.rows
+ })
+ },
+
+ /**
+ * 鑾峰彇鐢ㄦ埛宸叉湁瑙掕壊
+ */
+ sysUserOwnRole () {
+ this.loading = true
+ sysUserOwnRole({ id: this.recordEntity.id }).then((res) => {
+ // 閫変腑澶氶�夋
+ this.selectedRowKeys = res.data
+ this.loading = false
+ })
+ },
+
+ onSelectChange (selectedRowKeys) {
+ this.selectedRowKeys = selectedRowKeys
+ },
+
+ handleSubmit () {
+ // eslint-disable-next-line no-unused-expressions
+ this.confirmLoading = false
+ this.visible = false
+ sysUserGrantRole({ id: this.recordEntity.id, grantRoleIdList: this.selectedRowKeys }).then((res) => {
+ if (res.success) {
+ this.$message.success('鎺堟潈鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', this.recordEntity)
+ this.handleCancel()
+ } else {
+ this.$message.error('鎺堟潈澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ },
+ handleCancel () {
+ this.recordEntity = []
+ this.selectedRowKeys = []
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue
new file mode 100644
index 0000000..6f1bd80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/builderWorkFlow.vue
@@ -0,0 +1,443 @@
+<template>
+ <div>
+ <a-row :gutter="20">
+ <a-col :span="2" class="leftboard">
+ <a-card :bordered="false" style="height: 700px">
+ <a-radio-group size="small" >
+ <a-radio-button value="add" @click="zoomAdd" v-show="false">
+ <a-icon type="plus-circle" />
+ </a-radio-button>
+ <a-radio-button value="minus" style="margin-left:5px" @click="zoomSub" v-show="false">
+ <a-icon type="minus-circle" />
+ </a-radio-button>
+ </a-radio-group>
+ <a-divider />
+ <draggable
+ :list="boardlist"
+ :group="{ name: 'board', pull: 'clone', put: false }"
+ @change="log"
+ @end="onEnd"
+ :options="draggableOptions"
+ style="margin-top: 60px;">
+ <template v-for="(node, index) in nodesourcelist">
+ <div :id="node.key" style="margin-top:20px; margin-left:-5px" :key="index">
+ <a-button :type="node.type" class="itembutton">
+ {{ node.title }}
+ </a-button>
+ </div>
+ </template>
+ </draggable>
+ </a-card>
+ </a-col>
+ <a-col :span="16">
+ <a-card :bordered="true" style="height: 700px;overflow-x: auto;">
+ <div ref="efContainer" id="diagramContainer" class="nodeboard">
+ <template v-for="(node, index) in value">
+ <flow-nodeshow
+ :id="node.key"
+ :key="index"
+ :node="node"
+ :tabValue="tabValue"
+ @nodeclick="setnode(node)"
+ @changeNodeSite="changeNodeSite"
+ :currentNode="currentNode"></flow-nodeshow>
+ </template>
+ </div>
+ </a-card>
+ </a-col>
+ <a-col :span="6" class="rightboard">
+ <a-card :bordered="false" style="height: 700px">
+ <node-property
+ :nodelist="value"
+ :formlistsource="formlistsource"
+ ref="nodeproperty"
+ :currentNode="currentNode"
+ :conditionNode="conditionNode"
+ :isclickLine="isclickLine"
+ :activekey="tabValue"
+ :formId="formId"
+ @changeNextNode="changeNextNode"
+ @directionConnection="directionConnection"
+ @nextStepConnection="nextStepConnection"
+ @renameConnection="renameConnection"
+ @deleteConnection="deleteConnection"
+ @deleteNode="removeNode"
+ ></node-property>
+ </a-card>
+ </a-col>
+ </a-row>
+ </div>
+</template>
+
+<script>
+import NodeProperty from './store/nodeProperty.vue'
+import { createconditionFlowNodeDetail } from './store/conditionflownode'
+// import { createConditionsDetail } from './store/conditions'
+import { sourcenodes } from './store/sourcenodes'
+import FlowNodeshow from './store/flowNodeGroup'
+import { jsPlumb } from 'jsplumb'
+import draggable from 'vuedraggable'
+export default {
+ name: 'Home1',
+ components: {
+ NodeProperty,
+ draggable,
+ FlowNodeshow
+ },
+ props: {
+ // 鏄惁闇�瑕佸垵濮嬪寲鍔犺浇宸叉湁鐨刦low
+ localflow: {
+ type: Array,
+ default: null
+ },
+ propformId: {
+ type: Number,
+ default: null
+ }
+ },
+ data() {
+ return {
+ zoom: 1,
+ formId: this.propformId,
+ draggableOptions: {
+ preventOnFilter: false,
+ sort: false,
+ disabled: false,
+ ghostClass: 'tt',
+ // 涓嶄娇鐢℉5鍘熺敓鐨勯厤缃�
+ forceFallback: true
+ // 鎷栨嫿鐨勬椂鍊欐牱寮�
+ // fallbackClass: 'flow-node-draggable'
+ },
+ positionchange: { id: '', position: [] },
+ // 鏍峰紡
+ common: {
+ isSource: true, // 鎷栧姩绔偣鏃跺彲浠ヨ嚜鍔ㄥ垱寤鸿繛鎺�
+ isTarget: true,
+ labelStyle: { cssClass: 'flowLabel' },
+ Endpoint: ['Dot', { radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover' }],
+ connector: ['Flowchart'], // 杩炵嚎鐨勫舰鐘� Bezier: 璐濆灏旀洸绾� Flowchart: 鍏锋湁90搴﹁浆鎶樼偣鐨勬祦绋嬬嚎 StateMachine: 鐘舵�佹満 Straight: 鐩寸嚎
+ connectorStyle: { outlineStroke: '#3399FF', strokeWidth: 1 }, // 杩炴帴绾挎牱寮忥紙鎷栧姩鑷姩杩炴帴鏃剁敓鏁堬級
+ maxConnections: -1, // 闄愬埗杩炵嚎鐨勬暟閲忥紝-1涓轰笉闄愬埗
+ connectorHoverStyle: { strokeWidth: 3, outlineStroke: 'red' },
+ // Container: 'diagramContainer',
+ // overlays: [['Arrow', { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+ connectorOverlays: [
+ [
+ 'Arrow',
+ {
+ width: 10,
+ length: 10,
+ location: 0.8
+ }
+ ]
+ ],
+ paintStyle: {
+ fill: 'white',
+ outlineStroke: 'orange',
+ strokeWidth: 2
+ },
+ hoverPaintStyle: {
+ outlineStroke: 'lightblue'
+ }
+ },
+ formlistsource: [],
+ plumbIns: null,
+ // 灞炴�ч〉閫夋嫨椤�
+ tabValue: 'node',
+ // 鏄惁閫変腑浜嗚繛绾�
+ isclickLine: false,
+ // 褰撳墠閫変腑鐨勮繛绾�
+ currentConnection: null,
+ // 鑺傜偣灞炴��
+ currentNode: null,
+ // 杩炵嚎灞炴��
+ conditionNode: null,
+ nodesourcelist: [],
+ value: [],
+ testnode: null,
+ conditionflownode: {
+ label: '',
+ nodeId: '',
+ conditions: {
+ field: '',
+ operator: '',
+ value: ''
+ }
+ },
+ WorkflowDefinition: {
+ color: '#2d8cf0',
+ version: 1,
+ nodes: null
+ },
+ boardlist: []
+ }
+ },
+ created() {
+ this.nodesourcelist = sourcenodes
+ },
+ mounted() {
+ this.plumbIns = jsPlumb.getInstance(this.common)
+ this.plumbIns.importDefaults({
+ // 涓嶅厑璁告柇寮�杩炵嚎锛屽彧鑳介�氳繃鍒犻櫎杩炵嚎
+ ConnectionsDetachable: false
+ })
+ this.$nextTick(() => {
+ this.plumbIns.ready(() => {
+ this.plumbIns.bind('connection', this.onConnection)
+ this.plumbIns.bind('click', this.onClickConnection)
+ this.plumbIns.bind('connectionMoved', this.onMoved)
+ // this.plumbIns.setContainer(this.$refs.efContainer)
+ if (this.localflow) {
+ this.value = this.localflow
+ if (this.value.length > 0) {
+ this.initWorkflow()
+ }
+ }
+ })
+ })
+ },
+ computed: {},
+ methods: {
+ // 缂╂斁
+ zoomAdd () {
+ if (this.zoom >= 1) {
+ return
+ }
+ this.zoom = this.zoom + 0.1
+ this.$refs.efContainer.style.transform = `scale(${this.zoom})`
+ this.plumbIns.setZoom(this.zoom)
+ },
+ zoomSub () {
+ if (this.zoom <= 0) {
+ return
+ }
+ this.zoom = this.zoom - 0.1
+ this.$refs.efContainer.style.transform = `scale(${this.zoom})`
+ this.plumbIns.setZoom(this.zoom)
+ },
+ // 鍒犻櫎鑺傜偣
+ removeNode() {
+ this.value.forEach((node) => {
+ node.nextNodes = node.nextNodes.filter(
+ (u) => u.nodeId !== this.currentNode.key
+ )
+ node.parentNodes = node.parentNodes.filter(
+ (u) => u !== this.currentNode.key
+ )
+ })
+ this.plumbIns.remove(this.currentNode.key)
+ this.value.filter(i => i.key === this.currentNode.key)[0].enable = false
+ },
+ onMoved() {
+ },
+ // 鍒濆鍖栧姞杞藉凡鏈夌殑flow
+ initWorkflow() {
+ this.value.forEach(item => {
+ this.$nextTick(() => {
+ this.addNode(item)
+ })
+ setTimeout(() => {
+ item.nextNodes.forEach((nnode) => {
+ this.plumbIns.connect({
+ uuids: [nnode.source, nnode.target]
+ })
+ })
+ })
+ }, 10000)
+ },
+ // 鏀瑰彉鑺傜偣鐨勪綅缃�
+ changeNodeSite (data) {
+ this.value.filter(u => u.key === data.nodeId)[0].position = [data.left.substr(0, data.left.length - 2), data.top.substr(0, data.top.length - 2)]
+ },
+ // 璁惧畾杩炵嚎鏍囩
+ renameConnection(label) {
+ var conn = this.plumbIns.getConnections({
+ source: this.currentConnection.sourceId,
+ target: this.currentConnection.targetId
+ })[0]
+ if (this.currentConnection !== null) {
+ conn.setLabel(label)
+ }
+ },
+ changeNextNode(parntsNodeID) {
+
+ },
+ directionConnection(direction) {
+ this.currentNode.direction = direction
+ },
+ nextStepConnection(nextstep) {
+ this.currentNode.nextStep = nextstep
+ },
+ getNode(key) {
+ return this.value.filter(u => u.key === key)[0]
+ },
+ // 鍒犻櫎杩炵嚎
+ deleteConnection() {
+ const source = this.getNode(this.currentConnection.sourceId)
+ const target = this.getNode(this.currentConnection.targetId)
+ source.nextNodes = source.nextNodes.filter(u => u.nodeId !== this.currentConnection.targetId)
+ target.parentNodes = source.parentNodes.filter(u => u !== this.currentConnection.sourceId)
+ this.plumbIns.deleteConnection(this.currentConnection)
+ },
+ // 璁剧疆鑺傜偣
+ setnode(node) {
+ this.$refs.nodeproperty.gettempStepBodyName()
+ this.isclickLine = false
+ this.tabValue = 'node'
+ this.currentNode = node
+ if (this.currentNode.stepBody && this.currentNode.stepBody.name) {
+ }
+ },
+ // 鐐瑰嚮杩炵嚎浜嬩欢
+ onClickConnection(connection) {
+ var sourse = this.value.filter(u => u.key === connection.sourceId)[0]
+ this.conditionNode = sourse.nextNodes.filter(u => u.nodeId === connection.targetId)[0]
+ this.currentConnection = connection
+ this.isclickLine = true
+ this.tabValue = 'line'
+ },
+ // 杩炴帴浜嬩欢
+ onConnection(info) {
+ var sourse = this.value.filter(u => u.key === info.sourceId)[0]
+ var target = this.value.filter(u => u.key === info.targetId)[0]
+ if (target.parentNodes.filter(u => u === sourse.key).length <= 0) {
+ target.parentNodes.push(sourse.key)
+ }
+ var sourceuuid = sourse.endpointOptions.filter(u => u.anchor === info.sourceEndpoint.anchor.type)[0].uuid
+ var targetuuid = target.endpointOptions.filter(u => u.anchor === info.targetEndpoint.anchor.type)[0].uuid
+ if (sourse.nextNodes.filter(u => u.nodeId === target.key).length <= 0) {
+ const c = createconditionFlowNodeDetail(target.key, sourceuuid, targetuuid)
+ sourse.nextNodes.push(c)
+ }
+ },
+ createNodeByType(type, x, y, key) {
+ const node = JSON.parse(JSON.stringify(this.nodesourcelist.filter(u => u.key === type)[0]))
+ node.key =
+ key !== undefined
+ ? key
+ : node.key +
+ '_' +
+ Date.now() +
+ Math.random()
+ .toString(36)
+ .substr(2)
+ if (node.endpointOptions !== null) {
+ node.endpointOptions.forEach(option => {
+ option.uuid = node.key + option.anchor
+ })
+ }
+ node.position = [x, y]
+ return node
+ },
+ addNodeByType(type, x, y) {
+ if (type === 'start' && this.value.filter(i => i.key.slice(0, 5) === type && i.enable === true).length > 0) {
+ this.$message.info('涓�涓祦绋嬪彧鑳芥湁涓�涓紑濮嬭妭鐐�')
+ return
+ }
+ const node = this.createNodeByType(type, x, y)
+ this.value.push(node)
+ this.$nextTick(() => {
+ this.addNode(node)
+ })
+ },
+ // 閲嶇敾鑺傜偣
+ revalidate() {
+ this.$nextTick(() => {
+ this.plumbIns.revalidate(this.currentNode.key)
+ })
+ },
+ // 娣诲姞鑺傜偣
+ addNode(node) {
+ this.plumbIns.ready(() => {
+ if (node.endpointOptions !== null) {
+ node.endpointOptions.forEach(option => {
+ this.plumbIns.addEndpoint(node.key, option, this.common)
+ })
+ }
+ // 鍙嫋鎷� containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻愬ぇ瀹堕兘鍦ㄥ彂
+ this.plumbIns.draggable(node.key, { containment: 'diagramContainer',
+ stop: function (el) {
+ },
+ grid: [10, 10] })
+ })
+ },
+ log(evt) {},
+ onEnd(evt) {
+ var efContainer = this.$refs.efContainer
+ var containerRect = efContainer.getBoundingClientRect()
+ var left = evt.originalEvent.clientX - containerRect.x + efContainer.scrollLeft - 80
+ var top = evt.originalEvent.clientY - containerRect.y + efContainer.scrollTop - 30
+ if (left > 0 && top > 0) {
+ this.addNodeByType(evt.item.id, left, top)
+ }
+ },
+ returnnode() {
+ this.WorkflowDefinition.nodes = this.value.filter(i => i.enable === true)
+ },
+ show() {
+ }
+ }
+}
+</script>
+<style scoped>
+/* 杩炵嚎涓殑label 鏍峰紡*/
+.jtk-overlay.flowLabel:not(.aLabel) {
+ padding: 4px 10px;
+ background-color: rgb(15, 208, 241);
+ color: #242525 !important;
+ border: 1px solid #E0E3E7;
+ border-radius: 5px;
+}
+.jtk-overlay {
+ cursor: pointer;
+ color: #4A4A4A;
+}
+.nodeboard {
+ width: 3000px;
+ height: auto;
+ margin-top: 20px;
+ min-height: 600px;
+ /* 缃戞牸鏍峰紡 */
+ background:
+ linear-gradient(to right,rgb(245, 240, 240) 1px,transparent 1px),
+ linear-gradient(to bottom,rgb(245, 240, 240) 1px,transparent 1px);
+ background-repeat: repeat;/* 榛樿涓� repeat */
+ background-size: 20px 20px;
+}
+.leftboard {
+ height: 700px;
+ /* background-color: rgb(181, 225, 226); */
+}
+.rightboard {
+ height: 700px;
+ /* background-color: rgb(200, 233, 146); */
+}
+.ef-dot {
+ background-color: #d31020;
+ border-radius: 10px;
+}
+
+.ef-node-menu-li {
+ color: #565758;
+ width: 150px;
+ border: 1px dashed #E0E3E7;
+ margin: 5px 0 5px 0;
+ padding: 5px;
+ border-radius: 5px;
+ padding-left: 8px;
+}
+
+.itembutton:hover{
+ cursor: move;
+ border: 3px dashed #1879FF;
+}
+.ef-node-menu-li:hover {
+ /* 璁剧疆绉诲姩鏍峰紡*/
+ cursor: move;
+ background-color: #F0F7FF;
+ border: 1px dashed #1879FF;
+ border-left: 4px solid #1879FF;
+ padding-left: 5px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue
new file mode 100644
index 0000000..0957d36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/nomalWorkFlow.vue
@@ -0,0 +1,166 @@
+<template>
+ <div class="nomalstyle">
+ <a-form-model
+ ref="ruleForm"
+ :model="infodata"
+ :label-col="{ span: 5 }"
+ :wrapper-col="{ span: 12 }"
+ @submit="handleSubmit"
+ :rules="rules">
+ <a-form-model-item label="鏍囬" prop="title">
+ <a-input
+ placeholder="璇疯緭鍏ユ爣棰�"
+ v-model="infodata.title"
+ />
+ </a-form-model-item>
+ <a-form-model-item label="鍥炬爣">
+ <a-input placeholder="璇烽�夋嫨鍥炬爣" disabled="disabled" v-model="infodata.icon">
+ <a-icon slot="addonAfter" @click="openIconSele()" type="setting" />
+ </a-input>
+ </a-form-model-item>
+ <a-form-model-item label="缁戝畾琛ㄥ崟">
+ <a-select placeholder="璇烽�夋嫨琛ㄥ崟" v-model="infodata.formId">
+ <a-select-option v-for="formDesign in formDataSource" :value="formDesign.id" :key="formDesign.id">
+ {{ formDesign.name }}</a-select-option>
+ </a-select>
+ </a-form-model-item>
+ <a-form-model-item label="鍒嗙粍">
+ <a-select placeholder="璇烽�夋嫨鍒嗙粍" v-model="infodata.group">
+ <a-select-option v-for="(group, index) in groupDataSource" :value="group.code" :key="index">
+ {{ group.value }}</a-select-option>
+ </a-select>
+ </a-form-model-item>
+ <a-form-model-item label="鎻忚堪">
+ <a-textarea
+ v-model="infodata.description"
+ placeholder="璇峰~鍐欐祦绋嬫弿杩�"
+ :auto-size="{ minRows: 3, maxRows: 5 }"
+ />
+ </a-form-model-item>
+ </a-form-model>
+ <a-modal
+ :width="850"
+ :visible="visibleIcon"
+ @cancel="handleCancelIcon"
+ footer=""
+ :mask="false"
+ :closable="false"
+ :destroyOnClose="true">
+ <icon-selector v-model="currentSelectedIcon" @change="handleIconChange" />
+ </a-modal>
+ </div>
+</template>
+
+<script>
+import { sysDictTypeDropDown } from '@/api/modular/system/dictManage'
+import { getformList } from '@/api/modular/system/formDesignmanage'
+import IconSelector from '@/components/IconSelector'
+export default {
+ name: 'Nomalflow',
+ components: { IconSelector },
+ props: {
+ // 娲诲姩椤�
+ data: {
+ type: Object,
+ default: null
+ }
+ },
+ data() {
+ return {
+ rules: {
+ title: [{ required: true, message: '璇疯緭鍏ユ爣棰�', trigger: 'change' }]
+ },
+ // infodata: {
+ // icon: null,
+ // title: null,
+ // group: null,
+ // description: null
+ // },
+ infodata: this.data,
+ nomalinfo: null,
+ groupDataSource: [],
+ formDataSource: [],
+ formLayout: 'horizontal',
+ form: this.$form.createForm(this, { name: 'coordinated' }),
+ currentSelectedIcon: 'pause-circle',
+ visibleIcon: false
+ }
+ },
+ created() {
+ this.getSysDict()
+ this.getformList()
+ },
+ activated() {
+ },
+ mounted() {
+ },
+ methods: {
+ async datainit() {
+ await this.form.setFieldsValue({
+ icon: this.infodata.icon,
+ title: this.infodata.title,
+ group: this.infodata.group,
+ description: this.infodata.description
+ })
+ },
+ getnomalinfo() {
+ this.$refs.ruleForm.validate(valid => {
+ if (valid) {
+ this.$emit('getflownomalinfo', true, this.infodata)
+ } else {
+ this.$emit('getflownomalinfo', false, this.infodata)
+ return false
+ }
+ })
+ },
+ /**
+ * 鑾峰彇瀛楀吀鏁版嵁
+ */
+ getSysDict() {
+ sysDictTypeDropDown({
+ code: 'workflow_group'
+ }).then((res) => {
+ this.groupDataSource = res.data
+ })
+ },
+ getformList() {
+ getformList().then(res => {
+ res.data.forEach(element => {
+ var el = { id: element.id, name: element.title }
+ this.formDataSource.push(el)
+ })
+ })
+ },
+ handleIconChange(icon) {
+ this.infodata.icon = icon
+ this.visibleIcon = false
+ },
+ handleSubmit(e) {
+ e.preventDefault()
+ this.form.validateFields((err, values) => {
+ if (!err) {
+ }
+ })
+ },
+ handleSelectChange(value) {
+ this.form.setFieldsValue({
+ note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`
+ })
+ },
+ handleCancelIcon() {
+ this.visibleIcon = false
+ },
+ openIconSele() {
+ this.visibleIcon = true
+ }
+ }
+}
+</script>
+
+<style scoped>
+.nomalstyle{
+ margin-top: 100px;
+ margin-left: 10%;
+ text-align: center;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js
new file mode 100644
index 0000000..f4baaa0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/conditionflownode.js
@@ -0,0 +1,40 @@
+
+export class Condition {
+ index
+ costom
+ field
+ operator
+ value
+ type
+}
+export class ConditionFlowNode {
+ constructor({ label, nodeId, conditions, type, source, target }) {
+ this.label = label
+ this.nodeId = nodeId
+ this.type = type
+ this.source = source
+ this.target = target
+ this.conditions = conditions
+ }
+}
+export function createconditionFlowNode(Data) {
+ return new ConditionFlowNode({
+ label: Data.label,
+ nodeId: Data.nodeId,
+ conditions: Data.conditions,
+ type: Data.type,
+ source: Data.source,
+ target: Data.target
+ })
+}
+
+export function createconditionFlowNodeDetail(nodeid, source, target) {
+ return new ConditionFlowNode({
+ label: '',
+ nodeId: nodeid,
+ type: '鏉′欢',
+ source: source,
+ target: target,
+ conditions: []
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue
new file mode 100644
index 0000000..c8e9534
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowNodeGroup.vue
@@ -0,0 +1,168 @@
+<template>
+ <div
+ ref="node"
+ id="item_left"
+ :class="nodeContainerClass"
+ :style="nodeContainerStyle"
+ @click="sendclick"
+ @mouseup="changeNodeSite">
+ <!-- 鏈�宸︿晶鐨勯偅鏉$珫绾� -->
+ <div class="ef-node-left"></div>
+ <!-- 鑺傜偣绫诲瀷鐨勫浘鏍� -->
+ <div class="ef-node-left-ico">
+ <a-icon :type="node.icon" />
+ </div>
+ <!-- 鑺傜偣鍚嶇О -->
+ <div class="ef-node-text" :show-overflow-tooltip="true">
+ {{ node.title }}
+ </div>
+ <!-- <a-button :type="node.type" :icon="node.icon" style="position:absolute;top:30%;left:36%;margin:-10% 0 0 -30%;">
+ {{ node.title }}
+ </a-button> -->
+ </div>
+</template>
+
+<script>
+export default {
+ name: 'Flowlist',
+ components: {},
+ props: {
+ tabValue:
+ {
+ type: String,
+ default: ''
+ },
+ // 鑺傜偣灞炴��
+ currentNode: {
+ type: Object,
+ default: null
+ },
+ node: {
+ type: Object,
+ default: null
+ }
+ },
+ data() {
+ return {}
+ },
+ created() {
+ },
+ computed: {
+ nodeContainerClass() {
+ var choosestyle = 'ef-node-container'
+ if (this.currentNode && this.tabValue === 'node') {
+ if (this.currentNode.key === this.node.key) { choosestyle = 'ef-node-active' } else { choosestyle = 'ef-node-container' }
+ } else { choosestyle = 'ef-node-container' }
+ return choosestyle
+ },
+ // 鑺傜偣瀹瑰櫒鏍峰紡
+ nodeContainerStyle() {
+ return {
+ left: this.node.position[0] + 'px',
+ top: this.node.position[1] + 'px'
+ }
+ }
+ },
+ methods: {
+ sendclick() {
+ this.$emit('nodeclick')
+ },
+ // 榧犳爣绉诲姩鍚庢姮璧�
+ changeNodeSite() {
+ // 閬垮厤鎶栧姩
+ this.$emit('changeNodeSite', {
+ nodeId: this.node.key,
+ left: this.$refs.node.style.left,
+ top: this.$refs.node.style.top
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+/*鑺傜偣鏄剧ず鐨勬枃瀛�*/
+.ef-node-text {
+ color: #565758;
+ font-size: 12px;
+ line-height: 32px;
+ margin-top: -2px;
+ margin-left: 0px;
+ width: 70px;
+ /* 璁剧疆瓒呭嚭瀹藉害鏂囨湰鏄剧ず鏂瑰紡*/
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: center;
+}
+/*鑺傜偣宸︿晶鐨勫浘鏍�*/
+.ef-node-left-ico {
+ line-height: 32px;
+ margin-left: 8px;
+ margin-top: -2px;
+}
+
+/*鑺傜偣婵�娲绘牱寮�*/
+.ef-node-active {
+ cursor: move;
+ position: absolute;
+ display: flex;
+ width: 80px;
+ height: 32px;
+ border-radius: 5px;
+ background-color: rgb(240, 241, 131);
+ border: 1px solid blue;
+}
+.ef-node-container:hover {
+ /* 璁剧疆绉诲姩鏍峰紡*/
+ cursor: move;
+ background-color: #F0F7FF;
+ /*box-shadow: #1879FF 0px 0px 12px 0px;*/
+ background-color: #F0F7FF;
+ border: 1px dashed #1879FF;
+}
+/*鑺傜偣鐨勬渶澶栧眰瀹瑰櫒*/
+.ef-node-container {
+ position: absolute;
+ display: flex;
+ width: 80px;
+ height: 32px;
+ border: 2px solid #0c60ce;
+ border-radius: 5px;
+ background-color: #fff;
+}
+/*鑺傜偣宸︿晶鐨勭珫绾�*/
+.ef-node-left {
+ width: 4px;
+ background-color: #1879FF;
+ border-radius: 4px 0 0 4px;
+}
+.item {
+ position: absolute;
+ width: 100px;
+ height: 40px;
+ border: 3px solid rgb(9, 126, 221);
+ cursor: pointer;
+}
+.item:hover{
+ border: 5px solid rgb(22, 9, 99);
+}
+.ef-node-menu-li {
+ color: #565758;
+ width: 150px;
+ border: 1px dashed #E0E3E7;
+ margin: 5px 0 5px 0;
+ padding: 5px;
+ border-radius: 5px;
+ padding-left: 8px;
+}
+
+.ef-node-menu-li:hover {
+ /* 璁剧疆绉诲姩鏍峰紡*/
+ cursor: move;
+ background-color: #F0F7FF;
+ border: 1px dashed #1879FF;
+ border-left: 4px solid #1879FF;
+ padding-left: 5px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js
new file mode 100644
index 0000000..34a7bc2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flowentity.js
@@ -0,0 +1,24 @@
+export default class FlowEntity {
+ constructor({ title, version, description, icon, color, group, inputs, nodes }) {
+ this.title = title
+ this.version = version
+ this.description = description
+ this.icon = icon
+ this.color = color
+ this.group = group
+ this.inputs = inputs
+ this.nodes = nodes
+ }
+}
+export function createFlowFlowEntity(Data) {
+ return new FlowEntity({
+ title: Data.title,
+ version: Data.version,
+ description: Data.description,
+ icon: Data.icon,
+ color: Data.color,
+ group: Data.group,
+ inputs: Data.inputs,
+ nodes: Data.nodes
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js
new file mode 100644
index 0000000..9af4274
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/flownodes.js
@@ -0,0 +1,52 @@
+export default class FlowNode {
+ constructor({ key, title, icon, type, group, endpointOptions, stepBody, parentNodes, nextNodes, position, enable, nextStep, direction }) {
+ this.key = key
+ this.title = title
+ this.icon = icon
+ this.type = type
+ this.group = group
+ this.endpointOptions = endpointOptions
+ this.stepBody = stepBody
+ this.parentNodes = parentNodes
+ this.nextNodes = nextNodes
+ this.position = position
+ this.enable = enable
+ this.nextStep = nextStep
+ this.direction = direction
+ }
+}
+export function createFlowNode(Data) {
+ return new FlowNode({
+ key: Data.key,
+ title: Data.title,
+ icon: Data.icon,
+ type: Data.type,
+ group: Data.group,
+ endpointOptions: Data.endpointOptions,
+ stepBody: Data.stepBody,
+ parentNodes: Data.parentNodes,
+ nextNodes: Data.nextNodes,
+ position: Data.position,
+ enable: Data.enable,
+ nextStep: Data.nextStep,
+ direction: Data.direction
+ })
+}
+
+export function createFlowNodeDetail(key, title, icon, type, group, endpointOptions, stepBody, parentNodes, nextNodes, enable, nextStep) {
+ return new FlowNode({
+ key: key,
+ title: title,
+ icon: icon,
+ type: type,
+ group: group,
+ endpointOptions: endpointOptions,
+ stepBody: stepBody,
+ parentNodes: parentNodes,
+ nextNodes: nextNodes,
+ position: [20, 20],
+ enable: enable,
+ nextStep: nextStep,
+ direction: false
+ })
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue
new file mode 100644
index 0000000..bf8b1c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/nodeProperty.vue
@@ -0,0 +1,388 @@
+<template>
+ <div>
+ <a-tabs default-active-key="node" @change="callback" :activeKey="activekey">
+ <a-tab-pane key="line" tab="杩炵嚎" force-render :disabled="!isclickLine">
+ <a-form
+ ref="connectionForm"
+ label-position="top"
+ :model="nodecondition"
+ style="padding:5px;"
+ layout="vertical"
+ >
+ <a-form-item label="杩炵嚎鏍囬 :">
+ <a-input v-model="nodecondition.label" @change="revalidateConnection"></a-input>
+ </a-form-item>
+ <a-form-item label="杩炵嚎绫诲瀷 :">
+ <a-select v-model="nodecondition.type" >
+ <a-select-option value="鏉′欢">
+ 鏉′欢
+ </a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="鏉′欢 :" v-show="conditionsvisionable">
+ <a-row :gutter="5" v-for="item in nodecondition.conditions.filter(item=>(item.costom === false))" :key="item.index" class="itemmarginTop">
+ <a-col span="6">
+ <a-select v-model="item.field">
+ <a-select-option v-for="iitem in formmodellist" :value="iitem.key" :key="iitem.key" :dropdownMatchSelectWidth="false" dropdownStyle="downstyle">{{
+ iitem.label
+ }}</a-select-option>
+ </a-select>
+ </a-col>
+ <a-col span="4">
+ <a-select v-model="item.operator">
+ <a-select-option value=">">{{ '>' }}</a-select-option>
+ <a-select-option value=">=">{{ '≥' }}</a-select-option>
+ <a-select-option value="<">{{ '<' }}</a-select-option>
+ <a-select-option value="<=">{{ '≤' }}</a-select-option>
+ <a-select-option value="!=">{{ '!=' }}</a-select-option>
+ <a-select-option value="==">{{ '==' }}</a-select-option>
+ </a-select>
+ </a-col>
+ <a-col span="6">
+ <a-input v-model="item.value" :minlength="1"></a-input>
+ </a-col>
+ <a-col span="6">
+ <a-select v-model="item.type">
+ <a-select-option value="string">{{ 'string' }}</a-select-option>
+ <a-select-option value="bool">{{ 'bool' }}</a-select-option>
+ <a-select-option value="number">{{ 'number' }}</a-select-option>
+ </a-select>
+ </a-col>
+ <a-col span="2">
+ <a-button @click="removeCondition(item.index)" icon="delete"></a-button>
+ </a-col>
+ </a-row>
+ </a-form-item>
+ <a-form-item>
+ <a-row :gutter="5">
+ <a-col span="12">
+ <a-button type="dashed" long @click="addCondition" icon="plus" v-show="conditionsvisionable">娣诲姞鏉′欢</a-button>
+ </a-col>
+ </a-row>
+ <a-divider />
+ <a-row class="margin-top-10">
+ <a-col span="24">
+ <a-button type="primary" @click="removeConnection" icon="delete">鍒犻櫎杩炵嚎</a-button>
+ </a-col>
+ </a-row>
+ </a-form-item>
+ </a-form>
+ </a-tab-pane>
+ <a-tab-pane key="node" tab="鑺傜偣" :disabled="isclickLine" style="margin-left:-15px">
+ <a-form :form="flownode" :label-col="{ span: 8 }" :wrapper-col="{ span: 16 }" @submit="handleSubmitnode">
+ <a-form-item label="鏍囪瘑">
+ <a-input v-model="flownode.key" :disabled="true"></a-input>
+ </a-form-item>
+ <a-form-item label="鏍囬">
+ <a-input v-model="flownode.title" @change="revalidateNode" :disabled="!flownode.key"></a-input>
+ </a-form-item>
+ <a-form-item label="鎵ц鎿嶄綔">
+ <a-select v-model="flownode.stepBody.displayName" placeholder="" @change="onStepBodyChange" :disabled="!flownode.key">
+ <a-select-option v-for="(item, index) in StepBodys" :value="item.name" :key="index">{{
+ item.displayName
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item label="瀹℃牳瀵硅薄锛�">
+ <a-select v-model="flownode.stepBody.inputs.userId.value" v-if="flownode.stepBody.name == 'FixedUserAudit'" @change="onStepBodyUserIDChange">
+ <a-select-option v-for="(user, index) in userslist" :value="user.key" :key="index">{{
+ user.title
+ }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ <a-form-item :wrapper-col="{ span: 17, offset: 5 }">
+ <a-button type="primary" @click="removenode" :disabled="!flownode.key">
+ 鍒犻櫎鑺傜偣
+ </a-button>
+ </a-form-item>
+ </a-form>
+ </a-tab-pane>
+ </a-tabs>
+ </div>
+</template>
+<script>
+import { getUserList } from '@/api/modular/system/userManage'
+import { getAllStepBodyList } from '@/api/modular/system/workflowManage'
+import { formEntity } from '@/api/modular/system/formDesignmanage'
+export default {
+ components: {
+ },
+ props: {
+ // 鎵�鏈夎妭鐐�
+ nodelist: {
+ type: Array,
+ default: null
+ },
+ // form琛ㄥ崟涓殑鏉′欢value
+ formlistsource: {
+ type: Array,
+ default: null
+ },
+ // 娲诲姩椤�
+ activekey: {
+ type: String,
+ default: 'node'
+ },
+ // 鏄惁閫変腑浜嗚繛绾�
+ isclickLine: {
+ type: Boolean,
+ default: false
+ },
+ // 鑺傜偣灞炴��
+ currentNode: {
+ type: Object,
+ default: null
+ },
+ // 杩炵嚎灞炴��
+ conditionNode: {
+ type: Object,
+ default: null
+ },
+ // 琛ㄥ崟Id
+ formId: {
+ type: Number,
+ default: null
+ }
+ },
+ data() {
+ return {
+ // 鎵�鏈夋湁鐢ㄧ殑鑺傜偣
+ nodesListEnable: [],
+ conditionsvisionable: true,
+ formmodellist: [],
+ formmodecostomlist: [],
+ formlistdata: [],
+ formJson: {},
+ UserValue: '',
+ FormValue: null,
+ PositionValue: '',
+ // 閫夋嫨鎵ц绫诲瀷
+ tempName: '',
+ // 鐢ㄦ埛鍒楄〃
+ userslist: [],
+ // 琛ㄥ崟瀛楁寮曞叆
+ nodecondition: {
+ label: '',
+ type: '鏉′欢',
+ source: '',
+ target: '',
+ nodeId: '',
+ conditions: []
+ },
+ labelCol: {
+ xs: {
+ span: 13
+ },
+ sm: {
+ span: 13
+ }
+ },
+ wrapperCol: {
+ xs: {
+ span: 10
+ },
+ sm: {
+ span: 7
+ }
+ },
+ labelCol1: {
+ xs: {
+ span: 10
+ },
+ sm: {
+ span: 8
+ }
+ },
+ wrapperCol1: {
+ xs: {
+ span: 10
+ },
+ sm: {
+ span: 4
+ }
+ },
+ flownode: {
+ key: '',
+ title: '',
+ icon: '',
+ type: '',
+ group: '',
+ endpointOptions: null,
+ stepBody: null,
+ parentNodes: null,
+ nextNodes: null,
+ position: null,
+ nextStep: null,
+ direction: false
+ // backAnyStep: null
+ },
+ StepBodys: [],
+ initStepBody: {
+ displayName: '',
+ inputs: {
+ userId: {
+ displayName: '',
+ name: '',
+ value: null
+ }
+ },
+ name: '',
+ stepBodyType:
+ ''
+ }
+ }
+ },
+ async created() {
+ // 鍒濆鍖�
+ this.flownode.stepBody = this.initStepBody
+ // 鏌ユ壘鎵�鏈夋楠�
+ await getAllStepBodyList().then(res => {
+ if (res.success) {
+ res.data.forEach(item => {
+ this.StepBodys.push(item)
+ })
+ }
+ })
+ if (this.formId != null) {
+ formEntity(Object.assign({ id: this.formId })).then(res => {
+ this.formmodellist = res.data.nodesList.list
+ })
+ } else {
+ this.$message.warning('娴佺▼鏈粦瀹氳〃鍗曪紝鏃犳硶娣诲姞鏉′欢锛�')
+ }
+ // 鏌ユ壘鐢ㄦ埛鍒楄〃
+ getUserList().then(res => {
+ if (res.success) {
+ const mockData = []
+ res.data.forEach(item => {
+ const data = {
+ key: item.id.toString(),
+ title: item.name
+ }
+ mockData.push(data)
+ })
+ this.userslist = mockData
+ }
+ })
+ },
+ watch: {
+ nodelist: 'getnodelist',
+ formlistsource: 'getformlistsource',
+ activekey: 'getactivekey',
+ currentNode: 'getcurrentNode',
+ conditionNode: 'getconditionNode'
+ },
+ methods: {
+ removenode() {
+ this.$emit('deleteNode')
+ },
+ handleChange(e) {
+ this.flownode.form = e
+ },
+ onStepBodyProcedureIDChange(e) {
+ this.flownode.stepBody.inputs.workProcedureId.value = e
+ },
+ onStepBodyUserIDChange(e) {
+ this.flownode.stepBody.inputs.userId.value = e
+ },
+ onStepBodyChange(value) {
+ this.flownode.stepBody = JSON.parse(JSON.stringify(this.StepBodys.filter(u => u.name === value)[0]))
+ },
+ gettempStepBodyName() {
+ this.tempName = ''
+ },
+ // 鍒犻櫎鏉′欢
+ removeCondition(index) {
+ this.conditionNode.conditions = this.conditionNode.conditions.filter(item => (item.index !== index))
+ },
+ handleSubmitnode() {},
+ getactivekey(curVal, oldVal) {
+ this.activekeynow = curVal
+ },
+ getnodelist(curVal, oldVal) {
+ this.nodesListEnable = curVal.filter(i => i.enable === true)
+ },
+ // getformlistsource(curVal, oldVal) {
+ // this.formmodellist = curVal
+ // },
+ getcurrentNode(curVal, oldVal) {
+ this.flownode = curVal
+ if (!this.flownode.stepBody || this.flownode.stepBody.stepBodyType === '') {
+ this.initStepBody.displayName = ''
+ this.flownode.stepBody = this.initStepBody
+ }
+ },
+ getconditionNode(curVal, oldVal) {
+ this.nodecondition = curVal
+ },
+ revalidateConnection(e) {
+ this.$emit('renameConnection', this.conditionNode.label)
+ },
+ nodenextstep() {
+ this.$emit('nextStepConnection', this.flownode.nextStep)
+ },
+ onChange() {
+ this.$emit('directionConnection', this.flownode.direction)
+ },
+ nodeBackAuto() {
+ if (this.flownode.backAutoStep) {
+ this.$emit('changeNextNode', null)
+ } else { this.$emit('changeNextNode', null) }
+ this.$emit('backAutoStep', this.flownode.backAutoStep)
+ },
+ revalidateNode(e) {
+ // this.$emit('renameNode', this.flownode.title)
+ },
+ savecondition() {
+ },
+ // 鍒犻櫎
+ removeConnection() {
+ this.$emit('deleteConnection')
+ },
+ // 娣诲姞鏉′欢
+ addCondition() {
+ var conditions = {
+ index: this.conditionNode.conditions.length + 1,
+ costom: false,
+ field: '',
+ operator: '',
+ value: '',
+ type: ''
+ }
+ this.conditionNode.conditions.push(conditions)
+ },
+ handleSelectChange(value) {
+ this.form.setFieldsValue({
+ note: `Hi, ${value === 'male' ? 'man' : 'lady'}!`
+ })
+ },
+ callback(key) {
+ }
+ }
+}
+</script>
+<style scoped>
+.downstyle {
+ width: 200px;
+ background-color: blue;
+}
+.itemmarginTop{
+ margin-top: 10px;
+}
+.itemmarginTopcostom{
+ margin-top: 10px;
+}
+.iteminline{
+ display: inline-block;
+ width: 200px;
+}
+.iteminline1{
+ display: inline-block;
+ width: 140px;
+}
+.mark{
+ width: 5px;
+ height: 100%;
+ background-color: red;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md
new file mode 100644
index 0000000..434c144
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/readme.md
@@ -0,0 +1,300 @@
+jsPlumb.ready(() => {
+ var common = {
+ isSource: true, // 鎷栧姩绔偣鏃跺彲浠ヨ嚜鍔ㄥ垱寤鸿繛鎺�
+ isTarget: true,
+ endpoint: 'Dot', // 閿氱偣褰㈢姸 dot鍦嗗舰 Rectangle 鏂瑰舰
+ connector: ['Flowchart'], // 杩炵嚎鐨勫舰鐘� Bezier: 璐濆灏旀洸绾� Flowchart: 鍏锋湁90搴﹁浆鎶樼偣鐨勬祦绋嬬嚎 StateMachine: 鐘舵�佹満 Straight: 鐩寸嚎
+ // anchor: ['Left', 'Right'] //閿氱偣鐨勪綅缃�
+ connectorStyle: { outlineStroke: 'green', strokeWidth: 1 }, // 杩炴帴绾挎牱寮忥紙鎷栧姩鑷姩杩炴帴鏃剁敓鏁堬級
+ maxConnections: -1, // 闄愬埗杩炵嚎鐨勬暟閲忥紝-1涓轰笉闄愬埗
+ overlays: [['Arrow', { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+ }
+
+ jsPlumb.connect(
+ {
+ // source: "item_left", //杩炴帴婧愬ご
+ // target: "item_right", //杩炴帴鍘诲悜
+ // paintStyle: { stroke: 'red', strokeWidth: 3 }, // 杩炴帴绾跨殑鏍峰紡 锛堣缃簮澶村拰鍘诲悜鏃剁敓鏁堬級
+ // endpointStyle: { fill: 'red', outlineStroke: 'black', outlineWidth: 2 }, // 閿氱偣鐨勬牱寮� fill濉厖 outlineStroke杈规锛堣缃簮澶村拰鍘诲悜鏃剁敓鏁堬級
+ // overlays: [["Arrow", { width: 12, length: 12, location: 0.5 }]] // 闀垮 浣嶇疆
+ /*
+ Arrow 涓�涓彲閰嶇疆鐨勭澶�
+ Label 鏍囩锛屽彲浠ュ湪閾炬帴涓婃樉绀烘枃瀛椾俊鎭�
+ PlainArrow 鍘熷绫诲瀷鐨勭澶�
+ Diamond 鑿卞舰绠ご
+ Custom 鑷畾涔夌被鍨�
+ */
+ /*
+ 榛樿鍙傛暟鐨勭畝浠�:
+ Anchor 閿氱偣锛屽嵆绔偣閾炬帴鐨勪綅缃�
+ Anchors 澶氫釜閿氱偣 [婧愰敋鐐癸紝鐩爣閿氱偣].
+ Connector 閾炬帴
+ ConnectionsDetachable 鑺傜偣鏄惁鍙互鐢ㄩ紶鏍囨嫋鍔ㄤ娇鍏舵柇寮�锛岄粯璁や负true銆傚嵆鐢ㄩ紶鏍囬摼鎺ヤ笂鐨勮繛绾匡紝涔熷彲浠ヤ娇鐢ㄩ紶鏍囨嫋鍔ㄨ鍏舵柇寮�銆傝缃垚false锛屽彲浠ヨ鍏舵嫋鍔ㄤ篃涓嶄細鑷姩鏂紑銆�
+ Container 杩炵嚎鐨勫鍣�
+ DoNotThrowErrors 鏄惁鎶涘嚭閿欒
+ ConnectionOverlays 閾炬帴閬僵灞�
+ DragOptions 鎷栧姩璁剧疆
+ DropOptions 鎷栨斁璁剧疆
+ Endpoint 绔偣
+ Endpoints 鏁扮粍褰㈠紡鐨勶紝[婧愮鐐癸紝鐩爣绔偣]
+ EndpointOverlays 绔偣閬僵灞�
+ EndpointStyle 绔偣鏍峰紡
+ EndpointStyles [婧愮鐐规牱寮忥紝鐩爣绔偣鏍峰紡]
+ EndpointHoverStyle 绔偣榧犳爣缁忚繃鐨勬牱寮�
+ EndpointHoverStyles [婧愮鐐归紶鏍囩粡杩囨牱寮忥紝鐩爣绔偣榧犳爣缁忚繃鏍峰紡]
+ HoverPaintStyle 榧犳爣缁忚繃閾炬帴绾挎椂鐨勬牱寮�
+ LabelStyle 鏍囩鏍峰紡
+ LogEnabled 鏄惁鍚敤鏃ュ織
+ Overlays 杩炴帴绾垮拰绔偣鐨勯伄缃╁眰鏍峰紡
+ MaxConnections 绔偣鏈�澶ц繛鎺ョ嚎鏁伴噺榛樿涓�1锛� 璁剧疆鎴�-1鍙互琛ㄧず鏃犳暟涓摼鎺�
+ PaintStyle 杩炵嚎鏍峰紡
+ ReattachConnections 绔偣鏄惁鍙互鍐嶆閲嶆柊閾炬帴
+ RenderMode 娓叉煋妯″紡锛岄粯璁ゆ槸svg
+ Scope 浣滅敤鍩燂紝鐢ㄦ潵鍖哄垎鍝簺绔偣鍙互閾炬帴锛屼綔鐢ㄥ煙鐩稿悓鐨勫彲浠ラ摼鎺� */
+ },
+ common
+ )
+ // 鏂板涓�涓鐐�
+ jsPlumb.addEndpoint(
+ 'start',
+ {
+ anchors: 'Right',
+ uuid: 'fromId'
+ },
+ common
+ )
+ jsPlumb.addEndpoint(
+ 'task',
+ {
+ anchor: 'Left',
+ uuid: 'toId'
+ },
+ common
+ )
+ jsPlumb.addEndpoint(
+ 'end',
+ {
+ anchor: 'Left',
+ uuid: 'toId'
+ },
+ common
+ )
+
+ // 鍙嫋鎷� containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻�
+ jsPlumb.draggable('start', { containment: 'diagramContainer', grid: [10, 10] })
+ jsPlumb.draggable('task', { containment: 'diagramContainer', grid: [10, 10] })
+ jsPlumb.draggable('end', { containment: 'diagramContainer', grid: [10, 10] })
+ // jsPlumb.addEndpoint(
+ // 'test',
+ // {
+ // anchors: 'Right',
+ // uuid: 'testddd'
+ // },
+ // common
+ // )
+ // jsPlumb.draggable('test', { containment: 'efContainer', grid: [10, 10] })
+ // this.nodeList.forEach(item => {
+ // console.log(item)
+ // var timestamp = new Date().getTime()
+ // jsPlumb.addEndpoint(
+ // item.id,
+ // {
+ // anchors: 'Right',
+ // uuid: timestamp
+ // },
+ // common
+ // )
+ // jsPlumb.draggable(item.id, { containment: 'efContainer', grid: [10, 10] })
+ // })
+ // 鍙嫋鎷� containment闄愬埗鎷栨嫿鍖哄煙 grid鎷栨嫿鏃剁綉鏍煎榻�
+ // jsPlumb.draggable('item_left', { containment: 'efContainer', grid: [10, 10] })
+ // jsPlumb.draggable('item_right', { containment: 'diagramContainer', grid: [10, 10] })
+ // jsPlumb.draggable('item_right1', { containment: 'diagramContainer', grid: [10, 10] })
+
+ // 缁欒繛鎺ユ坊鍔犵偣鍑讳簨浠�
+ jsPlumb.bind('click', function(conn, originalEvent) {
+ if (window.prompt('纭畾鍒犻櫎鎵�鐐瑰嚮鐨勯摼鎺ュ悧锛� 杈撳叆1纭畾') === '1') {
+ jsPlumb.detach(conn) // 鍒犻櫎杩炴帴
+ // 鍒犻櫎鑺傜偣鍖呮嫭鐩稿叧鐨勮繛鎺�
+ // jsPlumb.remove('item_left')
+ // 閫氳繃缂栫爜杩炴帴,闇�瑕佸湪addEndpoint鏃讹紝灏辩粰璇ユ柇鐐瑰姞涓婁竴涓猽uid, 鐒跺悗閫氳繃connect()鏂规硶锛屽皢涓や釜鏂偣閾炬帴涓�,寤鸿缁欐瘡涓柇鐐归兘鍔犱笂鍞竴鐨剈uid
+ // jsPlumb.connect({ uuids: ['fromId', 'toId'] })
+
+ /**
+ * jsPlumb Events鍒楄〃
+ connection
+ connectionDetached
+ connectionMoved
+ click
+ dblclick
+ endpointClick
+ endpointDblClick
+ contextmenu
+ beforeDrop 杩炴帴鍓嶇殑妫�鏌ワ紝鍙互鐢ㄦ潵鍒ゆ柇鏄惁寤虹珛杩炴帴
+ beforeDetach
+ zoom
+ Connection Events
+ Endpoint Events
+ Overlay Events
+ Unbinding Events
+ */
+ }
+ })
+})
+export const easyFlowMixin = {
+ data() {
+ return {
+ jsplumbSetting: {
+ // 鍔ㄦ�侀敋鐐广�佷綅缃嚜閫傚簲
+ Anchors: ['Top', 'TopCenter', 'TopRight', 'TopLeft', 'Right', 'RightMiddle', 'Bottom', 'BottomCenter', 'BottomRight', 'BottomLeft', 'Left', 'LeftMiddle'],
+ // 瀹瑰櫒ID
+ Container: 'efContainer',
+ // 杩炵嚎鐨勬牱寮忥紝鐩寸嚎鎴栬�呮洸绾跨瓑锛屽彲閫夊��: StateMachine銆丗lowchart锛孊ezier銆丼traight
+ Connector: ['Bezier', {curviness: 100}],
+ // Connector: ['Straight', {stub: 20, gap: 1}],
+ // Connector: ['Flowchart', {stub: 30, gap: 1, alwaysRespectStubs: false, midpoint: 0.5, cornerRadius: 10}],
+ // Connector: ['StateMachine', {margin: 5, curviness: 10, proximityLimit: 80}],
+ // 榧犳爣涓嶈兘鎷栧姩鍒犻櫎绾�
+ ConnectionsDetachable: false,
+ // 鍒犻櫎绾跨殑鏃跺�欒妭鐐逛笉鍒犻櫎
+ DeleteEndpointsOnDetach: false,
+ /**
+ * 杩炵嚎鐨勪袱绔鐐圭被鍨嬶細鍦嗗舰
+ * radius: 鍦嗙殑鍗婂緞锛岃秺澶у渾瓒婂ぇ
+ */
+ // Endpoint: ['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}],
+ /**
+ * 杩炵嚎鐨勪袱绔鐐圭被鍨嬶細鐭╁舰
+ * height: 鐭╁舰鐨勯珮
+ * width: 鐭╁舰鐨勫
+ */
+ // Endpoint: ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}],
+ /**
+ * 鍥惧儚绔偣
+ */
+ // Endpoint: ['Image', {src: 'https://www.easyicon.net/api/resizeApi.php?id=1181776&size=32', cssClass: 'ef-img', hoverClass: 'ef-img-hover'}],
+ /**
+ * 绌虹櫧绔偣
+ */
+ Endpoint: ['Blank', {Overlays: ''}],
+ // Endpoints: [['Dot', {radius: 5, cssClass: 'ef-dot', hoverClass: 'ef-dot-hover'}], ['Rectangle', {height: 20, width: 20, cssClass: 'ef-rectangle', hoverClass: 'ef-rectangle-hover'}]],
+ /**
+ * 杩炵嚎鐨勪袱绔鐐规牱寮�
+ * fill: 棰滆壊鍊硷紝濡傦細#12aabb锛屼负绌轰笉鏄剧ず
+ * outlineWidth: 澶栬竟绾垮搴�
+ */
+ EndpointStyle: {fill: '#1879ffa1', outlineWidth: 1},
+ // 鏄惁鎵撳紑jsPlumb鐨勫唴閮ㄦ棩蹇楄褰�
+ LogEnabled: true,
+ /**
+ * 杩炵嚎鐨勬牱寮�
+ */
+ PaintStyle: {
+ // 绾跨殑棰滆壊
+ stroke: '#E0E3E7',
+ // 绾跨殑绮楃粏锛屽�艰秺澶х嚎瓒婄矖
+ strokeWidth: 1,
+ // 璁剧疆澶栬竟绾跨殑棰滆壊锛岄粯璁よ缃�忔槑锛岃繖鏍峰埆浜哄氨鐪嬩笉瑙佷簡锛岀偣鍑荤嚎鐨勬椂鍊欏彲浠ヤ笉鐢ㄧ簿纭偣鍑伙紝鍙傝�� https://blog.csdn.net/roymno2/article/details/72717101
+ outlineStroke: 'transparent',
+ // 绾垮杈圭殑瀹斤紝鍊艰秺澶э紝绾跨殑鐐瑰嚮鑼冨洿瓒婂ぇ
+ outlineWidth: 10
+ },
+ DragOptions: {cursor: 'pointer', zIndex: 2000},
+ /**
+ * 鍙犲姞 鍙傝�冿細 https://www.jianshu.com/p/d9e9918fd928
+ */
+ Overlays: [
+ // 绠ご鍙犲姞
+ ['Arrow', {
+ width: 10, // 绠ご灏鹃儴鐨勫搴�
+ length: 8, // 浠庣澶寸殑灏鹃儴鍒板ご閮ㄧ殑璺濈
+ location: 1, // 浣嶇疆锛屽缓璁娇鐢�0锝�1涔嬮棿
+ direction: 1, // 鏂瑰悜锛岄粯璁ゅ�间负1锛堣〃绀哄悜鍓嶏級锛屽彲閫�-1锛堣〃绀哄悜鍚庯級
+ foldback: 0.623 // 鎶樺洖锛屼篃灏辨槸灏剧考鐨勮搴︼紝榛樿0.623锛屽綋涓�1鏃讹紝涓烘涓夎
+ }],
+ // ['Diamond', {
+ // events: {
+ // dblclick: function (diamondOverlay, originalEvent) {
+ // console.log('double click on diamond overlay for : ' + diamondOverlay.component)
+ // }
+ // }
+ // }],
+ ['Label', {
+ label: '',
+ location: 0.1,
+ cssClass: 'aLabel'
+ }]
+ ],
+ // 缁樺埗鍥剧殑妯″紡 svg銆乧anvas
+ RenderMode: 'svg',
+ // 榧犳爣婊戣繃绾跨殑鏍峰紡
+ HoverPaintStyle: {stroke: '#b0b2b5', strokeWidth: 1},
+ // 婊戣繃閿氱偣鏁堟灉
+ // EndpointHoverStyle: {fill: 'red'}
+ Scope: 'jsPlumb_DefaultScope' // 鑼冨洿锛屽叿鏈夌浉鍚宻cope鐨勭偣鎵嶅彲杩炴帴
+ },
+ /**
+ * 杩炵嚎鍙傛暟
+ */
+ jsplumbConnectOptions: {
+ isSource: true,
+ isTarget: true,
+ // 鍔ㄦ�侀敋鐐广�佹彁渚涗簡4涓柟鍚� Continuous銆丄utoDefault
+ anchor: 'Continuous',
+ // 璁剧疆杩炵嚎涓婇潰鐨刲abel鏍峰紡
+ labelStyle: {
+ cssClass: 'flowLabel'
+ },
+ // 淇敼浜唈splumb 婧愮爜锛屾敮鎸乴abel 涓虹┖浼犲叆鑷畾涔塻tyle
+ emptyLabelStyle: {
+ cssClass: 'emptyFlowLabel'
+ }
+ },
+ /**
+ * 婧愮偣閰嶇疆鍙傛暟
+ */
+ jsplumbSourceOptions: {
+ // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ anchor: 'Continuous',
+ // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+ allowLoopback: true,
+ maxConnections: -1,
+ onMaxConnections: function (info, e) {
+ console.log(`瓒呰繃浜嗘渶澶у�艰繛绾�: ${info.maxConnections}`)
+ }
+ },
+ // 鍙傝�� https://www.cnblogs.com/mq0036/p/7942139.html
+ jsplumbSourceOptions2: {
+ // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ // anchor: 'Continuous',
+ // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+ allowLoopback: true,
+ connector: ['Flowchart', {curviness: 50}],
+ connectorStyle: {
+ // 绾跨殑棰滆壊
+ stroke: 'red',
+ // 绾跨殑绮楃粏锛屽�艰秺澶х嚎瓒婄矖
+ strokeWidth: 1,
+ // 璁剧疆澶栬竟绾跨殑棰滆壊锛岄粯璁よ缃�忔槑锛岃繖鏍峰埆浜哄氨鐪嬩笉瑙佷簡锛岀偣鍑荤嚎鐨勬椂鍊欏彲浠ヤ笉鐢ㄧ簿纭偣鍑伙紝鍙傝�� https://blog.csdn.net/roymno2/article/details/72717101
+ outlineStroke: 'transparent',
+ // 绾垮杈圭殑瀹斤紝鍊艰秺澶э紝绾跨殑鐐瑰嚮鑼冨洿瓒婂ぇ
+ outlineWidth: 10
+ },
+ connectorHoverStyle: {stroke: 'red', strokeWidth: 2}
+ },
+ jsplumbTargetOptions: {
+ // 璁剧疆鍙互鎷栨嫿鐨勭被鍚嶏紝鍙榧犳爣绉诲姩鍒拌绫诲悕涓婄殑DOM锛屽氨鍙互鎷栨嫿杩炵嚎
+ filter: '.flow-node-drag',
+ filterExclude: false,
+ // 鏄惁鍏佽鑷繁杩炴帴鑷繁
+ anchor: 'Continuous',
+ allowLoopback: true,
+ dropOptions: {hoverClass: 'ef-drop-hover'}
+ }
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js
new file mode 100644
index 0000000..e2b4ba5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/components/store/sourcenodes.js
@@ -0,0 +1,55 @@
+import { createFlowNodeDetail } from '@/views/system/workflow/components/store/flownodes'
+const sourcenodes = []
+sourcenodes.push(
+ createFlowNodeDetail(
+ 'start', '寮�濮�', 'thunderbolt', 'primary', '1', [
+ {
+ anchor: 'Right',
+ maxConnections: -1
+ }
+ ], null, [], [], true, null
+ )
+)
+sourcenodes.push(
+ createFlowNodeDetail(
+ 'step', '浠诲姟', '', 'primary', '2', [
+ {
+ anchor: 'Right',
+ maxConnections: -1
+ },
+ {
+ anchor: 'Left',
+ maxConnections: -1
+ }
+ ], null, [], [], true, null
+ )
+)
+// sourcenodes.push(
+// createFlowNodeDetail(
+// 'sourcecondition', '鏉′欢', 'question-circle', 'primary', '2', [
+// {
+// anchor: 'Top',
+// maxConnections: -1
+// },
+// {
+// anchor: 'Left',
+// maxConnections: -1
+// },
+// {
+// anchor: 'Right',
+// maxConnections: -1
+// }
+// ], null, [], []
+// )
+// )
+sourcenodes.push(
+ createFlowNodeDetail(
+ 'end', '缁撴潫', 'check-circle', 'primary', '1', [
+ {
+ anchor: 'Left',
+ maxConnections: -1
+ }
+ ], null, [], [], true, null
+ )
+)
+export { sourcenodes }
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue
new file mode 100644
index 0000000..433a619
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/create.vue
@@ -0,0 +1,157 @@
+<template>
+ <div id="creatflow">
+ <!-- <a-steps :current="currentStepIndex" size="small">
+ <a-step v-for="item in steps" :key="item.title" :title="item.title">
+ <a-icon slot="icon" :type="item.icon"/></a-step>
+ </a-steps> -->
+ <div class="steps-content">
+ <a-card>
+ <div v-if="steps[currentStepIndex].content === 'First-content'" >
+ <nomal ref="nomalinfo" @getflownomalinfo="getnomal" :data="flowinfodata"></nomal>
+ </div>
+ </a-card>
+ <div v-if="steps[currentStepIndex].content === 'Last-content'">
+ <builder ref="build" :localflow="localflow" :propformId="flowinfodata.formId"></builder>
+ </div>
+ </div>
+ <div>
+ <div class="steps-next">
+ <a-button icon="caret-down" v-if="currentStepIndex < steps.length - 1" type="primary" @click="next" >
+ 涓嬩竴姝�
+ </a-button>
+ </div>
+ <div class="steps-send">
+ <a-button icon="caret-up" v-if="currentStepIndex > 0" type="primary" style="margin-left: 8px" @click="prev">
+ 涓婁竴姝�
+ </a-button>
+ <a-button
+ style="margin-left: 8px"
+ icon="check"
+ v-if="currentStepIndex == steps.length - 1 && hasPerm('workFlow:save')"
+ type="primary"
+ @click="saveworkflow"
+ >
+ 鎻愪氦
+ </a-button>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import { addWorkflowDefinition } from '@/api/modular/system/workflowManage'
+import nomal from './components/nomalWorkFlow.vue'
+import builder from './components/builderWorkFlow.vue'
+export default {
+ name: 'Creatflow',
+ components: {
+ nomal,
+ builder
+ },
+ data() {
+ return {
+ localflow: null,
+ workflow: {
+ title: '',
+ version: '',
+ description: '',
+ icon: '',
+ color: '',
+ group: '',
+ inputs: null,
+ nodes: null,
+ formId: ''
+ },
+ // 鍩烘湰淇℃伅鏄惁杈惧埌鎻愪氦鏉′欢
+ savecondition: false,
+ flowinfodata: {
+ icon: null,
+ title: null,
+ group: null,
+ description: null,
+ formId: null
+ },
+ currentStepIndex: 0,
+ steps: [
+ {
+ title: '鍩烘湰淇℃伅',
+ content: 'First-content',
+ icon: 'credit-card'
+ },
+ {
+ title: '娴佺▼璁捐',
+ content: 'Last-content',
+ icon: 'apartment'
+ }
+ ]
+ }
+ },
+ methods: {
+ getnomal(success, values) {
+ this.flowinfodata = values
+ if (success) {
+ this.savecondition = true
+ } else {
+ this.savecondition = false
+ }
+ },
+ async next() {
+ if (this.currentStepIndex === 0) {
+ await this.$refs.nomalinfo.getnomalinfo()
+ }
+ if (this.workflow.nodes) { this.localflow = JSON.parse(this.workflow.nodes) } else { this.localflow = null }
+ this.currentStepIndex++
+ },
+ prev() {
+ this.packageflow()
+ this.currentStepIndex--
+ },
+ packageflow() {
+ // 寰楀埌node
+ this.$refs.build.returnnode()
+ this.workflow.title = this.flowinfodata.title
+ this.workflow.version = this.$refs.build.WorkflowDefinition.version
+ this.workflow.description = this.flowinfodata.description
+ this.workflow.icon = this.flowinfodata.icon
+ this.workflow.color = this.$refs.build.WorkflowDefinition.color
+ this.workflow.group = this.flowinfodata.group
+ this.workflow.inputs = null
+ this.workflow.nodes = JSON.stringify(this.$refs.build.WorkflowDefinition.nodes)
+ this.workflow.formId = this.flowinfodata.formId
+ },
+ saveworkflow() {
+ if (this.savecondition) {
+ this.packageflow()
+
+ addWorkflowDefinition(Object.assign(this.workflow)).then(res => {
+ if (res.success) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ } else {
+ this.$message.error('鎻愪氦澶辫触' + res.message)
+ }
+ })
+ } else {
+ this.$message.warning('璇峰畬鍠勬祦绋嬪熀鏈俊鎭�')
+ }
+ }
+ }
+}
+</script>
+<style scoped>
+.steps-content {
+ margin-top: 16px;
+ border-radius: 6px;
+ min-height: 200px;
+ text-align: center;
+ padding-top: 15px;
+}
+.steps-next {
+ text-align:center;
+ margin-top: 24px;
+ margin-right: 24px;
+}
+.steps-send {
+ text-align:right;
+ margin-top: 24px;
+ margin-right: 400px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue
new file mode 100644
index 0000000..2f29836
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/edit.vue
@@ -0,0 +1,182 @@
+<template>
+ <div>
+ <div class="steps-content">
+ <div v-if="steps[currentStepIndex].content === 'First-content'">
+ <nomal ref="nomalinfo" @getflownomalinfo="getnomal" :data="flowinfodata"></nomal>
+ </div>
+ <div v-if="steps[currentStepIndex].content === 'Last-content'">
+ <builder ref="build" :localflow="localflow" :propformId="flowinfodata.formId"></builder>
+ </div>
+ </div>
+ <div class="steps-action">
+ <div class="steps-next">
+ <a-button icon="caret-down" v-if="currentStepIndex < steps.length - 1" type="primary" @click="next">
+ 涓嬩竴姝�
+ </a-button>
+ </div>
+ <div class="steps-send">
+ <a-button icon="caret-up" v-if="currentStepIndex > 0" type="primary" @click="prev">
+ 涓婁竴姝�
+ </a-button>
+ <a-button
+ style="margin-left: 8px"
+ icon="check"
+ v-if="currentStepIndex == steps.length - 1 && hasPerm('workFlow:update')"
+ type="primary"
+ @click="saveworkflow"
+ >
+ 鎻愪氦
+ </a-button>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import { workflowUpdata, getWorkflowByID } from '@/api/modular/system/workflowManage'
+import nomal from './components/nomalWorkFlow.vue'
+import builder from './components/builderWorkFlow.vue'
+export default {
+ components: {
+ nomal,
+ builder
+ },
+ data() {
+ return {
+ localflow: null,
+ workflow: {
+ title: '',
+ version: '',
+ description: '',
+ icon: '',
+ color: '',
+ group: '',
+ inputs: null,
+ nodes: null,
+ formId: ''
+ },
+ // 鍩烘湰淇℃伅鏄惁杈惧埌鎻愪氦鏉′欢
+ savecondition: false,
+ flowinfodata: {
+ icon: null,
+ title: null,
+ group: null,
+ description: null,
+ formId: null
+ },
+ currentStepIndex: 0,
+ steps: [
+ {
+ title: '鍩烘湰淇℃伅',
+ content: 'First-content',
+ icon: 'credit-card'
+ },
+ {
+ title: '娴佺▼璁捐',
+ content: 'Last-content',
+ icon: 'apartment'
+ }
+ ]
+ }
+ },
+ mounted() {
+ },
+ activated() {
+ this.currentStepIndex = 0
+ const { id, version } = this.$route.params
+ if (id) {
+ getWorkflowByID(Object.assign({ id: id, version: version })).then((res) => {
+ this.flowinfodata.title = res.data.title
+ this.flowinfodata.description = res.data.description
+ this.flowinfodata.icon = res.data.icon
+ this.flowinfodata.group = res.data.group
+ this.flowinfodata.formId = res.data.formId
+ this.workflow.inputs = null
+ this.workflow.nodes = res.data.nodes
+ })
+ }
+ },
+ created() {
+ this.currentStepIndex = 0
+ const { id, version } = this.$route.params
+ if (id) {
+ getWorkflowByID(Object.assign({ id: id, version: version })).then((res) => {
+ this.flowinfodata.title = res.data.title
+ this.flowinfodata.description = res.data.description
+ this.flowinfodata.icon = res.data.icon
+ this.flowinfodata.group = res.data.group
+ this.flowinfodata.formId = res.data.formId
+ this.workflow.inputs = null
+ this.workflow.nodes = res.data.nodes
+ })
+ }
+ },
+ methods: {
+ getnomal(success, values) {
+ this.flowinfodata = values
+ if (success) {
+ this.savecondition = true
+ } else {
+ this.savecondition = false
+ }
+ },
+ async next() {
+ if (this.currentStepIndex === 0) {
+ await this.$refs.nomalinfo.getnomalinfo()
+ }
+ if (this.workflow.nodes) { this.localflow = JSON.parse(this.workflow.nodes) } else { this.localflow = null }
+ this.currentStepIndex++
+ },
+ prev() {
+ this.packageflow()
+ this.currentStepIndex--
+ },
+ packageflow() {
+ // 寰楀埌node
+ this.$refs.build.returnnode()
+ this.workflow.title = this.flowinfodata.title
+ this.workflow.version = this.$refs.build.WorkflowDefinition.version
+ this.workflow.description = this.flowinfodata.description
+ this.workflow.icon = this.flowinfodata.icon
+ this.workflow.color = this.$refs.build.WorkflowDefinition.color
+ this.workflow.group = this.flowinfodata.group
+ this.workflow.inputs = null
+ this.workflow.nodes = JSON.stringify(this.$refs.build.WorkflowDefinition.nodes)
+ this.workflow.formId = this.flowinfodata.formId
+ },
+ saveworkflow() {
+ if (this.savecondition) {
+ this.packageflow()
+ this.workflow.version = this.workflow.version + 1
+ workflowUpdata(Object.assign(this.workflow)).then(res => {
+ if (res.success) {
+ this.$message.success('鎻愪氦鎴愬姛')
+ } else {
+ this.$message.error('鎻愪氦澶辫触' + res.message)
+ }
+ })
+ } else {
+ this.$message.warning('璇峰畬鍠勬祦绋嬪熀鏈俊鎭�')
+ }
+ }
+ }
+}
+</script>
+<style scoped>
+.steps-content {
+ margin-top: 16px;
+ border-radius: 6px;
+ min-height: 200px;
+ text-align: center;
+ padding-top: 15px;
+}
+.steps-next {
+ text-align:center;
+ margin-top: 24px;
+ margin-right: 24px;
+}
+.steps-send {
+ text-align:right;
+ margin-top: 24px;
+ margin-right: 400px;
+}
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue
new file mode 100644
index 0000000..75f7bcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/index.vue
@@ -0,0 +1,136 @@
+<template>
+ <div>
+ <x-card v-if="hasPerm('workflowdefinition:page')">
+ <div slot="content" class="table-page-search-wrapper">
+ <a-form layout="inline">
+ <a-row :gutter="48">
+ <a-col :md="8" :sm="24">
+ <a-form-item label="娴佺▼鍚嶇О">
+ <a-input v-model="queryParam.title" allow-clear placeholder="璇疯緭鍏ユ祦绋嬪悕绉�" />
+ </a-form-item>
+ </a-col>
+ <a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col>
+ </a-row>
+ </a-form>
+ </div>
+ </x-card>
+ <a-card :bordered="false">
+ <a-spin :spinning="loading">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ :rowKey="(record) => record.id">
+ <template slot="operator" v-if="hasPerm('workflowdefinition:create')">
+ <a-button @click="createWorkflow()" icon="plus" type="primary" v-if="hasPerm('workflowdefinition:create')">鏂板宸ヤ綔娴�</a-button>
+ </template>
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('workflowmanager:start')" @click="startworkflow(record.id,record.version,record.formId)" >鍙戣捣娴佺▼</a>
+ <a-divider type="vertical" v-if="hasPerm('workflowmanager:start') & hasPerm('workflowdefinition:edit')" />
+ <a v-if="hasPerm('workflowdefinition:edit')" @click="editworkflow(record.id,record.version)" >淇敼</a>
+ <a-divider type="vertical" v-if="hasPerm('workflowdefinition:delete') & hasPerm('workflowdefinition:edit')" />
+ <a-popconfirm v-if="hasPerm('workflowdefinition:delete')" placement="topRight" title="纭鍒犻櫎锛�" @confirm="() => deleteworkflow(record.id)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ </a-spin>
+ </a-card>
+ <start-workflow ref="startworkflow"></start-workflow>
+ </div>
+</template>
+
+<script>
+import { STable, XCard } from '@/components'
+import { getWorkflowDefinitionList, deleteWorkflowDefinition } from '@/api/modular/system/workflowManage'
+import StartWorkflow from './startworkflow.vue'
+export default {
+ name: 'WorkflowList',
+ components: {
+ STable,
+ XCard,
+ StartWorkflow
+ },
+ data() {
+ return {
+ queryParam: {},
+ loading: true,
+ columns: [
+ {
+ title: '鏍囬',
+ dataIndex: 'title'
+ },
+ {
+ title: '娴佺▼鐗堟湰',
+ dataIndex: 'version'
+ },
+ {
+ title: '鍒涘缓浜�',
+ dataIndex: 'createdUserName'
+ },
+ {
+ title: '鍒涘缓鏃堕棿',
+ dataIndex: 'createdTime'
+ },
+ {
+ title: '鎿嶄綔',
+ dataIndex: 'action',
+ scopedSlots: {
+ customRender: 'action'
+ }
+ }
+ ],
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ return getWorkflowDefinitionList(Object.assign(parameter, this.queryParam)).then((res) => {
+ this.loading = false
+ return res.data
+ })
+ }
+ }
+ },
+ methods: {
+ // 鏂板缓宸ヤ綔娴�
+ createWorkflow() {
+ this.$nextTick(() => {
+ this.$router.push({ path: '/workflowmanage/create' })
+ })
+ },
+ // 鍙戣捣娴佺▼
+ startworkflow(id, version, formId) {
+ if (formId === null) {
+
+ } else {
+ this.$refs.startworkflow.init(id, version, formId)
+ }
+ },
+ // 淇敼娴佺▼
+ editworkflow(id, version) {
+ this.$nextTick(() => {
+ this.$router.push({ name: 'sys_workflow_edit', params: { id: id, version: version } })
+ })
+ },
+ // 鍒犻櫎娴佺▼
+ deleteworkflow(Id) {
+ deleteWorkflowDefinition(Object.assign({ Id: Id })).then(res => {
+ if (res.success === true) {
+ this.$refs.table.refresh(true)
+ this.$message.success(res.message)
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue
new file mode 100644
index 0000000..5ac1f40
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/system/workflow/startworkflow.vue
@@ -0,0 +1,82 @@
+<template>
+ <a-modal
+ title="鍙戣捣娴佺▼"
+ :visible="visible"
+ width="1000px"
+ :destroyOnClose="true"
+ @ok="handleOk"
+ @cancel="handleCancel">
+ <k-form-build ref="kfb" :value="jsonData" />
+ </a-modal>
+</template>
+
+<script>
+import 'k-form-design/styles/k-form-design.less'
+import { formEntity } from '@/api/modular/system/formDesignmanage'
+import { startWorkflow } from '@/api/modular/system/workflowManage'
+export default {
+ name: 'StartWorkflow',
+ components: {
+ porpsWorkflowDefinitionId: {
+ type: Number,
+ default: null
+ },
+ porpsVersion: {
+ type: Number,
+ default: null
+ },
+ porpsFormId: {
+ type: Number,
+ default: null
+ }
+ },
+ data() {
+ return {
+ visible: false,
+ workflowdefinitionId: null,
+ version: null,
+ jsonData: {}
+ }
+ },
+ methods: {
+ // 鍒濆鍖�
+ init(workflowdefinitionid, version, formId) {
+ this.visible = true
+ this.workflowdefinitionId = workflowdefinitionid
+ this.version = version
+ formEntity(Object.assign({ id: formId })).then(res => {
+ console.log(res)
+ this.jsonData = JSON.parse(res.data.formJson)
+ })
+ },
+ // 鎻愪氦
+ handleOk() {
+ this.$refs.kfb.getData().then(values => {
+ var data = {
+ id: this.workflowdefinitionId,
+ version: this.version,
+ inputs: values
+ }
+ startWorkflow(data).then(res => {
+ if (res.success === true) {
+ this.$message.success('鍙戣捣娴佺▼鎴愬姛锛�')
+ this.handleCancel()
+ } else {
+ this.$message.error(res.message)
+ }
+ })
+ }).catch(() => {
+ console.log('楠岃瘉鏈�氳繃锛岃幏鍙栧け璐�')
+ })
+ },
+ // 鍙栨秷
+ handleCancel() {
+ this.visible = false
+ }
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue
new file mode 100644
index 0000000..4e46b29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Login.vue
@@ -0,0 +1,332 @@
+<template>
+ <div class="main">
+ <a-form
+ id="formLogin"
+ class="user-layout-login"
+ ref="formLogin"
+ :form="form"
+ @submit="handleSubmit"
+ >
+ <div>
+ <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+
+ <a-form-item>
+ <a-input
+ size="large"
+ type="text"
+ placeholder="璐﹀彿"
+ v-decorator="[
+ 'account',{ initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ヨ处鍙�' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
+ ]"
+ >
+ <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+
+ <a-form-item>
+ <a-input
+ size="large"
+ type="password"
+ autocomplete="false"
+ placeholder="瀵嗙爜"
+ v-decorator="[
+ 'password',
+ { initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�' }], validateTrigger: 'blur'}
+ ]"
+ >
+ <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+ </div>
+ <!-- <a-tabs
+ :activeKey="customActiveKey"
+ :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"
+ @change="handleTabClick"
+ >
+ <a-tab-pane key="tab1" tab="璐﹀彿瀵嗙爜鐧诲綍">
+ <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+
+ <a-form-item>
+ <a-input
+ size="large"
+ type="text"
+ placeholder="璐﹀彿"
+ v-decorator="[
+ 'account',{ initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ヨ处鍙�' }, { validator: handleUsernameOrEmail }], validateTrigger: 'change'}
+ ]"
+ >
+ <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+
+ <a-form-item>
+ <a-input
+ size="large"
+ type="password"
+ autocomplete="false"
+ placeholder="瀵嗙爜"
+ v-decorator="[
+ 'password',
+ { initialValue:'', rules: [{ required: true, message: '璇疯緭鍏ュ瘑鐮�' }], validateTrigger: 'blur'}
+ ]"
+ >
+ <a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+ </a-tab-pane>
+ <a-tab-pane key="tab2" tab="鎵嬫満鍙风櫥褰�">
+ <a-alert v-if="isLoginError" type="error" showIcon style="margin-bottom: 24px;" :message="this.accountLoginErrMsg" />
+ <a-form-item>
+ <a-input size="large" type="text" placeholder="鎵嬫満鍙�" v-decorator="['mobile', {rules: [{ required: true, pattern: /^1[34578]\d{9}$/, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�' }], validateTrigger: 'change'}]">
+ <a-icon slot="prefix" type="mobile" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+
+ <a-row :gutter="16">
+ <a-col class="gutter-row" :span="16">
+ <a-form-item>
+ <a-input size="large" type="text" placeholder="楠岃瘉鐮�" v-decorator="['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]">
+ <a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+ </a-col>
+ <a-col class="gutter-row" :span="8">
+ <a-button
+ class="getCaptcha"
+ tabindex="-1"
+ :disabled="state.smsSendBtn"
+ @click.stop.prevent="getCaptcha"
+ v-text="!state.smsSendBtn && '鑾峰彇楠岃瘉鐮�' || (state.time+' s')"
+ ></a-button>
+ </a-col>
+ </a-row>
+ </a-tab-pane>
+ </a-tabs> -->
+
+ <a-form-item class="check-white">
+ <a-checkbox v-decorator="['rememberMe', { valuePropName: 'checked' }]">璁颁綇鎴�</a-checkbox>
+ </a-form-item>
+
+ <!-- <a-form-item>
+ <Verify
+ @success="verifySuccess"
+ :mode="'pop'"
+ :captchaType="'clickWord'"
+ :imgSize="{ width: '330px', height: '155px' }"
+ ref="verify"
+ ></Verify>
+ </a-form-item> -->
+
+ <a-form-item style="margin-top:24px">
+ <a-button
+ size="large"
+ type="primary"
+ htmlType="submit"
+ class="login-button"
+ :loading="state.loginBtn"
+ :disabled="state.loginBtn"
+ >纭畾</a-button>
+ </a-form-item>
+
+ <!-- <div class="user-login-other">
+ <span>鍏朵粬鐧诲綍鏂瑰紡</span>
+ <a>
+ <a-icon class="item-icon" type="alipay-circle"></a-icon>
+ </a>
+ <a>
+ <a-icon class="item-icon" type="taobao-circle"></a-icon>
+ </a>
+ <a>
+ <a-icon class="item-icon" type="weibo-circle"></a-icon>
+ </a>
+ <router-link class="register" :to="{ name: 'register' }">娉ㄥ唽璐︽埛</router-link>
+ </div> -->
+ </a-form>
+ </div>
+</template>
+
+<script>
+import Vue from 'vue'
+import { mapActions } from 'vuex'
+import { getSmsCaptcha, getCaptchaOpen } from '@/api/modular/system/loginManage'
+
+export default {
+ data () {
+ return {
+ customActiveKey: 'tab1',
+ loginBtn: false,
+ // login type: 0 email, 1 username, 2 telephone
+ loginType: 0,
+ isLoginError: false,
+ requiredTwoStepCaptcha: false,
+ stepCaptchaVisible: false,
+ form: this.$form.createForm(this),
+ state: {
+ time: 60,
+ loginBtn: false,
+ // login type: 0 email, 1 username, 2 telephone
+ loginType: 0,
+ smsSendBtn: false
+ },
+ accountLoginErrMsg: '',
+ tenantOpen: false,
+ captchaOpen: false, // 鏄惁寮�鍚獙璇佺爜
+ tenantsList: [],
+ loginParams: [] // 鐧诲綍鍙傛暟
+
+ }
+ },
+ mounted () {
+ this.getLocalStorageData()
+ },
+ methods: {
+ ...mapActions(['Login', 'Logout', 'dictTypeData']),
+ // handler
+ handleUsernameOrEmail (rule, value, callback) {
+ const { state } = this
+ const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
+ if (regex.test(value)) {
+ state.loginType = 0
+ } else {
+ state.loginType = 1
+ }
+ callback()
+ },
+ /* handleTabClick (key) {
+ this.isLoginError = false
+ this.customActiveKey = key
+ // this.form.resetFields()
+ }, */
+ handleSubmit (e) {
+ e.preventDefault()
+ const {
+ form: { validateFields },
+ state,
+ customActiveKey,
+ Login
+ } = this
+
+ state.loginBtn = true
+ const validateFieldsKey = customActiveKey === 'tab1' ? ['account', 'password'] : ['mobile', 'captcha']
+ if (this.tenantOpen) {
+ validateFieldsKey.push('tenantCode')
+ }
+ validateFields(validateFieldsKey, { force: true }, (err, values) => {
+ this.loginParams = values
+ if (!err) {
+ // 鏄惁寮�鍚獙璇佺爜
+ // if (this.captchaOpen) {
+ // this.$refs.verify.show()
+ // state.loginBtn = false
+ // return
+ // }
+ const loginParams = { ...values }
+ delete loginParams.account
+ loginParams[!state.loginType ? 'account' : 'account'] = values.account
+ loginParams.password = values.password
+ if (this.tenantOpen) {
+ loginParams.tenantCode = values.tenantCode
+ }
+ Login(loginParams)
+ .then((res) => this.loginSuccess(res))
+ .catch(err => this.requestFailed(JSON.stringify(err)))
+ .finally(() => {
+ state.loginBtn = false
+ })
+ } else {
+ setTimeout(() => {
+ state.loginBtn = false
+ }, 600)
+ }
+ })
+ },
+ loginSuccess (res) {
+ this.setLocalStorageData()
+ this.$router.push({ path: '/' })
+ this.isLoginError = false
+ // 鍔犺浇瀛楀吀鎵�鏈夊瓧鍏稿埌缂撳瓨涓�
+ this.dictTypeData().then((res) => { })
+ },
+ requestFailed (err) {
+ this.accountLoginErrMsg = err
+ this.isLoginError = true
+ },
+ /**
+ * 浠� localStorage 涓鍙栦俊鎭�
+ */
+ getLocalStorageData () {
+ const account = Vue.ls.get('LOGIN_ACCOUNT')
+ if (account) {
+ this.form.setFieldsValue(
+ {
+ account: account,
+ rememberMe: true
+ }
+ )
+ }
+ },
+ /**
+ * 灏嗕俊鎭啓鍏� localStorage
+ */
+ setLocalStorageData () {
+ if (this.form.getFieldValue('rememberMe')) {
+ Vue.ls.set('LOGIN_ACCOUNT', this.form.getFieldValue('account'))
+ } else {
+ Vue.ls.remove('LOGIN_ACCOUNT')
+ }
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.user-layout-login {
+ .check-white{
+ color:#fff;
+ }
+
+ label {
+ font-size: 14px;
+ }
+
+ .getCaptcha {
+ display: block;
+ width: 100%;
+ height: 40px;
+ }
+
+ .forge-password {
+ font-size: 14px;
+ }
+
+ button.login-button {
+ padding: 0 15px;
+ font-size: 16px;
+ height: 40px;
+ width: 100%;
+ }
+
+ .user-login-other {
+ text-align: left;
+ margin-top: 24px;
+ line-height: 22px;
+
+ .item-icon {
+ font-size: 24px;
+ color: rgba(0, 0, 0, 0.2);
+ margin-left: 16px;
+ vertical-align: middle;
+ cursor: pointer;
+ transition: color 0.3s;
+
+ &:hover {
+ color: #1890ff;
+ }
+ }
+
+ .register {
+ float: right;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue
new file mode 100644
index 0000000..32c0c3c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/Register.vue
@@ -0,0 +1,316 @@
+<template>
+ <div class="main user-layout-register">
+ <h3><span>娉ㄥ唽</span></h3>
+ <a-form ref="formRegister" :form="form" id="formRegister">
+ <a-form-item>
+ <a-input
+ size="large"
+ type="text"
+ placeholder="閭"
+ v-decorator="['email', {rules: [{ required: true, type: 'email', message: '璇疯緭鍏ラ偖绠卞湴鍧�' }], validateTrigger: ['change', 'blur']}]"
+ ></a-input>
+ </a-form-item>
+
+ <a-popover
+ placement="rightTop"
+ :trigger="['focus']"
+ :getPopupContainer="(trigger) => trigger.parentElement"
+ v-model="state.passwordLevelChecked">
+ <template slot="content">
+ <div :style="{ width: '240px' }" >
+ <div :class="['user-register', passwordLevelClass]">寮哄害锛�<span>{{ passwordLevelName }}</span></div>
+ <a-progress :percent="state.percent" :showInfo="false" :strokeColor=" passwordLevelColor " />
+ <div style="margin-top: 10px;">
+ <span>璇疯嚦灏戣緭鍏� 6 涓瓧绗︺�傝涓嶈浣跨敤瀹规槗琚寽鍒扮殑瀵嗙爜銆�</span>
+ </div>
+ </div>
+ </template>
+ <a-form-item>
+ <a-input
+ size="large"
+ type="password"
+ @click="handlePasswordInputClick"
+ autocomplete="false"
+ placeholder="鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�"
+ v-decorator="['password', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�'}, { validator: this.handlePasswordLevel }], validateTrigger: ['change', 'blur']}]"
+ ></a-input>
+ </a-form-item>
+ </a-popover>
+
+ <a-form-item>
+ <a-input
+ size="large"
+ type="password"
+ autocomplete="false"
+ placeholder="纭瀵嗙爜"
+ v-decorator="['password2', {rules: [{ required: true, message: '鑷冲皯6浣嶅瘑鐮侊紝鍖哄垎澶у皬鍐�' }, { validator: this.handlePasswordCheck }], validateTrigger: ['change', 'blur']}]"
+ ></a-input>
+ </a-form-item>
+
+ <a-form-item>
+ <a-input size="large" placeholder="11 浣嶆墜鏈哄彿" v-decorator="['mobile', {rules: [{ required: true, message: '璇疯緭鍏ユ纭殑鎵嬫満鍙�', pattern: /^1[3456789]\d{9}$/ }, { validator: this.handlePhoneCheck } ], validateTrigger: ['change', 'blur'] }]">
+ <a-select slot="addonBefore" size="large" defaultValue="+86">
+ <a-select-option value="+86">+86</a-select-option>
+ <a-select-option value="+87">+87</a-select-option>
+ </a-select>
+ </a-input>
+ </a-form-item>
+ <!--<a-input-group size="large" compact>
+ <a-select style="width: 20%" size="large" defaultValue="+86">
+ <a-select-option value="+86">+86</a-select-option>
+ <a-select-option value="+87">+87</a-select-option>
+ </a-select>
+ <a-input style="width: 80%" size="large" placeholder="11 浣嶆墜鏈哄彿"></a-input>
+ </a-input-group>-->
+
+ <a-row :gutter="16">
+ <a-col class="gutter-row" :span="16">
+ <a-form-item>
+ <a-input size="large" type="text" placeholder="楠岃瘉鐮�" v-decorator="['captcha', {rules: [{ required: true, message: '璇疯緭鍏ラ獙璇佺爜' }], validateTrigger: 'blur'}]">
+ <a-icon slot="prefix" type="mail" :style="{ color: 'rgba(0,0,0,.25)' }"/>
+ </a-input>
+ </a-form-item>
+ </a-col>
+ <a-col class="gutter-row" :span="8">
+ <a-button
+ class="getCaptcha"
+ size="large"
+ :disabled="state.smsSendBtn"
+ @click.stop.prevent="getCaptcha"
+ v-text="!state.smsSendBtn && '鑾峰彇楠岃瘉鐮�'||(state.time+' s')"></a-button>
+ </a-col>
+ </a-row>
+
+ <a-form-item>
+ <a-button
+ size="large"
+ type="primary"
+ htmlType="submit"
+ class="register-button"
+ :loading="registerBtn"
+ @click.stop.prevent="handleSubmit"
+ :disabled="registerBtn">娉ㄥ唽
+ </a-button>
+ <router-link class="login" :to="{ name: 'login' }">浣跨敤宸叉湁璐︽埛鐧诲綍</router-link>
+ </a-form-item>
+
+ </a-form>
+ </div>
+</template>
+
+<script>
+import { mixinDevice } from '@/utils/mixin.js'
+import { getSmsCaptcha } from '@/api/modular/system/loginManage'
+
+const levelNames = {
+ 0: '浣�',
+ 1: '浣�',
+ 2: '涓�',
+ 3: '寮�'
+}
+const levelClass = {
+ 0: 'error',
+ 1: 'error',
+ 2: 'warning',
+ 3: 'success'
+}
+const levelColor = {
+ 0: '#ff0000',
+ 1: '#ff0000',
+ 2: '#ff7e05',
+ 3: '#52c41a'
+}
+export default {
+ name: 'Register',
+ components: {
+ },
+ mixins: [mixinDevice],
+ data () {
+ return {
+ form: this.$form.createForm(this),
+
+ state: {
+ time: 60,
+ smsSendBtn: false,
+ passwordLevel: 0,
+ passwordLevelChecked: false,
+ percent: 10,
+ progressColor: '#FF0000'
+ },
+ registerBtn: false
+ }
+ },
+ computed: {
+ passwordLevelClass () {
+ return levelClass[this.state.passwordLevel]
+ },
+ passwordLevelName () {
+ return levelNames[this.state.passwordLevel]
+ },
+ passwordLevelColor () {
+ return levelColor[this.state.passwordLevel]
+ }
+ },
+ methods: {
+ handlePasswordLevel (rule, value, callback) {
+ let level = 0
+
+ // 鍒ゆ柇杩欎釜瀛楃涓蹭腑鏈夋病鏈夋暟瀛�
+ if (/[0-9]/.test(value)) {
+ level++
+ }
+ // 鍒ゆ柇瀛楃涓蹭腑鏈夋病鏈夊瓧姣�
+ if (/[a-zA-Z]/.test(value)) {
+ level++
+ }
+ // 鍒ゆ柇瀛楃涓蹭腑鏈夋病鏈夌壒娈婄鍙�
+ if (/[^0-9a-zA-Z_]/.test(value)) {
+ level++
+ }
+ this.state.passwordLevel = level
+ this.state.percent = level * 30
+ if (level >= 2) {
+ if (level >= 3) {
+ this.state.percent = 100
+ }
+ callback()
+ } else {
+ if (level === 0) {
+ this.state.percent = 10
+ }
+ callback(new Error('瀵嗙爜寮哄害涓嶅'))
+ }
+ },
+
+ handlePasswordCheck (rule, value, callback) {
+ const password = this.form.getFieldValue('password')
+ if (value === undefined) {
+ callback(new Error('璇疯緭鍏ュ瘑鐮�'))
+ }
+ if (value && password && value.trim() !== password.trim()) {
+ callback(new Error('涓ゆ瀵嗙爜涓嶄竴鑷�'))
+ }
+ callback()
+ },
+
+ handlePhoneCheck (rule, value, callback) {
+ callback()
+ },
+
+ handlePasswordInputClick () {
+ if (!this.isMobile()) {
+ this.state.passwordLevelChecked = true
+ return
+ }
+ this.state.passwordLevelChecked = false
+ },
+
+ handleSubmit () {
+ const { form: { validateFields }, state, $router } = this
+ validateFields({ force: true }, (err, values) => {
+ if (!err) {
+ state.passwordLevelChecked = false
+ $router.push({ name: 'registerResult', params: { ...values } })
+ }
+ })
+ },
+
+ getCaptcha (e) {
+ e.preventDefault()
+ const { form: { validateFields }, state, $message, $notification } = this
+
+ validateFields(['mobile'], { force: true },
+ (err, values) => {
+ if (!err) {
+ state.smsSendBtn = true
+
+ const interval = window.setInterval(() => {
+ if (state.time-- <= 0) {
+ state.time = 60
+ state.smsSendBtn = false
+ window.clearInterval(interval)
+ }
+ }, 1000)
+
+ const hide = $message.loading('楠岃瘉鐮佸彂閫佷腑..', 0)
+
+ getSmsCaptcha({ mobile: values.mobile }).then(res => {
+ setTimeout(hide, 2500)
+ $notification['success']({
+ message: '鎻愮ず',
+ description: '楠岃瘉鐮佽幏鍙栨垚鍔燂紝鎮ㄧ殑楠岃瘉鐮佷负锛�' + res.result.captcha,
+ duration: 8
+ })
+ }).catch(err => {
+ setTimeout(hide, 1)
+ clearInterval(interval)
+ state.time = 60
+ state.smsSendBtn = false
+ this.requestFailed(err)
+ })
+ }
+ }
+ )
+ },
+ requestFailed (err) {
+ this.$notification['error']({
+ message: '閿欒',
+ description: ((err.response || {}).data || {}).message || '璇锋眰鍑虹幇閿欒锛岃绋嶅悗鍐嶈瘯',
+ duration: 4
+ })
+ this.registerBtn = false
+ }
+ },
+ watch: {
+ 'state.passwordLevel' (val) {
+ }
+ }
+}
+</script>
+<style lang="less">
+ .user-register {
+
+ &.error {
+ color: #ff0000;
+ }
+
+ &.warning {
+ color: #ff7e05;
+ }
+
+ &.success {
+ color: #52c41a;
+ }
+
+ }
+
+ .user-layout-register {
+ .ant-input-group-addon:first-child {
+ background-color: #fff;
+ }
+ }
+</style>
+<style lang="less" scoped>
+ .user-layout-register {
+
+ & > h3 {
+ font-size: 16px;
+ margin-bottom: 20px;
+ }
+
+ .getCaptcha {
+ display: block;
+ width: 100%;
+ height: 40px;
+ }
+
+ .register-button {
+ width: 50%;
+ }
+
+ .login {
+ float: right;
+ line-height: 40px;
+ }
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue
new file mode 100644
index 0000000..5a807e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/src/views/userLoginReg/RegisterResult.vue
@@ -0,0 +1,50 @@
+<template>
+ <result
+ :isSuccess="true"
+ :content="false"
+ :title="email"
+ :description="description">
+
+ <template slot="action">
+ <a-button size="large" type="primary">鏌ョ湅閭</a-button>
+ <a-button size="large" style="margin-left: 8px" @click="goHomeHandle">杩斿洖棣栭〉</a-button>
+ </template>
+
+ </result>
+</template>
+
+<script>
+import { Result } from '@/components'
+
+export default {
+ name: 'RegisterResult',
+ components: {
+ Result
+ },
+ data () {
+ return {
+ description: '婵�娲婚偖浠跺凡鍙戦�佸埌浣犵殑閭涓紝閭欢鏈夋晥鏈熶负24灏忔椂銆傝鍙婃椂鐧诲綍閭锛岀偣鍑婚偖浠朵腑鐨勯摼鎺ユ縺娲诲笎鎴枫��',
+ form: {}
+ }
+ },
+ computed: {
+ email () {
+ const v = this.form && this.form.email || 'xxx'
+ const title = `浣犵殑璐︽埛锛�${v} 娉ㄥ唽鎴愬姛`
+ return title
+ }
+ },
+ created () {
+ this.form = this.$route.params
+ },
+ methods: {
+ goHomeHandle () {
+ this.$router.push({ name: 'login' })
+ }
+ }
+}
+</script>
+
+<style scoped>
+
+</style>
diff --git a/iWare_RawMaterialWarehouse_Web/vue.config.js b/iWare_RawMaterialWarehouse_Web/vue.config.js
new file mode 100644
index 0000000..82ca2bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/vue.config.js
@@ -0,0 +1,141 @@
+const path = require('path')
+const webpack = require('webpack')
+const createThemeColorReplacerPlugin = require('./config/plugin.config')
+const CompressionWebpackPlugin = require('compression-webpack-plugin')
+const productionGzipExtensions = ['js', 'css']
+
+function resolve(dir) {
+ return path.join(__dirname, dir)
+}
+
+// const isProd = process.env.NODE_ENV === 'production'
+
+// const assetsCDN = {
+// // webpack build externals
+// externals: {
+// vue: 'Vue',
+// 'vue-router': 'VueRouter',
+// vuex: 'Vuex',
+// axios: 'axios'
+// },
+// css: [],
+// // https://unpkg.com/browse/vue@2.6.10/
+// js: [
+// '//cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js',
+// '//cdn.jsdelivr.net/npm/vue-router@3.1.3/dist/vue-router.min.js',
+// '//cdn.jsdelivr.net/npm/vuex@3.1.1/dist/vuex.min.js',
+// '//cdn.jsdelivr.net/npm/axios@0.19.0/dist/axios.min.js'
+// ]
+// }
+
+// vue.config.js
+const vueConfig = {
+ lintOnSave: false, // 鍏抽棴eslintrc璇硶妫�鏌�
+
+ configureWebpack: {
+ // webpack plugins
+ plugins: [
+ // Ignore all locale files of moment.js
+ // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
+ new webpack.IgnorePlugin({
+ resourceRegExp: /^\.\/locale$/,
+ contextRegExp: /moment$/
+ }),
+ // maxChunks锛氫娇鐢ㄥぇ浜庢垨绛変簬 1 鐨勫�硷紝鏉ラ檺鍒� chunk 鐨勬渶澶ф暟閲忋�備娇鐢� 1 闃叉娣诲姞浠讳綍鍏朵粬棰濆鐨� chunk锛岃繖鏄洜涓篹ntry/main chunk 涔熶細鍖呭惈鍦ㄨ鏁颁箣涓��
+ // minChunkSize: 璁剧疆 chunk 鐨勬渶灏忓ぇ灏忋��
+ // 鍦ㄥ悎骞� chunk 鏃讹紝webpack 浼氬皾璇曡瘑鍒嚭鍏锋湁閲嶅妯″潡鐨� chunk锛屽苟浼樺厛杩涜鍚堝苟銆備换浣曟ā鍧楅兘涓嶄細琚悎骞跺埌 entry chunk 涓紝浠ュ厤褰卞搷鍒濆椤甸潰鍔犺浇鏃堕棿銆�
+ new webpack.optimize.LimitChunkCountPlugin({
+ maxChunks: 5,
+ minChunkSize: 100
+ }),
+ // 閰嶇疆compression-webpack-plugin鍘嬬缉
+ new CompressionWebpackPlugin({
+ algorithm: 'gzip',
+ test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
+ threshold: 10240,
+ minRatio: 0.8,
+ deleteOriginalAssets: false // 鏄惁鍒犻櫎婧愭枃浠� 榛樿涓簍rue 濡傛灉Nginx閰嶇疆浜唃zip鍙互true锛屽惁鍒欏垹浜嗘簮鏂囦欢灏变笉鑳芥甯歌闂簡
+ })
+ ]
+ // if prod, add externals
+ // externals: isProd ? assetsCDN.externals : {}
+ },
+
+ chainWebpack: (config) => {
+ config.resolve.alias
+ .set('@$', resolve('src'))
+
+ const svgRule = config.module.rule('svg')
+ svgRule.uses.clear()
+ svgRule
+ .oneOf('inline')
+ .resourceQuery(/inline/)
+ .use('vue-svg-icon-loader')
+ .loader('vue-svg-icon-loader')
+ .end()
+ .end()
+ .oneOf('external')
+ .use('file-loader')
+ .loader('file-loader')
+ .options({
+ name: 'assets/[name].[hash:8].[ext]'
+ })
+
+ // // if prod is on
+ // // assets require on cdn
+ // if (isProd) {
+ // config.plugin('html').tap(args => {
+ // args[0].cdn = assetsCDN
+ // return args
+ // })
+ // }
+ },
+
+ css: {
+ loaderOptions: {
+ less: {
+ modifyVars: {
+ 'primary-color': '#FA541C',
+ 'layout-color': '#FA541C',
+ 'border-radius-base': '2px'
+ },
+ // DO NOT REMOVE THIS LINE
+ javascriptEnabled: true
+ }
+ }
+ },
+
+ devServer: {
+ port: 81,
+ proxy: {
+ '/api': {
+ target: process.env.VUE_APP_API_BASE_URL,
+ ws: false,
+ changeOrigin: true
+ // pathRewrite: {
+ // '^/api': '' // 闇�瑕乺ewrite鐨�,
+ // }
+ },
+ '/hubs': {
+ target: process.env.VUE_APP_SOCKET_BASE_URL,
+ ws: true,
+ changeOrigin: true
+ }
+ }
+ },
+
+ // disable source map in production
+ productionSourceMap: false,
+ // babel-loader no-ignore node_modules/*
+ transpileDependencies: []
+}
+
+// preview.pro.loacg.com only do not use in your production;
+if (process.env.VUE_APP_PREVIEW === 'true') {
+ // eslint-disable-next-line no-labels
+ // runtimeCompiler: true,
+ // add `ThemeColorReplacer` plugin to webpack plugins
+ vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
+}
+
+module.exports = vueConfig
diff --git a/iWare_RawMaterialWarehouse_Web/web.config b/iWare_RawMaterialWarehouse_Web/web.config
new file mode 100644
index 0000000..c9fc9d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/web.config
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+ <system.webServer>
+ <rewrite>
+ <rules>
+ <rule name="api" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
+ <match url="*api/*" />
+ <action type="Rewrite" url="http://localhost:7788/{R:2}" />
+ </rule>
+ <rule name="hubs" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
+ <match url="*hubs/*" />
+ <action type="Rewrite" url="http://localhost:7788/hubs/{R:2}" />
+ </rule>
+ <rule name="index" stopProcessing="true">
+ <match url="^((?!(api)).)*$" />
+ <conditions>
+ <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
+ <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
+ </conditions>
+ <action type="Rewrite" url="/" />
+ </rule>
+ </rules>
+ </rewrite>
+ </system.webServer>
+</configuration>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Web/webstorm.config.js b/iWare_RawMaterialWarehouse_Web/webstorm.config.js
new file mode 100644
index 0000000..9117455
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Web/webstorm.config.js
@@ -0,0 +1,3 @@
+'use strict'
+const webpackConfig = require('@vue/cli-service/webpack.config.js')
+module.exports = webpackConfig
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj
new file mode 100644
index 0000000..a6380a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.csproj
@@ -0,0 +1,57 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>disable</Nullable>
+ <DocumentationFile>Admin.NET.Application.xml</DocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Compile Remove="Entity\**" />
+ <Compile Remove="Service\System\StepBody\**" />
+ <Compile Remove="Service\System\Tenant\**" />
+ <Compile Remove="Service\System\Workflow\**" />
+ <Compile Remove="StepBody\**" />
+ <Compile Remove="System\**" />
+ <Compile Remove="Workflow\**" />
+ <EmbeddedResource Remove="Entity\**" />
+ <EmbeddedResource Remove="Service\System\StepBody\**" />
+ <EmbeddedResource Remove="Service\System\Tenant\**" />
+ <EmbeddedResource Remove="Service\System\Workflow\**" />
+ <EmbeddedResource Remove="StepBody\**" />
+ <EmbeddedResource Remove="System\**" />
+ <EmbeddedResource Remove="Workflow\**" />
+ <None Remove="Entity\**" />
+ <None Remove="Service\System\StepBody\**" />
+ <None Remove="Service\System\Tenant\**" />
+ <None Remove="Service\System\Workflow\**" />
+ <None Remove="StepBody\**" />
+ <None Remove="System\**" />
+ <None Remove="Workflow\**" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <None Remove="applicationsettings.json" />
+ <None Remove="HuaRui.Les.Application.xml" />
+ <None Remove="Admin.NET.Application.xml" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Content Include="Admin.NET.Application.xml" />
+ <Content Include="applicationsettings.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="EFCore.BulkExtensions" Version="6.5.6" />
+ <PackageReference Include="WorkflowCore" Version="3.6.4" />
+ <PackageReference Include="WorkflowCore.DSL" Version="3.6.4" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
new file mode 100644
index 0000000..fc93696
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Admin.NET.Application.xml
@@ -0,0 +1,25607 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>Admin.NET.Application</name>
+ </assembly>
+ <members>
+ <member name="T:Admin.NET.Application.CodeGenHelper">
+ <summary>
+ 浠g爜鐢熸垚甯姪绫�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGenHelper.ValidateCodeGenConfig(System.Collections.Generic.List{Admin.NET.Core.SysCodeGenConfig})">
+ <summary>
+ 鏍¢獙 浠g爜閰嶇疆
+ </summary>
+ <param name="list"></param>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGenHelper.ValidateCodeGenConfig(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+ <summary>
+ 鏍¢獙 浠g爜閰嶇疆
+ </summary>
+ <param name="list"></param>
+ </member>
+ <member name="T:Admin.NET.Application.SysHelper">
+ <summary>
+ 绯荤粺甯姪绫�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysHelper.GetUserName">
+ <summary>
+ 鑾峰彇鐧诲綍浜虹殑鏄电О
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysHelper.GetUserId">
+ <summary>
+ 鑾峰彇鐧诲綍浜虹殑鐢ㄦ埛id
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysHelper.GetNowTime">
+ <summary>
+ 鑾峰彇褰撳墠鏃堕棿
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.CustomMapper">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CustomMapper.Register(Mapster.TypeAdapterConfig)">
+ <summary>
+
+ </summary>
+ <param name="config"></param>
+ </member>
+ <member name="T:Admin.NET.Application.BindEntranceService">
+ <summary>
+ 鍏ュ簱绠$悊鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.GetContainer(Admin.NET.Application.BindEntranceInput)">
+ <summary>
+ 鎵樼洏鏌ヨ缁勭洏鐗╂枡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.GetMaterial(Admin.NET.Application.GetMaterialInput)">
+ <summary>
+ 鎵爜鑾峰彇鐗╂枡
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.AutoWare(Admin.NET.Application.WarehousingInput)">
+ <summary>
+ 缁勭洏
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.AutomaticWarehousing(Admin.NET.Application.WarehousingInput)">
+ <summary>
+ 鑷姩鍏ュ簱
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BindEntranceService.ManualWarehousing(Admin.NET.Application.WarehousingInput)">
+ <summary>
+ 浜哄伐鍏ュ簱
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.BindEntranceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BindEntranceInput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WarehousingInput">
+ <summary>
+ 缁勭洏杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingInput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingInput.PlaceCode">
+ <summary>
+ 搴撲綅鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingInput.SourcePlace">
+ <summary>
+ 鍏ュ簱璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingInput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WarehousingMaterialInput">
+ <summary>
+ 鐗╂枡鏄庣粏杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialId">
+ <summary>
+ 鐗╂枡ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.InspectionMethod">
+ <summary>
+ 鐗╂枡妫�楠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.MaterialUnit">
+ <summary>
+ 鐗╂枡鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WarehousingMaterialInput.LesWorkshopSection">
+ <summary>
+ 宸ユ
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetMaterialInput">
+ <summary>
+ 鑾峰彇鐗╂枡杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialInput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.BindEntranceOutput">
+ <summary>
+ 缁勭洏鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BindEntranceOutput.ContainerCode">
+ <summary>
+ 鍛ㄨ浆绠卞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BindEntranceOutput.WmsContainer">
+ <summary>
+ 鏂欑鍙蜂俊鎭�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BindEntranceOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BindEntranceOutput.WmsMaterials">
+ <summary>
+ 鐗╂枡鏄庣粏淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetMaterialContainerOutput">
+ <summary>
+ 鐗╂枡鏄庣粏淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.InspectionMethod">
+ <summary>
+ 鐗╂枡妫�楠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMaterialContainerOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialId">
+ <summary>
+ 鐗╂枡ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.InspectionMethod">
+ <summary>
+ 鐗╂枡妫�楠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.MaterialUnit">
+ <summary>
+ 鐗╂枡鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialOutput.LesWorkshopSection">
+ <summary>
+ 宸ユ
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ExWarehouseSearch">
+ <summary>
+ 鐗╂枡鍑哄簱鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWarehouseSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWarehouseSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ExWarehouseInput">
+ <summary>
+ 鍑哄簱杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWarehouseInput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWarehouseInput.ToPlace">
+ <summary>
+ 鍑哄簱浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWarehouseInput.PlaceCode">
+ <summary>
+ 搴撲綅缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CallAirflareInput">
+ <summary>
+ 鍛煎彨绌烘墭杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CallAirflareInput.Quantity">
+ <summary>
+ 鍛煎彨绌烘墭鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ExWareHouseOutput">
+ <summary>
+ 鍑哄簱杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.StockNumber">
+ <summary>
+ 瀹炵墿搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ExWareHouseOutput.QuantityOfBill">
+ <summary>
+ 璐﹂潰鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ExWarehouseService">
+ <summary>
+ 鍑哄簱绠$悊鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ExWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ExWarehouseService.Page(Admin.NET.Application.ExWarehouseSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鐗╂枡鍑哄簱绠$悊淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ExWarehouseService.AutoExWarehouse(System.Collections.Generic.List{Admin.NET.Application.ExWarehouseInput})">
+ <summary>
+ 鑷姩鍑哄簱
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ExWarehouseService.ManualExWarehouse(System.Collections.Generic.List{Admin.NET.Application.ExWarehouseInput})">
+ <summary>
+ 浜哄伐鍑哄簱
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ExWarehouseService.CallAirflare(Admin.NET.Application.CallAirflareInput)">
+ <summary>
+ 鍛煎彨绌烘墭
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaDto">
+ <summary>
+ 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.AreaName">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.AreaDesc">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.AreaStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.AreaType">
+ <summary>
+ 鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.IsSteel">
+ <summary>
+ 鏄惁涓洪挗骞冲彴
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaSearch">
+ <summary>
+ 搴撳尯淇℃伅鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.AreaName">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.AreaDesc">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.AreaStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.AreaType">
+ <summary>
+ 鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.IsSteel">
+ <summary>
+ 鏄惁涓洪挗骞冲彴
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaSearchNonPage">
+ <summary>
+ 搴撳尯淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaName">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaDesc">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.AreaType">
+ <summary>
+ 鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.IsSteel">
+ <summary>
+ 鏄惁涓洪挗骞冲彴
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaInput">
+ <summary>
+ 搴撳尯淇℃伅杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.AreaName">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.AreaDesc">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.AreaStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.AreaType">
+ <summary>
+ 鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.IsSteel">
+ <summary>
+ 鏄惁涓洪挗骞冲彴
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWmsAreaInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWmsAreaInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWmsAreaInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsAreaInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWmsAreaInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaOutput">
+ <summary>
+ 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.AreaName">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.AreaDesc">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.AreaStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.AreaType">
+ <summary>
+ 鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.IsSteel">
+ <summary>
+ 鏄惁涓洪挗骞冲彴
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsAreaOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAreaService">
+ <summary>
+ 搴撳尯淇℃伅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="wmsAreaRep"></param>
+ <param name="sysDictTypeRep"></param>
+ <param name="sysDictDataRep"></param>
+ <param name="sysExcelTemplateService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.Page(Admin.NET.Application.WmsAreaSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ搴撳尯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.ListNonPageAsync(Admin.NET.Application.WmsAreaSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠簱鍖轰俊鎭垪琛�
+ </summary>
+ <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+ <returns>(搴撳尯淇℃伅)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.Add(Admin.NET.Application.AddWmsAreaInput)">
+ <summary>
+ 澧炲姞搴撳尯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.Delete(Admin.NET.Application.DeleteWmsAreaInput)">
+ <summary>
+ 鍒犻櫎搴撳尯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.Update(Admin.NET.Application.UpdateWmsAreaInput)">
+ <summary>
+ 鏇存柊搴撳尯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.Get(Admin.NET.Application.QueryeWmsAreaInput)">
+ <summary>
+ 鑾峰彇搴撳尯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.List(Admin.NET.Application.WmsAreaInput)">
+ <summary>
+ 鑾峰彇搴撳尯淇℃伅鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.TaskWmsArea">
+ <summary>
+ 缁勮杞﹂棿鑾峰彇搴撳尯
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.GetAreaEntranceList">
+ <summary>
+ 鑾峰彇浠撳簱涓嬫媺妗�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆搴撳尯淇℃伅鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAreaService.ToExcelAsync(Admin.NET.Application.WmsAreaSearchNonPage)">
+ <summary>
+ 鏍规嵁搴撳尯淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerDto">
+ <summary>
+ 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ContainerCode">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ContainerType">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ContainerStatus">
+ <summary>
+ 鎵樼洏鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.SpecLength">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.SpecWidth">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.SpecHeight">
+ <summary>
+ 楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.LimitLength">
+ <summary>
+ 闄愰暱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.LimitWidth">
+ <summary>
+ 闄愬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.LimitHeight">
+ <summary>
+ 闄愰珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.MaxWeight">
+ <summary>
+ 杞介噸涓婇檺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ParentContainerId">
+ <summary>
+ 鐖舵墭鐩業d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.AssetNo">
+ <summary>
+ 璧勪骇缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ContainerCategory">
+ <summary>
+ 鎵樼洏鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.ErpNo">
+ <summary>
+ Erp鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.IsVirtually">
+ <summary>
+ 鏄惁铏氭嫙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerSearch">
+ <summary>
+ 鎵樼洏淇℃伅鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerCode">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerType">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerStatus">
+ <summary>
+ 鎵樼洏鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.SpecLength">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.SpecWidth">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.SpecHeight">
+ <summary>
+ 楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.LimitLength">
+ <summary>
+ 闄愰暱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.LimitWidth">
+ <summary>
+ 闄愬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.LimitHeight">
+ <summary>
+ 闄愰珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.MaxWeight">
+ <summary>
+ 杞介噸涓婇檺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ParentContainerId">
+ <summary>
+ 鐖舵墭鐩業d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.AssetNo">
+ <summary>
+ 璧勪骇缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ContainerCategory">
+ <summary>
+ 鎵樼洏鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.ErpNo">
+ <summary>
+ Erp鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.IsVirtually">
+ <summary>
+ 鏄惁铏氭嫙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerSearchNonPage">
+ <summary>
+ 鎵樼洏淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerCode">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerType">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerStatus">
+ <summary>
+ 鎵樼洏鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecLength">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecWidth">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.SpecHeight">
+ <summary>
+ 楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitLength">
+ <summary>
+ 闄愰暱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitWidth">
+ <summary>
+ 闄愬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.LimitHeight">
+ <summary>
+ 闄愰珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.MaxWeight">
+ <summary>
+ 杞介噸涓婇檺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ParentContainerId">
+ <summary>
+ 鐖舵墭鐩業d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.AssetNo">
+ <summary>
+ 璧勪骇缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ContainerCategory">
+ <summary>
+ 鎵樼洏鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.ErpNo">
+ <summary>
+ Erp鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.IsVirtually">
+ <summary>
+ 鏄惁铏氭嫙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerInput">
+ <summary>
+ 鎵樼洏淇℃伅杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ContainerCode">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ContainerType">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ContainerStatus">
+ <summary>
+ 鎵樼洏鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.SpecLength">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.SpecWidth">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.SpecHeight">
+ <summary>
+ 楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.LimitLength">
+ <summary>
+ 闄愰暱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.LimitWidth">
+ <summary>
+ 闄愬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.LimitHeight">
+ <summary>
+ 闄愰珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.MaxWeight">
+ <summary>
+ 杞介噸涓婇檺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ParentContainerId">
+ <summary>
+ 鐖舵墭鐩業d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.AssetNo">
+ <summary>
+ 璧勪骇缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ContainerCategory">
+ <summary>
+ 鎵樼洏鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.ErpNo">
+ <summary>
+ Erp鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.IsVirtually">
+ <summary>
+ 鏄惁铏氭嫙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddWmsContainerInput.Quantity">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsContainerInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerOutput">
+ <summary>
+ 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerCode">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerType">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerStatus">
+ <summary>
+ 鎵樼洏鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.SpecLength">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.SpecWidth">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.SpecHeight">
+ <summary>
+ 楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.LimitLength">
+ <summary>
+ 闄愰暱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.LimitWidth">
+ <summary>
+ 闄愬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.LimitHeight">
+ <summary>
+ 闄愰珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.MaxWeight">
+ <summary>
+ 杞介噸涓婇檺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ParentContainerId">
+ <summary>
+ 鐖舵墭鐩業d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.AssetNo">
+ <summary>
+ 璧勪骇缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ContainerCategory">
+ <summary>
+ 鎵樼洏鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.ErpNo">
+ <summary>
+ Erp鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.IsVirtually">
+ <summary>
+ 鏄惁铏氭嫙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsContainerOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.IWmsContainerService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.Add(Admin.NET.Application.AddWmsContainerInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.Delete(Admin.NET.Application.DeleteWmsContainerInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.Get(Admin.NET.Application.QueryeWmsContainerInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.List(Admin.NET.Application.WmsContainerInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.Page(Admin.NET.Application.WmsContainerSearch)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.Update(Admin.NET.Application.UpdateWmsContainerInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.ListNonPageAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <param name="importExcelType"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsContainerService.DownloadExcelTemplate(System.String)">
+ <summary>
+
+ </summary>
+ <param name="version"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerMapper">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerMapper.Register(Mapster.TypeAdapterConfig)">
+ <summary>
+
+ </summary>
+ <param name="config"></param>
+ </member>
+ <member name="T:Admin.NET.Application.WmsContainerService">
+ <summary>
+ 鎵樼洏淇℃伅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.Page(Admin.NET.Application.WmsContainerSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鎵樼洏淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.ListNonPageAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈡墭鐩樹俊鎭垪琛�
+ </summary>
+ <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+ <returns>(鎵樼洏淇℃伅)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.Add(Admin.NET.Application.AddWmsContainerInput)">
+ <summary>
+ 澧炲姞鎵樼洏淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.Delete(Admin.NET.Application.DeleteWmsContainerInput)">
+ <summary>
+ 鍒犻櫎鎵樼洏淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.Update(Admin.NET.Application.UpdateWmsContainerInput)">
+ <summary>
+ 鏇存柊鎵樼洏淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.Get(Admin.NET.Application.QueryeWmsContainerInput)">
+ <summary>
+ 鑾峰彇鎵樼洏淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.List(Admin.NET.Application.WmsContainerInput)">
+ <summary>
+ 鑾峰彇鎵樼洏淇℃伅鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鎵樼洏淇℃伅鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsContainerService.ToExcelAsync(Admin.NET.Application.WmsContainerSearchNonPage)">
+ <summary>
+ 鏍规嵁鎵樼洏淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialDto">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.Description">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.AreaNameParameter">
+ <summary>
+ 搴撳尯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.StationNameParameter">
+ <summary>
+ 宸ヤ綔鍖哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.MaturationTime">
+ <summary>
+ 鐔熷寲鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.IsMaturation">
+ <summary>
+ 鏄惁闇�瑕佺啛鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialSearch">
+ <summary>
+ 鐗╂枡淇℃伅鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.Description">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaterialUnit">
+ <summary>
+ 鐗╂枡鍗曚綅
+ </summary>
+
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.AreaNameParameter">
+ <summary>
+ 搴撳尯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.StationNameParameter">
+ <summary>
+ 宸ヤ綔鍖哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaturationTime">
+ <summary>
+ 鐔熷寲鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.IsMaturation">
+ <summary>
+ 鏄惁闇�瑕佺啛鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.Safeqty">
+ <summary>
+ 瀹夊叏瀛橀噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaxImumqty">
+ <summary>
+ 鏈�澶у瓨閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MinstorageAge">
+ <summary>
+ 鏈�灏忓簱榫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialSearch.MaxstorageAge">
+ <summary>
+ 鏈�澶у簱榫�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialInput">
+ <summary>
+ 鐗╂枡淇℃伅杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.Description">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaterialUnit">
+ <summary>
+ 鐗╂枡鍗曚綅
+ </summary>
+
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.AreaIds">
+ <summary>
+ 搴撳尯Ids
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.AreaNameParameter">
+ <summary>
+ 搴撳尯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.StationIds">
+ <summary>
+ 宸ヤ綔鍖篒ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.StationNameParameter">
+ <summary>
+ 宸ヤ綔鍖哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaturationTime">
+ <summary>
+ 鐔熷寲鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.IsMaturation">
+ <summary>
+ 鏄惁闇�瑕佺啛鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.LesWorkshopSection">
+ <summary>
+ 宸ユ
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.Safeqty">
+ <summary>
+ 瀹夊叏瀛橀噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaxImumqty">
+ <summary>
+ 鏈�澶у瓨閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MinstorageAge">
+ <summary>
+ 鏈�灏忓簱榫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialInput.MaxstorageAge">
+ <summary>
+ 鏈�澶у簱榫�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWmsMaterialInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWmsMaterialInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWmsMaterialInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsMaterialInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWmsMaterialInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialOutput">
+ <summary>
+ 鐗╂枡淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.Description">
+ <summary>
+ 鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaterialUnit">
+ <summary>
+ 鐗╂枡鍗曚綅
+ </summary>
+
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.AreaIds">
+ <summary>
+ 搴撳尯Ids
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.AreaNameParameter">
+ <summary>
+ 搴撳尯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.StationIds">
+ <summary>
+ 宸ヤ綔鍖篒ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.StationNameParameter">
+ <summary>
+ 宸ヤ綔鍖哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaturationTime">
+ <summary>
+ 鐔熷寲鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.IsMaturation">
+ <summary>
+ 鏄惁闇�瑕佺啛鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.Safeqty">
+ <summary>
+ 瀹夊叏瀛橀噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaxImumqty">
+ <summary>
+ 鏈�澶у瓨閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MinstorageAge">
+ <summary>
+ 鏈�灏忓簱榫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialOutput.MaxstorageAge">
+ <summary>
+ 鏈�澶у簱榫�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AreaListOutput">
+ <summary>
+ 搴撳尯涓嬫媺妗嗚緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AreaListOutput.AreaId">
+ <summary>
+ 鎵�鍦ㄥ簱鍖篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AreaListOutput.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StationListOutput">
+ <summary>
+ 宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StationListOutput.StationId">
+ <summary>
+ 绔欑偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StationListOutput.StationName">
+ <summary>
+ 绔欑偣鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialService">
+ <summary>
+ 鐗╂枡淇℃伅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterial,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesStation,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.Page(Admin.NET.Application.WmsMaterialSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鐗╂枡淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.Add(Admin.NET.Application.AddWmsMaterialInput)">
+ <summary>
+ 澧炲姞鐗╂枡淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.Delete(Admin.NET.Application.DeleteWmsMaterialInput)">
+ <summary>
+ 鍒犻櫎鐗╂枡淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.Update(Admin.NET.Application.UpdateWmsMaterialInput)">
+ <summary>
+ 鏇存柊鐗╂枡淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.Get(Admin.NET.Application.QueryeWmsMaterialInput)">
+ <summary>
+ 鑾峰彇鐗╂枡淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.List(Admin.NET.Application.WmsMaterialInput)">
+ <summary>
+ 鑾峰彇鐗╂枡淇℃伅鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMaterialService.GetAreaList">
+ <summary>
+ 搴撳尯涓嬫媺妗�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoDto">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantNo">
+ <summary>
+ 瀹㈠晢缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantName">
+ <summary>
+ 瀹㈠晢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantType">
+ <summary>
+ 瀹㈠晢鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantShort">
+ <summary>
+ 瀹㈠晢绠�绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantGrade">
+ <summary>
+ 瀹㈠晢绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantAttribute">
+ <summary>
+ 瀹㈠晢灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantTmt">
+ <summary>
+ 瀹㈠晢琛屼笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantContact">
+ <summary>
+ 瀹㈠晢鑱旂郴浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantPhone">
+ <summary>
+ 瀹㈠晢鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantFax">
+ <summary>
+ 瀹㈠晢浼犵湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantEmail">
+ <summary>
+ 瀹㈠晢閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.MerchantAddress">
+ <summary>
+ 瀹㈠晢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoSearch">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantNo">
+ <summary>
+ 瀹㈠晢缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantName">
+ <summary>
+ 瀹㈠晢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantType">
+ <summary>
+ 瀹㈠晢鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantShort">
+ <summary>
+ 瀹㈠晢绠�绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantGrade">
+ <summary>
+ 瀹㈠晢绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantAttribute">
+ <summary>
+ 瀹㈠晢灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantTmt">
+ <summary>
+ 瀹㈠晢琛屼笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantContact">
+ <summary>
+ 瀹㈠晢鑱旂郴浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantPhone">
+ <summary>
+ 瀹㈠晢鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantFax">
+ <summary>
+ 瀹㈠晢浼犵湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantEmail">
+ <summary>
+ 瀹㈠晢閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.MerchantAddress">
+ <summary>
+ 瀹㈠晢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoSearchNonPage">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantNo">
+ <summary>
+ 瀹㈠晢缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantName">
+ <summary>
+ 瀹㈠晢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantType">
+ <summary>
+ 瀹㈠晢鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantShort">
+ <summary>
+ 瀹㈠晢绠�绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantGrade">
+ <summary>
+ 瀹㈠晢绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantAttribute">
+ <summary>
+ 瀹㈠晢灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantTmt">
+ <summary>
+ 瀹㈠晢琛屼笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantContact">
+ <summary>
+ 瀹㈠晢鑱旂郴浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantPhone">
+ <summary>
+ 瀹㈠晢鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantFax">
+ <summary>
+ 瀹㈠晢浼犵湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantEmail">
+ <summary>
+ 瀹㈠晢閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.MerchantAddress">
+ <summary>
+ 瀹㈠晢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoInput">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantNo">
+ <summary>
+ 瀹㈠晢缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantName">
+ <summary>
+ 瀹㈠晢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantType">
+ <summary>
+ 瀹㈠晢鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantShort">
+ <summary>
+ 瀹㈠晢绠�绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantGrade">
+ <summary>
+ 瀹㈠晢绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantAttribute">
+ <summary>
+ 瀹㈠晢灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantTmt">
+ <summary>
+ 瀹㈠晢琛屼笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantContact">
+ <summary>
+ 瀹㈠晢鑱旂郴浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantPhone">
+ <summary>
+ 瀹㈠晢鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantFax">
+ <summary>
+ 瀹㈠晢浼犵湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantEmail">
+ <summary>
+ 瀹㈠晢閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.MerchantAddress">
+ <summary>
+ 瀹㈠晢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsMerchantinfoInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoOutput">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantNo">
+ <summary>
+ 瀹㈠晢缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantName">
+ <summary>
+ 瀹㈠晢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantType">
+ <summary>
+ 瀹㈠晢鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantShort">
+ <summary>
+ 瀹㈠晢绠�绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantGrade">
+ <summary>
+ 瀹㈠晢绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantAttribute">
+ <summary>
+ 瀹㈠晢灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantTmt">
+ <summary>
+ 瀹㈠晢琛屼笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantContact">
+ <summary>
+ 瀹㈠晢鑱旂郴浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantPhone">
+ <summary>
+ 瀹㈠晢鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantFax">
+ <summary>
+ 瀹㈠晢浼犵湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantEmail">
+ <summary>
+ 瀹㈠晢閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.MerchantAddress">
+ <summary>
+ 瀹㈠晢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMerchantinfoOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMerchantinfoService">
+ <summary>
+ 瀹㈠晢淇℃伅琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.Page(Admin.NET.Application.WmsMerchantinfoSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀹㈠晢淇℃伅琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.ListNonPageAsync(Admin.NET.Application.WmsMerchantinfoSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠鍟嗕俊鎭〃鍒楄〃
+ </summary>
+ <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(瀹㈠晢淇℃伅琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.Add(Admin.NET.Application.AddWmsMerchantinfoInput)">
+ <summary>
+ 澧炲姞瀹㈠晢淇℃伅琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.Delete(Admin.NET.Application.DeleteWmsMerchantinfoInput)">
+ <summary>
+ 鍒犻櫎瀹㈠晢淇℃伅琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.Update(Admin.NET.Application.UpdateWmsMerchantinfoInput)">
+ <summary>
+ 鏇存柊瀹㈠晢淇℃伅琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.Get(Admin.NET.Application.QueryeWmsMerchantinfoInput)">
+ <summary>
+ 鑾峰彇瀹㈠晢淇℃伅琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.List(Admin.NET.Application.WmsMerchantinfoInput)">
+ <summary>
+ 鑾峰彇瀹㈠晢淇℃伅琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆瀹㈠晢淇℃伅琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsMerchantinfoService.ToExcelAsync(Admin.NET.Application.WmsMerchantinfoSearchNonPage)">
+ <summary>
+ 鏍规嵁瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderTypeDto">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Pids">
+ <summary>
+ 鐖禝ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareOrderTypeSearch">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Pids">
+ <summary>
+ 鐖禝ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearch.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareOrderTypeSearchNonPage">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareOrderTypeSearchNonPage.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderTypeInput">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeInput.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWareOrderTypeInput">
+ <summary>
+ 澧炲姞鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWareOrderSubclassInput">
+ <summary>
+ 澧炲姞鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWareOrderTypeInput">
+ <summary>
+ 鍒犻櫎鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWareOrderTypeInput">
+ <summary>
+ 鏇存柊鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWareOrderTypeInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWareOrderTypeInput">
+ <summary>
+ 鏌ヨ鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderTypeOutput">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderTypeOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.IWmsOrderTypeService">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.Add(Admin.NET.Application.AddWareOrderTypeInput)">
+ <summary>
+ 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.Delete(Admin.NET.Application.DeleteWareOrderTypeInput)">
+ <summary>
+ 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.Get(Admin.NET.Application.QueryeWareOrderTypeInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.List(Admin.NET.Application.WmsOrderTypeInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.Page(Admin.NET.Application.WareOrderTypeSearch)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.Update(Admin.NET.Application.UpdateWareOrderTypeInput)">
+ <summary>
+ 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.ListNonPageAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+ </summary>
+ <param name="file"></param>
+ <param name="importExcelType"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IWmsOrderTypeService.ToExcelAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+ <summary>
+ 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderTypeService">
+ <summary>
+ 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.Page(Admin.NET.Application.WareOrderTypeSearch)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.ListNonPageAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+ </summary>
+ <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(鍗曟嵁绫诲瀷缁存姢琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.Add(Admin.NET.Application.AddWareOrderTypeInput)">
+ <summary>
+ 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.Delete(Admin.NET.Application.DeleteWareOrderTypeInput)">
+ <summary>
+ 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.Update(Admin.NET.Application.UpdateWareOrderTypeInput)">
+ <summary>
+ 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.Get(Admin.NET.Application.QueryeWareOrderTypeInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.List(Admin.NET.Application.WmsOrderTypeInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderTypeService.ToExcelAsync(Admin.NET.Application.WareOrderTypeSearchNonPage)">
+ <summary>
+ 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerDto">
+ <summary>
+ PDA鑿滃崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.Clolor">
+ <summary>
+ 棰滆壊
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerSearch">
+ <summary>
+ PDA鑿滃崟鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.Clolor">
+ <summary>
+ 棰滆壊
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerSearchNonPage">
+ <summary>
+ PDA鑿滃崟涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.Clolor">
+ <summary>
+ 棰滆壊
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerInput">
+ <summary>
+ PDA鑿滃崟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.Clolor">
+ <summary>
+ 棰滆壊
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsPdaPowerInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerOutput">
+ <summary>
+ PDA鑿滃崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Clolor">
+ <summary>
+ 棰滆壊
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPdaPowerOutput.IsCheck">
+ <summary>
+ 鏄惁閫夋嫨
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.wmsPdaPowerMenuOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.wmsPdaPowerMenuOutput.WorkShopName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.wmsPdaPowerMenuOutput.WmsPdaPowerOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaPowerService">
+ <summary>
+ PDA鑿滃崟鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.Page(Admin.NET.Application.WmsPdaPowerSearch)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.ListNonPageAsync(Admin.NET.Application.WmsPdaPowerSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇DA鑿滃崟鍒楄〃
+ </summary>
+ <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+ <returns>(PDA鑿滃崟)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.Add(Admin.NET.Application.AddWmsPdaPowerInput)">
+ <summary>
+ 澧炲姞PDA鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.Delete(Admin.NET.Application.DeleteWmsPdaPowerInput)">
+ <summary>
+ 鍒犻櫎PDA鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.Update(Admin.NET.Application.UpdateWmsPdaPowerInput)">
+ <summary>
+ 鏇存柊PDA鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.Get(Admin.NET.Application.QueryeWmsPdaPowerInput)">
+ <summary>
+ 鑾峰彇PDA鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.List(Admin.NET.Application.WmsPdaPowerInput)">
+ <summary>
+ 鑾峰彇PDA鑿滃崟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆PDA鑿滃崟鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaPowerService.ToExcelAsync(Admin.NET.Application.WmsPdaPowerSearchNonPage)">
+ <summary>
+ 鏍规嵁PDA鑿滃崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPlaceDto">
+ <summary>
+ 搴撲綅淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.WmsAreaAreaname">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Placecode">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Placestatus">
+ <summary>
+ 搴撲綅鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Areaid">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Columnno">
+ <summary>
+ 鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Layerno">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Deepcellno">
+ <summary>
+ 杩涙繁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Line">
+ <summary>
+ 绾垮彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Islock">
+ <summary>
+ 鏄惁閿佸畾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.EmptyContainer">
+ <summary>
+ 鏄惁绌烘墭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.PositionnoForSrm">
+ <summary>
+ 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Xzb">
+ <summary>
+ 搴撲綅X鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Yzb">
+ <summary>
+ 搴撲綅Y鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Zzb">
+ <summary>
+ 搴撲綅Z鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Length">
+ <summary>
+ 搴撲綅闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Width">
+ <summary>
+ 搴撲綅瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Height">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Maxweight">
+ <summary>
+ 鏈�澶ф壙閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Heightlevel">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Priority">
+ <summary>
+ 浼樺厛绾�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.LogicalName">
+ <summary>
+ 閫昏緫鍖哄煙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPlaceSearch">
+ <summary>
+ 搴撲綅淇℃伅鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Placecode">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Placestatus">
+ <summary>
+ 搴撲綅鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Areaid">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Columnno">
+ <summary>
+ 鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Layerno">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Deepcellno">
+ <summary>
+ 杩涙繁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Line">
+ <summary>
+ 绾垮彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Islock">
+ <summary>
+ 鏄惁閿佸畾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.EmptyContainer">
+ <summary>
+ 鏄惁绌烘墭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.PositionnoForSrm">
+ <summary>
+ 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Xzb">
+ <summary>
+ 搴撲綅X鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Yzb">
+ <summary>
+ 搴撲綅Y鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Zzb">
+ <summary>
+ 搴撲綅Z鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Length">
+ <summary>
+ 搴撲綅闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Width">
+ <summary>
+ 搴撲綅瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Height">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Maxweight">
+ <summary>
+ 鏈�澶ф壙閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Heightlevel">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceSearch.Priority">
+ <summary>
+ 浼樺厛绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPlaceInput">
+ <summary>
+ 搴撲綅淇℃伅杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Placecode">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Placestatus">
+ <summary>
+ 搴撲綅鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Areaid">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Columnno">
+ <summary>
+ 鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Layerno">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Deepcellno">
+ <summary>
+ 浣�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Line">
+ <summary>
+ 绾垮彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Islock">
+ <summary>
+ 鏄惁閿佸畾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.EmptyContainer">
+ <summary>
+ 鏄惁绌烘墭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.PositionnoForSrm">
+ <summary>
+ 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Xzb">
+ <summary>
+ 搴撲綅X鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Yzb">
+ <summary>
+ 搴撲綅Y鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Zzb">
+ <summary>
+ 搴撲綅Z鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Length">
+ <summary>
+ 搴撲綅闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Width">
+ <summary>
+ 搴撲綅瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Height">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Maxweight">
+ <summary>
+ 鏈�澶ф壙閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Heightlevel">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceInput.Priority">
+ <summary>
+ 浼樺厛绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWmsPlaceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddWmsPlaceInput.Areaid">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWmsPlaceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWmsPlaceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsPlaceInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWmsPlaceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MoreLockInput">
+ <summary>
+ 鎵归噺閿佸畾鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MoreLockInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPlaceOutput">
+ <summary>
+ 搴撲綅淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Placecode">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Placestatus">
+ <summary>
+ 搴撲綅鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Areaid">
+ <summary>
+ 鎵�鍦ㄥ簱鍖�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Columnno">
+ <summary>
+ 鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Layerno">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Deepcellno">
+ <summary>
+ 杩涙繁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Line">
+ <summary>
+ 绾垮彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Islock">
+ <summary>
+ 鏄惁閿佸畾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.EmptyContainer">
+ <summary>
+ 鏄惁绌烘墭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.PositionnoForSrm">
+ <summary>
+ 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Xzb">
+ <summary>
+ 搴撲綅X鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Yzb">
+ <summary>
+ 搴撲綅Y鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Zzb">
+ <summary>
+ 搴撲綅Z鍧愭爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Length">
+ <summary>
+ 搴撲綅闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Width">
+ <summary>
+ 搴撲綅瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Height">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Maxweight">
+ <summary>
+ 鏈�澶ф壙閲�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Heightlevel">
+ <summary>
+ 搴撲綅楂樺害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Priority">
+ <summary>
+ 浼樺厛绾�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsPlaceOutput.WmsArea">
+ <summary>
+ 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPlaceService">
+ <summary>
+ 搴撲綅淇℃伅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.Page(Admin.NET.Application.WmsPlaceSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ搴撲綅淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.AddNew(Admin.NET.Application.AddWmsPlaceInput)">
+ <summary>
+ 澧炲姞搴撲綅淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.Delete(Admin.NET.Application.DeleteWmsPlaceInput)">
+ <summary>
+ 鍒犻櫎搴撲綅淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.MoreLock(Admin.NET.Application.MoreLockInput)">
+ <summary>
+ 鎵归噺閿佸畾
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.MoreUnlock(Admin.NET.Application.MoreLockInput)">
+ <summary>
+ 鎵归噺瑙i攣
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.Update(Admin.NET.Application.UpdateWmsPlaceInput)">
+ <summary>
+ 鏇存柊搴撲綅淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.Get(Admin.NET.Application.QueryeWmsPlaceInput)">
+ <summary>
+ 鑾峰彇搴撲綅淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.List(Admin.NET.Application.WmsPlaceInput)">
+ <summary>
+ 鑾峰彇搴撲綅淇℃伅鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.FkWmsAreaList">
+ <summary>
+ 鑾峰彇WmsArea鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPlaceService.GetFAisle">
+ <summary>
+ 鑾峰彇鐔熷寲搴撳贩閬�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsWarehouseEntranceDto">
+ <summary>
+ 搴撳彛琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Type">
+ <summary>
+ 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.AffiliatedRoadway">
+ <summary>
+ 鎵�灞炲贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareWarehouseEntranceSearch">
+ <summary>
+ 搴撳彛琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Type">
+ <summary>
+ 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.AffiliatedRoadway">
+ <summary>
+ 鎵�灞炲贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearch.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareWarehouseEntranceSearchNonPage">
+ <summary>
+ 搴撳彛琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Type">
+ <summary>
+ 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.AffiliatedRoadway">
+ <summary>
+ 鎵�灞炲贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareWarehouseEntranceSearchNonPage.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsWarehouseEntranceInput">
+ <summary>
+ 搴撳彛琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Type">
+ <summary>
+ 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.AffiliatedRoadway">
+ <summary>
+ 鎵�灞炲贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceInput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWareWarehouseEntranceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWareWarehouseEntranceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWareWarehouseEntranceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWareWarehouseEntranceInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWareWarehouseEntranceInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsWarehouseEntranceOutput">
+ <summary>
+ 搴撳彛琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Type">
+ <summary>
+ 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.AffiliatedRoadway">
+ <summary>
+ 鎵�灞炲贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsWarehouseEntranceOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsWarehouseEntranceService">
+ <summary>
+ 搴撳彛琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysDictTypeRep"></param>
+ <param name="sysDictDataRep"></param>
+ <param name="wareWarehouseEntranceRep"></param>
+ <param name="sysExcelTemplateService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Page(Admin.NET.Application.WareWarehouseEntranceSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ搴撳彛琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.ListNonPageAsync(Admin.NET.Application.WareWarehouseEntranceSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠簱鍙h〃鍒楄〃
+ </summary>
+ <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(搴撳彛琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Add(Admin.NET.Application.AddWareWarehouseEntranceInput)">
+ <summary>
+ 澧炲姞搴撳彛琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Delete(Admin.NET.Application.DeleteWareWarehouseEntranceInput)">
+ <summary>
+ 鍒犻櫎搴撳彛琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Update(Admin.NET.Application.UpdateWareWarehouseEntranceInput)">
+ <summary>
+ 鏇存柊搴撳彛琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.Get(Admin.NET.Application.QueryeWareWarehouseEntranceInput)">
+ <summary>
+ 鑾峰彇搴撳彛琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.List(Admin.NET.Application.WmsWarehouseEntranceInput)">
+ <summary>
+ 鑾峰彇搴撳彛琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆搴撳彛琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsWarehouseEntranceService.ToExcelAsync(Admin.NET.Application.WareWarehouseEntranceSearchNonPage)">
+ <summary>
+ 鏍规嵁搴撳彛琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.AppPageInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppPageInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppPageInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddAppInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddAppInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddAppInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddAppInput.Active">
+ <summary>
+ 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+ 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddAppInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddAppInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateAppInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Id">
+ <summary>
+ 搴旂敤Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Active">
+ <summary>
+ 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+ 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAppInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChangeUserAppStatusInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeUserAppStatusInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryAppInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SetDefaultAppInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AppOutput">
+ <summary>
+ 绯荤粺搴旂敤鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppOutput.Id">
+ <summary>
+ 搴旂敤Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppOutput.Active">
+ <summary>
+ 鏄惁榛樿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AppOutput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysAppService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.AddApp(Admin.NET.Application.AddAppInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.DeleteApp(Admin.NET.Core.Service.BaseId)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.GetApp(Admin.NET.Application.QueryAppInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.GetAppList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.GetLoginApps(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.QueryAppPageList(Admin.NET.Application.AppPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.SetAsDefault(Admin.NET.Application.SetDefaultAppInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.UpdateApp(Admin.NET.Application.UpdateAppInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysAppService.ChangeUserAppStatus(Admin.NET.Application.ChangeUserAppStatusInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysAppService">
+ <summary>
+ 绯荤粺搴旂敤鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysApp},Admin.NET.Application.ISysMenuService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysAppRep"></param>
+ <param name="sysMenuService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.GetLoginApps(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛搴旂敤鐩稿叧淇℃伅
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.QueryAppPageList(Admin.NET.Application.AppPageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ绯荤粺搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.AddApp(Admin.NET.Application.AddAppInput)">
+ <summary>
+ 澧炲姞绯荤粺搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.DeleteApp(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鍒犻櫎绯荤粺搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.UpdateApp(Admin.NET.Application.UpdateAppInput)">
+ <summary>
+ 鏇存柊绯荤粺搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.GetApp(Admin.NET.Application.QueryAppInput)">
+ <summary>
+ 鑾峰彇绯荤粺搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.GetAppList">
+ <summary>
+ 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.SetAsDefault(Admin.NET.Application.SetDefaultAppInput)">
+ <summary>
+ 璁句负榛樿搴旂敤
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysAppService.ChangeUserAppStatus(Admin.NET.Application.ChangeUserAppStatusInput)">
+ <summary>
+ 淇敼鐢ㄦ埛鐘舵��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.AuthService">
+ <summary>
+ 鐧诲綍鎺堟潈鐩稿叧鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPdaPower},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Microsoft.AspNetCore.Http.IHttpContextAccessor,Admin.NET.Application.ISysUserService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysRoleService,Admin.NET.Application.ISysMenuService,Admin.NET.Application.ISysAppService,Admin.NET.Application.IClickWordCaptcha,Admin.NET.Application.ISysConfigService,Furion.EventBus.IEventPublisher,Admin.NET.Application.ISysCacheService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.LoginAsync(Admin.NET.Application.LoginInput)">
+ <summary>
+ 鐢ㄦ埛鐧诲綍
+ </summary>
+ <param name="input"></param>
+ <remarks>榛樿鐢ㄦ埛鍚�/瀵嗙爜锛歛dmin/admin</remarks>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.GetLoginUserAsync">
+ <summary>
+ 鑾峰彇褰撳墠PC鐧诲綍鐢ㄦ埛淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.GetPdaLoginUserAsync">
+ <summary>
+ 鑾峰彇褰撳墠PDA鐧诲綍鐢ㄦ埛淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.LogoutAsync">
+ <summary>
+ 閫�鍑�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.GetCaptchaOpen">
+ <summary>
+ 鑾峰彇楠岃瘉鐮佸紑鍏�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.GetCaptcha">
+ <summary>
+ 鑾峰彇楠岃瘉鐮侊紙榛樿鐐归�夋ā寮忥級
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.AuthService.VerificationCode(Admin.NET.Application.ClickWordCaptchaInput)">
+ <summary>
+ 鏍¢獙楠岃瘉鐮�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.LoginInput">
+ <summary>
+ 鐧诲綍杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginInput.Account">
+ <summary>
+ 鐢ㄦ埛鍚�
+ </summary>
+ <example>superAdmin</example>
+ </member>
+ <member name="P:Admin.NET.Application.LoginInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ <example>123456</example>
+ </member>
+ <member name="T:Admin.NET.Application.LoginOutput">
+ <summary>
+ 鐢ㄦ埛鐧诲綍杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Id">
+ <summary>
+ 涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Sex">
+ <summary>
+ 鎬у埆(瀛楀吀 1鐢� 2濂�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.ProductionlineId">
+ <summary>
+ 浜х嚎id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.AdminType">
+ <summary>
+ 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LastLoginIp">
+ <summary>
+ 鏈�鍚庣櫥闄咺P
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LastLoginTime">
+ <summary>
+ 鏈�鍚庣櫥闄嗘椂闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LastLoginAddress">
+ <summary>
+ 鏈�鍚庣櫥闄嗗湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LastLoginBrowser">
+ <summary>
+ 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LastLoginOs">
+ <summary>
+ 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.LoginEmpInfo">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Apps">
+ <summary>
+ 鍏峰搴旂敤淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Roles">
+ <summary>
+ 瑙掕壊淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Permissions">
+ <summary>
+ 鏉冮檺淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.AllPermissions">
+ <summary>
+ 绯荤粺鎵�鏈夋潈闄愪俊鎭�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.Menus">
+ <summary>
+ 鐧诲綍鑿滃崟淇℃伅---AntDesign鐗堟湰鑿滃崟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginOutput.DataScopes">
+ <summary>
+ 鏁版嵁鑼冨洿锛堟満鏋勶級淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Id">
+ <summary>
+ 涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Sex">
+ <summary>
+ 鎬у埆(瀛楀吀 1鐢� 2濂�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.ProductionlineId">
+ <summary>
+ 浜х嚎id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.AdminType">
+ <summary>
+ 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginIp">
+ <summary>
+ 鏈�鍚庣櫥闄咺P
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginTime">
+ <summary>
+ 鏈�鍚庣櫥闄嗘椂闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginAddress">
+ <summary>
+ 鏈�鍚庣櫥闄嗗湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginBrowser">
+ <summary>
+ 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.LastLoginOs">
+ <summary>
+ 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LoginPdaOutput.WmsPdaPowerOutputs">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Auth.Dto.RegistInput">
+ <summary>
+ 娉ㄥ唽杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.Email">
+ <summary>
+ 鐢ㄦ埛鍚�
+ </summary>
+ <example>superAdmin</example>
+ </member>
+ <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.CompanyName">
+ <summary>
+ 鍏徃鍚�
+ </summary>
+ <example>superAdmin</example>
+ </member>
+ <member name="P:Admin.NET.Application.Auth.Dto.RegistInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ <example>123456</example>
+ </member>
+ <member name="T:Admin.NET.Application.IAuthService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.GetCaptcha">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.GetCaptchaOpen">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.GetLoginUserAsync">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.LoginAsync(Admin.NET.Application.LoginInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.LogoutAsync">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IAuthService.VerificationCode(Admin.NET.Application.ClickWordCaptchaInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.BaseService`9">
+ <summary>
+ 閫氱敤鏂规硶
+ </summary>
+ <typeparam name="TEntity"></typeparam>
+ <typeparam name="TSearchDto"></typeparam>
+ <typeparam name="TAddDto"></typeparam>
+ <typeparam name="TUpdateDto"></typeparam>
+ <typeparam name="TImportDto"></typeparam>
+ <typeparam name="TDetailDto"></typeparam>
+ <typeparam name="TPageListDto"></typeparam>
+ <typeparam name="TExportDto"></typeparam>
+ <typeparam name="TPrintDto"></typeparam>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.Repository">
+ <summary>
+ 鏁版嵁浠撳偍
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.#ctor(Furion.DatabaseAccessor.IRepository{`0})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="repository"></param>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Get(System.Int64)">
+ <summary>
+ 涓婚敭鏌ヨ
+ </summary>
+ <param name="id"></param>
+ <returns></returns>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.SearchExpression">
+ <summary>
+ 鍒嗛〉鎼滅储鍓�
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.SearchQueryable">
+ <summary>
+ 鑷畾涔夊垎椤垫悳绱紙澶嶆潅鏌ヨ锛�
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.PageListHandle">
+ <summary>
+ 鍒嗛〉鏁版嵁杩斿洖鍓嶅鐞�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.PageList(`1)">
+ <summary>
+ 鍒嗛〉鏌ヨ
+ </summary>
+ <param name="searchDto"></param>
+ <returns></returns>
+ <exception cref="T:System.Exception"></exception>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.BeforeAddAction">
+ <summary>
+ 鏂板鍓嶉獙璇佹垨澶勭悊
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.AfterAddAction">
+ <summary>
+ 鏂板鍚庡鐞�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Add(`2)">
+ <summary>
+ 鏂板
+ </summary>
+ <param name="addDto"></param>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.BeforeDeleteAction">
+ <summary>
+ 鍒犻櫎鍓嶉獙璇佹垨澶勭悊
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.AfterDeleteAction">
+ <summary>
+ 鍒犻櫎鍚庡鐞�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Delete(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鍒犻櫎
+ </summary>
+ <param name="ids"></param>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.BeforeFakeDeleteAction">
+ <summary>
+ 鍋囧垹闄ゅ墠楠岃瘉鎴栧鐞�
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.AfterFakeDeleteAction">
+ <summary>
+ 鍋囧垹闄ゅ悗澶勭悊
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.FakeDelete(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鍋囧垹闄�
+ </summary>
+ <param name="ids"></param>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.BeforeUpdateAction">
+ <summary>
+ 鏇存柊鍓嶉獙璇佹垨澶勭悊
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.AfterUpdateAction">
+ <summary>
+ 鏇存柊鍚庡鐞�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Update(`3)">
+ <summary>
+ 淇敼
+ </summary>
+ <param name="updateDto"></param>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.ImportTemplate">
+ <summary>
+ 瀵煎叆妯$増涓嬭浇
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.BeforeImportAction">
+ <summary>
+ 瀵煎叆鍓嶉獙璇佹垨澶勭悊
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.AfterImportAction">
+ <summary>
+ 瀵煎叆鍚庡鐞�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Import(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 瀵煎叆
+ </summary>
+ <param name="file"></param>
+ <exception cref="T:System.Exception"></exception>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.ExportSearchExpression">
+ <summary>
+ 瀵煎嚭鎼滅储鍓�
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.ExportSearchQueryable">
+ <summary>
+ 鑷畾涔夊鍑烘悳绱紙澶嶆潅鏌ヨ锛�
+ </summary>
+ </member>
+ <member name="F:Admin.NET.Application.BaseService`9.ExportHandle">
+ <summary>
+ 瀵煎嚭鏁版嵁杩斿洖鍓嶅鐞�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Export(`1)">
+ <summary>
+ 瀵煎嚭
+ </summary>
+ <param name="searchDto"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.Print(System.Int64)">
+ <summary>
+ 鑾峰彇鎵撳嵃鏁版嵁 todo: 鏈�绠�鍗曠殑涓婚敭鏌ヨ鍗曟潯鏁版嵁锛屽悗缁疄鐜板崟鎹墦鍗版ā鐗堟ā鍧�
+ </summary>
+ <param name="id"></param>
+ </member>
+ <member name="M:Admin.NET.Application.BaseService`9.GetSearchParameters(`1)">
+ <summary>
+ 灏嗘煡璇to缁勮鎴愭悳绱㈠弬鏁�
+ </summary>
+ <param name="searchDto"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.BaseDto">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.Id">
+ <summary>
+ 涓婚敭Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.CreatedUserId">
+ <summary>
+ 鍒涘缓鑰匢d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.UpdatedUserId">
+ <summary>
+ 淇敼鑰匢d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BaseDto.IsDeleted">
+ <summary>
+ 杞垹闄�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysCacheService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.AddCacheKey(System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.DelByPatternAsync(System.String)">
+ <summary>
+
+ </summary>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.DelCacheKey(System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.Exists(System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetAllCacheKeys">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetAsync``1(System.String)">
+ <summary>
+
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetDataScope(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetMenu(System.Int64,System.String)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetPermission(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.RemovePermission(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.GetStringAsync(System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.RemoveAsync(System.String)">
+ <summary>
+
+ </summary>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.SetAsync(System.String,System.Object)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.SetDataScope(System.Int64,System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="dataScopes"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.SetMenu(System.Int64,System.String,System.Collections.Generic.List{Admin.NET.Application.AntDesignTreeNode})">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <param name="menus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.SetPermission(System.Int64,System.Collections.Generic.List{System.String})">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="permissions"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysCacheService.SetStringAsync(System.String,System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysCacheService">
+ <summary>
+ 绯荤粺缂撳瓨鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.#ctor(Microsoft.Extensions.Caching.Distributed.IDistributedCache)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="cache"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetDataScope(System.Int64)">
+ <summary>
+ 鑾峰彇鏁版嵁鑼冨洿缂撳瓨锛堟満鏋処d闆嗗悎锛�
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.SetDataScope(System.Int64,System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 缂撳瓨鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ </summary>
+ <param name="userId"></param>
+ <param name="dataScopes"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetMenu(System.Int64,System.String)">
+ <summary>
+ 鑾峰彇鑿滃崟缂撳瓨
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.SetMenu(System.Int64,System.String,System.Collections.Generic.List{Admin.NET.Application.AntDesignTreeNode})">
+ <summary>
+ 缂撳瓨鑿滃崟
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <param name="menus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetPermission(System.Int64)">
+ <summary>
+ 鑾峰彇鏉冮檺缂撳瓨锛堟寜閽級
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.RemovePermission(System.Int64)">
+ <summary>
+ 鍒犻櫎鏉冮檺缂撳瓨
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.SetPermission(System.Int64,System.Collections.Generic.List{System.String})">
+ <summary>
+ 缂撳瓨鏉冮檺
+ </summary>
+ <param name="userId"></param>
+ <param name="permissions"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetAllCacheKeys">
+ <summary>
+ 鑾峰彇鎵�鏈夌紦瀛樺叧閿瓧
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.RemoveAsync(System.String)">
+ <summary>
+ 鍒犻櫎鎸囧畾鍏抽敭瀛楃紦瀛�
+ </summary>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.DelByPatternAsync(System.String)">
+ <summary>
+ 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+ </summary>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.SetAsync(System.String,System.Object)">
+ <summary>
+ 璁剧疆缂撳瓨
+ </summary>
+ <param name="cacheKey"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.SetStringAsync(System.String,System.String)">
+ <summary>
+ 璁剧疆缂撳瓨
+ </summary>
+ <param name="cacheKey"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetStringAsync(System.String)">
+ <summary>
+ 鑾峰彇缂撳瓨
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.GetAsync``1(System.String)">
+ <summary>
+ 鑾峰彇缂撳瓨
+ </summary>
+ <typeparam name="T"></typeparam>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.Exists(System.String)">
+ <summary>
+ 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+ </summary>
+ <param name="cacheKey">閿�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.AddCacheKey(System.String)">
+ <summary>
+ 澧炲姞缂撳瓨Key
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCacheService.DelCacheKey(System.String)">
+ <summary>
+
+ </summary>
+ <param name="cacheKey"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ClickWordCaptcha">
+ <summary>
+ 鐐归�夐獙璇佺爜
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ClickWordCaptcha.#ctor(Microsoft.Extensions.Caching.Memory.IMemoryCache)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="memoryCache"></param>
+ </member>
+ <member name="M:Admin.NET.Application.ClickWordCaptcha.CreateCaptchaImage(System.String,System.Int32,System.Int32,System.Int32)">
+ <summary>
+ 鐢熸垚楠岃瘉鐮佸浘鐗�
+ </summary>
+ <param name="code">鏂囧瓧</param>
+ <param name="width">鍥剧墖瀹藉害</param>
+ <param name="height">鍥剧墖楂樺害</param>
+ <param name="point">楠岃瘉鐐规暟閲忥紝涓嶈兘瓒呰繃鏂囧瓧鐨勯暱搴�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ClickWordCaptcha.RandomCode(System.Int32)">
+ <summary>
+ 闅忔満缁樺埗瀛楃涓�
+ </summary>
+ <param name="number"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ClickWordCaptcha.CheckCode(Admin.NET.Application.ClickWordCaptchaInput)">
+ <summary>
+ 楠岃瘉鐮侀獙璇�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.PointPosModel">
+ <summary>
+ 璁板綍姝g‘浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PointPosModel.X">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PointPosModel.Y">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ClickWordCaptchaInput">
+ <summary>
+ 鐐瑰嚮楠岃瘉鐮佽緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaInput.CaptchaType">
+ <summary>
+ 楠岃瘉鐮佺被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaInput.PointJson">
+ <summary>
+ 鍧愭爣鐐归泦鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaInput.Token">
+ <summary>
+ Token
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ClickWordCaptchaResult">
+ <summary>
+ 楠岃瘉鐮佽緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepCode">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepMsg">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaResult.RepData">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaResult.Error">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ClickWordCaptchaResult.Success">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.RepData">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaId">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.ProjectCode">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaType">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaOriginalPath">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaFontType">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaFontSize">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.SecretKey">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.OriginalImageBase64">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.Point">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.JigsawImageBase64">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.WordList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.PointList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.PointJson">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.Token">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.Result">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RepData.CaptchaVerification">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.IClickWordCaptcha">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IClickWordCaptcha.CheckCode(Admin.NET.Application.ClickWordCaptchaInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IClickWordCaptcha.CreateCaptchaImage(System.String,System.Int32,System.Int32,System.Int32)">
+ <summary>
+
+ </summary>
+ <param name="code"></param>
+ <param name="width"></param>
+ <param name="height"></param>
+ <param name="point"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IClickWordCaptcha.RandomCode(System.Int32)">
+ <summary>
+
+ </summary>
+ <param name="number"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.GeneralCaptcha">
+ <summary>
+ 甯歌楠岃瘉鐮�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.GeneralCaptcha.#ctor(Microsoft.Extensions.Caching.Memory.IMemoryCache)">
+ <summary>
+
+ </summary>
+ <param name="memoryCache"></param>
+ </member>
+ <member name="M:Admin.NET.Application.GeneralCaptcha.CreateCaptchaImage(System.Int32)">
+ <summary>
+ 鐢熸垚楠岃瘉鐮佸浘鐗�
+ </summary>
+ <param name="length"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.GeneralCaptcha.CheckCode(Admin.NET.Application.GeneralCaptchaInput)">
+ <summary>
+ 楠岃瘉鐮侀獙璇�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.GeneralCaptchaInput">
+ <summary>
+ 甯歌楠岃瘉鐮佽緭鍏�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GeneralCaptchaInput.CaptchaType">
+ <summary>
+ 楠岃瘉鐮佺被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GeneralCaptchaInput.CaptchaCode">
+ <summary>
+ 楠岃瘉鐮佸瓧绗�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GeneralCaptchaInput.Token">
+ <summary>
+ Token
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.IGeneralCaptcha">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IGeneralCaptcha.CheckCode(Admin.NET.Application.GeneralCaptchaInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IGeneralCaptcha.CreateCaptchaImage(System.Int32)">
+ <summary>
+
+ </summary>
+ <param name="length"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysCodeGenerateConfigService">
+ <summary>
+ 浠g爜鐢熸垚璇︾粏閰嶇疆鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGenConfig},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysCodeGenConfigRep"></param>
+ <param name="sysCodeGenRep"></param>
+ <param name="sysLowCodeRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.List(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+ 浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Update(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+ <summary>
+ 鏇存柊
+ </summary>
+ <param name="inputList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Detail(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+ 璇︽儏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.DelAndAddList(System.Collections.Generic.List{Admin.NET.Application.TableColumnOuput},Admin.NET.Core.SysCodeGen)">
+ <summary>
+ 鎵归噺澧炲姞
+ </summary>
+ <param name="tableColumnOuputList"></param>
+ <param name="codeGenerate"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Add(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+ 澧炲姞
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysCodeGenerateConfigService.Delete(System.Int64)">
+ <summary>
+ 鍒犻櫎
+ </summary>
+ <param name="codeGenId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGen.CodeGenerateService">
+ <summary>
+ 浠g爜鐢熸垚鍣ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysCodeGen},Furion.DatabaseAccessor.IRepository{Furion.Extras.Admin.NET.Entity.SysLowCode},Admin.NET.Application.ICodeGenConfigService,Furion.ViewEngine.IViewEngine,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysCodeGenRep"></param>
+ <param name="sysLowCodeRep"></param>
+ <param name="codeGenConfigService"></param>
+ <param name="viewEngine"></param>
+ <param name="sysMenuRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.QueryCodeGenPageList(Admin.NET.Application.CodeGenPageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.AddCodeGen(Admin.NET.Application.AddCodeGenInput)">
+ <summary>
+ 澧炲姞
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.DeleteCodeGen(System.Collections.Generic.List{Admin.NET.Application.DeleteCodeGenInput})">
+ <summary>
+ 鍒犻櫎
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.UpdateCodeGen(Admin.NET.Application.UpdateCodeGenInput)">
+ <summary>
+ 鏇存柊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.Refresh(System.Int64)">
+ <summary>
+ 鍒锋柊閰嶇疆琛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetCodeGen(Admin.NET.Application.QueryCodeGenInput)">
+ <summary>
+ 璇︽儏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetDatabaseList">
+ <summary>
+ 鑾峰彇鏁版嵁搴撳簱闆嗗悎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTableList(System.String)">
+ <summary>
+ 鑾峰彇鏁版嵁搴撹〃(瀹炰綋)闆嗗悎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetColumnListByTableName(System.String,System.String)">
+ <summary>
+ 鏍规嵁琛ㄥ悕鑾峰彇鍒�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetColumnList(Admin.NET.Application.AddCodeGenInput)">
+ <summary>
+ 鑾峰彇鏁版嵁琛ㄥ垪锛堝疄浣撳睘鎬э級闆嗗悎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.RunLocal(Admin.NET.Core.SysCodeGen)">
+ <summary>
+ 浠g爜鐢熸垚_鏈湴椤圭洰
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.RunDown(System.Int64)">
+ <summary>
+ 浠g爜鐢熸垚_鍘嬬缉鍖呮柟寮忎笅杞�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CommonRun(Admin.NET.Core.SysCodeGen,System.String)">
+ <summary>
+ 浠g爜鐢熸垚
+ </summary>
+ <param name="input"></param>
+ <param name="curGenerateType">200:鐢熸垚鏈湴锛�100锛氱敓鎴愭湰鍦板帇缂╁寘</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreateImportExcelTemplteCode(Admin.NET.Core.SysCodeGen,System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+ <summary>
+ 鍒涘缓瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+ </summary>
+ <param name="input"></param>
+ <param name="tableFieldList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTemplatePathList">
+ <summary>
+ 鑾峰彇妯℃澘鏂囦欢璺緞闆嗗悎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetTargetPathList(Admin.NET.Core.SysCodeGen)">
+ <summary>
+ 璁剧疆鐢熸垚鏂囦欢璺緞
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.LowercaseFirst(System.String)">
+ <summary>
+ 瀛楃涓查瀛楁瘝灏忓啓
+ </summary>
+ <param name="str"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.GetZipPathList(Admin.NET.Core.SysCodeGen)">
+ <summary>
+ 璁剧疆鐢熸垚鏂囦欢璺緞
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreateImportTemplte(Admin.NET.Core.SysCodeGen)">
+ <summary>
+ 鏍规嵁琛ㄥ悕鍒涘缓瀵煎叆妯$増
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.CreatExcel(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig},System.String,System.String)">
+ <summary>
+ 鏍规嵁瀹炰綋绫诲悕 鐢熸垚瀵煎叆excel妯$増
+ </summary>
+ <param name="tableFieldList">浠g爜鐢熸垚閫夋嫨閰嶇疆琛ㄧ殑瀛楁</param>
+ <param name="copayPath"></param>
+ <param name="newPath"></param>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.CodeGenerateService.IsEnumProperty(System.Type,System.String)">
+ <summary>
+ 鏍规嵁灞炴�у悕绉板垽鏂槸鍚︽槸鏋氫妇绫诲瀷
+ </summary>
+ <param name="type"></param>
+ <param name="propertyName"></param>
+ <returns></returns>
+ <exception cref="T:System.ArgumentException"></exception>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGen.ICodeGenService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.AddCodeGen(Admin.NET.Application.AddCodeGenInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.DeleteCodeGen(System.Collections.Generic.List{Admin.NET.Application.DeleteCodeGenInput})">
+ <summary>
+
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetCodeGen(Admin.NET.Application.QueryCodeGenInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetColumnList(Admin.NET.Application.AddCodeGenInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.GetTableList(System.String)">
+ <summary>
+
+ </summary>
+ <param name="dbContextLocatorName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.QueryCodeGenPageList(Admin.NET.Application.CodeGenPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.RunLocal(Admin.NET.Core.SysCodeGen)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.RunDown(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.CodeGen.ICodeGenService.UpdateCodeGen(Admin.NET.Application.UpdateCodeGenInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGenConfig">
+ <summary>
+ 浠g爜鐢熸垚璇︾粏閰嶇疆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.CodeGen">
+ <summary>
+ 鎵�灞炵敓鎴愪富琛�
+ </summary>
+
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.Id">
+ <summary>
+ 涓婚敭Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.CodeGenId">
+ <summary>
+ 浠g爜鐢熸垚涓昏〃ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.ColumnName">
+ <summary>
+ 鏁版嵁搴撳瓧娈靛悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.OriginalColumnName">
+ <summary>
+ 鏁版嵁搴撳瓧娈靛悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.LowerColumnName">
+ <summary>
+ 鏁版嵁搴撳瓧娈靛悕(棣栧瓧姣嶅皬鍐�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.ColumnComment">
+ <summary>
+ 瀛楁鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.NetType">
+ <summary>
+ .NET绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.DtoNetType">
+ <summary>
+ .NET绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLable">
+ <summary>
+ .NET绫诲瀷鏄惁鏄�肩被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLableForQueryInput">
+ <summary>
+ 鏌ヨ鍙傛暟鍙负null涓撶敤
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.NetTypeIsNullLableForAddEditOutParam">
+ <summary>
+ 銆愭柊澧炪�佺紪杈戙�佽繑鍥炴煡璇㈢粨鏋滅被銆� 鍙傛暟鍙负null涓撶敤
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.EffectType">
+ <summary>
+ 浣滅敤绫诲瀷锛堝瓧鍏革級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.FkEntityName">
+ <summary>
+ 澶栭敭瀹炰綋鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.LowerFkEntityName">
+ <summary>
+ 澶栭敭瀹炰綋鍚嶇О(棣栧瓧姣嶅皬鍐�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.FkColumnName">
+ <summary>
+ 澶栭敭鏄剧ず瀛楁
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.LowerFkColumnName">
+ <summary>
+ 澶栭敭鏄剧ず瀛楁(棣栧瓧姣嶅皬鍐�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.FkColumnNetType">
+ <summary>
+ 澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.DictTypeCode">
+ <summary>
+ 瀛楀吀code
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherRetract">
+ <summary>
+ 鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherRequired">
+ <summary>
+ 鏄惁蹇呭~锛堝瓧鍏革級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.QueryWhether">
+ <summary>
+ 鏄惁鏄煡璇㈡潯浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.QueryType">
+ <summary>
+ 鏌ヨ鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherTable">
+ <summary>
+ 鍒楄〃鏄剧ず
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherOrderBy">
+ <summary>
+ 鍒楄〃鎺掑簭鏄剧ず
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherAddUpdate">
+ <summary>
+ 澧炴敼
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.ColumnKey">
+ <summary>
+ 涓诲閿�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.DataType">
+ <summary>
+ 鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherCommon">
+ <summary>
+ 鏄惁鏄�氱敤瀛楁
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.ShowTitleMinWidth">
+ <summary>
+ 椤甸潰鍒楁樉绀烘渶灏忓搴�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenConfig.WhetherUnionKey">
+ <summary>
+ 鏄惁鑱斿悎涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGenPageInput">
+ <summary>
+ 浠g爜鐢熸垚鍙傛暟绫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenPageInput.BusName">
+ <summary>
+ 涓氬姟鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenPageInput.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddCodeGenInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.LowCodeId">
+ <summary>
+ 浣庝唬鐮佹ā鍧楁潵婧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.BusName">
+ <summary>
+ 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.ModuleName">
+ <summary>
+ 妯″潡璺緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.IsOnlyQuery">
+ <summary>
+ 鏄惁鍙槸鏌ヨ
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.FrontProName">
+ <summary>
+ 鍓嶇椤圭洰鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.MenuPid">
+ <summary>
+ 鑿滃崟鐖剁骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.TablePrefix">
+ <summary>
+ 鏄惁绉婚櫎琛ㄥ墠缂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.TableComment">
+ <summary>
+ 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddCodeGenInput.IsWhetherImport">
+ <summary>
+ 鏄惁鏀寔瀵煎叆
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteCodeGenInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateCodeGenInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.Id">
+ <summary>
+ 浠g爜鐢熸垚鍣↖d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.BusName">
+ <summary>
+ 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.ModuleName">
+ <summary>
+ 妯″潡璺緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.IsOnlyQuery">
+ <summary>
+ 鏄惁鍙槸鏌ヨ
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.FrontProName">
+ <summary>
+ 鍓嶇椤圭洰鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.MenuPid">
+ <summary>
+ 鑿滃崟鐖剁骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.TablePrefix">
+ <summary>
+ 鏄惁绉婚櫎琛ㄥ墠缂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.TableComment">
+ <summary>
+ 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateCodeGenInput.IsWhetherImport">
+ <summary>
+ 鏄惁鏀寔瀵煎叆
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryCodeGenInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGenModel">
+ <summary>
+ 浠g爜鐢熸垚鍙傛暟绫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.Id">
+ <summary>
+ 浠g爜鐢熸垚鍣↖d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.ProName">
+ <summary>
+ 绋嬪簭闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.QueryWhetherList">
+ <summary>
+ 鍓嶇鏌ヨ鏉′欢闆嗗悎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.TableField">
+ <summary>
+ 琛ㄥ瓧娈甸泦鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.TablePrefix">
+ <summary>
+ 鏄惁绉婚櫎琛ㄥ墠缂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.PackageName">
+ <summary>
+ 鍖呭悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.BusName">
+ <summary>
+ 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.TableComment">
+ <summary>
+ 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenModel.MenuPid">
+ <summary>
+ 鑿滃崟鐖剁骇
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CodeGenOutput">
+ <summary>
+ 浠g爜鐢熸垚鍙傛暟绫�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.Id">
+ <summary>
+ 浠g爜鐢熸垚鍣↖d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.TablePrefix">
+ <summary>
+ 鏄惁绉婚櫎琛ㄥ墠缂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.PackageName">
+ <summary>
+ 鍖呭悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.BusName">
+ <summary>
+ 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.TableComment">
+ <summary>
+ 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CodeGenOutput.MenuPid">
+ <summary>
+ 鑿滃崟鐖剁骇
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DatabaseOutput">
+ <summary>
+ 鏁版嵁搴撳簱鍒楄〃鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DatabaseOutput.DatabaseName">
+ <summary>
+ 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DatabaseOutput.CreateTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DatabaseOutput.UpdateTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DatabaseOutput.DatabaseComment">
+ <summary>
+ 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TableColumnOuput">
+ <summary>
+ 鏁版嵁搴撹〃鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.ColumnName">
+ <summary>
+ 瀛楁鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.IsNullable">
+ <summary>
+ 鏄惁鍙负NULL 銆怑ditby shaocx,2024-04-20銆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.DataType">
+ <summary>
+ 鏁版嵁搴撲腑绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.NetType">
+ <summary>
+ .NET瀛楁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.ColumnComment">
+ <summary>
+ 瀛楁鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.ColumnKey">
+ <summary>
+ 涓诲閿�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableColumnOuput.ShowTitleMinWidth">
+ <summary>
+ 椤甸潰鍒楁樉绀烘渶灏忓搴�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TableOutput">
+ <summary>
+ 鏁版嵁搴撹〃鍒楄〃鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.DatabaseName">
+ <summary>
+ 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.DatabaseComment">
+ <summary>
+ 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.TableName">
+ <summary>
+ 琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.CreateTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.UpdateTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TableOutput.TableComment">
+ <summary>
+ 琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.XnCodeGenOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.TablePrefix">
+ <summary>
+ 鏄惁绉婚櫎琛ㄥ墠缂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.TableName">
+ <summary>
+ 鏁版嵁搴撹〃鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.TableNameAss">
+ <summary>
+ 鏁版嵁搴撹〃鍚嶏紙缁忚繃缁勮鐨勶級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.PackageName">
+ <summary>
+ 浠g爜鍖呭悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.CreateTimestring">
+ <summary>
+ 鐢熸垚鏃堕棿锛坰tring绫诲瀷鐨勶級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.ConfigList">
+ <summary>
+ 鏁版嵁搴撹〃涓瓧娈甸泦鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.XnCodeGenOutput.BusName">
+ <summary>
+ 涓氬姟鍚�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ICodeGenConfigService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.Add(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.DelAndAddList(System.Collections.Generic.List{Admin.NET.Application.TableColumnOuput},Admin.NET.Core.SysCodeGen)">
+ <summary>
+
+ </summary>
+ <param name="tableColumnOuputList"></param>
+ <param name="codeGenerate"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.Delete(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="codeGenId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.Detail(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.List(Admin.NET.Application.CodeGenConfig)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ICodeGenConfigService.Update(System.Collections.Generic.List{Admin.NET.Application.CodeGenConfig})">
+ <summary>
+
+ </summary>
+ <param name="inputList"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ConfigPageInput">
+ <summary>
+ 鍙傛暟閰嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ConfigPageInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ConfigPageInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ConfigPageInput.GroupCode">
+ <summary>
+ 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddConfigInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.Value">
+ <summary>
+ 灞炴�у��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.SysFlag">
+ <summary>
+ 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddConfigInput.GroupCode">
+ <summary>
+ 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteConfigInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateConfigInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Id">
+ <summary>
+ 搴旂敤Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Value">
+ <summary>
+ 灞炴�у��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.SysFlag">
+ <summary>
+ 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateConfigInput.GroupCode">
+ <summary>
+ 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryConfigInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysConfigService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.AddConfig(Admin.NET.Application.AddConfigInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.DeleteConfig(Admin.NET.Application.DeleteConfigInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.GetConfig(Admin.NET.Application.QueryConfigInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.GetConfigList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.QueryConfigPageList(Admin.NET.Application.ConfigPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.UpdateConfig(Admin.NET.Application.UpdateConfigInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.GetDemoEnvFlag">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.GetCaptchaOpenFlag">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.UpdateConfigCache(System.String,System.String)">
+ <summary>
+
+ </summary>
+ <param name="code"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysConfigService.GetEnableSingleLoginFlag">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysConfigService">
+ <summary>
+ 绯荤粺鍙傛暟閰嶇疆鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysConfig},Admin.NET.Application.ISysCacheService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysConfigRep"></param>
+ <param name="sysCacheService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.QueryConfigPageList(Admin.NET.Application.ConfigPageInput)">
+ <summary>
+ 鍒嗛〉鑾峰彇绯荤粺鍙傛暟閰嶇疆
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetConfigList">
+ <summary>
+ 鑾峰彇绯荤粺鍙傛暟閰嶇疆鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.AddConfig(Admin.NET.Application.AddConfigInput)">
+ <summary>
+ 澧炲姞绯荤粺鍙傛暟閰嶇疆
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.DeleteConfig(Admin.NET.Application.DeleteConfigInput)">
+ <summary>
+ 鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.UpdateConfig(Admin.NET.Application.UpdateConfigInput)">
+ <summary>
+ 鏇存柊绯荤粺鍙傛暟閰嶇疆
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetConfig(Admin.NET.Application.QueryConfigInput)">
+ <summary>
+ 鑾峰彇绯荤粺鍙傛暟閰嶇疆
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetConfigCache(System.String)">
+ <summary>
+ 鑾峰彇閰嶇疆淇℃伅
+ </summary>
+ <param name="code"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.UpdateConfigCache(System.String,System.String)">
+ <summary>
+ 鏇存柊閰嶇疆缂撳瓨
+ </summary>
+ <param name="code"></param>
+ <param name="value"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetDemoEnvFlag">
+ <summary>
+ 鑾峰彇婕旂ず鐜寮�鍏虫槸鍚﹀紑鍚紝榛樿涓篺alse
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetCaptchaOpenFlag">
+ <summary>
+ 鑾峰彇楠岃瘉鐮佸紑鍏虫爣璇�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysConfigService.GetEnableSingleLoginFlag">
+ <summary>
+ 鑾峰彇鍗曠敤鎴风櫥褰曞紑鍏虫爣璇�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.DictDataPageInput">
+ <summary>
+ 瀛楀吀鍊煎弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataPageInput.TypeId">
+ <summary>
+ 瀛楀吀绫诲瀷Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataPageInput.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataPageInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryDictDataListInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.QueryDictDataListInput.TypeId">
+ <summary>
+ 瀛楀吀绫诲瀷Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryDictDataListByCodeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.QueryDictDataListByCodeInput.Code">
+ <summary>
+ 瀛楀吀绫诲瀷Code
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddDictDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.TypeId">
+ <summary>
+ 瀛楀吀绫诲瀷Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictDataInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteDictDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateDictDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Id">
+ <summary>
+ 瀛楀吀鍊糏d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.TypeId">
+ <summary>
+ 瀛楀吀绫诲瀷Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictDataInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChageStateDictDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChageStateDictDataInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryDictDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DictDataOutput">
+ <summary>
+ 瀛楀吀鍊煎弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Id">
+ <summary>
+ 瀛楀吀Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.TypeId">
+ <summary>
+ 瀛楀吀绫诲瀷Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictDataOutput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DictTreeOutput">
+ <summary>
+ 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑鏍�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTreeOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTreeOutput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTreeOutput.Code">
+ <summary>
+ 缂栫爜-瀵瑰簲瀛楀吀鍊肩殑缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTreeOutput.Name">
+ <summary>
+ 鍚嶇О-瀵瑰簲瀛楀吀鍊肩殑value
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTreeOutput.Children">
+ <summary>
+ 瀛愯妭鐐归泦鍚�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DictTypePageInput">
+ <summary>
+ 瀛楀吀绫诲瀷鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTypePageInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DictTypePageInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddDictTypeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictTypeInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictTypeInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictTypeInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictTypeInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDictTypeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteDictTypeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateDictTypeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateDictTypeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChangeStateDictTypeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeStateDictTypeInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeStateDictTypeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DropDownDictTypeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DropDownDictTypeInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryDictTypeInfoInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysDictDataService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.AddDictData(Admin.NET.Application.AddDictDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.ChangeDictDataStatus(Admin.NET.Application.ChageStateDictDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.DeleteByTypeId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="dictTypeId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.DeleteDictData(Admin.NET.Application.DeleteDictDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.GetDictData(Admin.NET.Application.QueryDictDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.GetDictDataList(Admin.NET.Application.QueryDictDataListInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.GetDictDataListByDictTypeId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="dictTypeId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.QueryDictDataPageList(Admin.NET.Application.DictDataPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictDataService.UpdateDictData(Admin.NET.Application.UpdateDictDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysDictTypeService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.AddDictType(Admin.NET.Application.AddDictTypeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.ChangeDictTypeStatus(Admin.NET.Application.ChangeStateDictTypeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.DeleteDictType(Admin.NET.Application.DeleteDictTypeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTree">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictType(Admin.NET.Application.QueryDictTypeInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTypeDropDown(Admin.NET.Application.DropDownDictTypeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.GetDictTypeList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.QueryDictTypePageList(Admin.NET.Application.DictTypePageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysDictTypeService.UpdateDictType(Admin.NET.Application.UpdateDictTypeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysDictDataService">
+ <summary>
+ 瀛楀吀鍊兼湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysDictDataRep"></param>
+ <param name="sysDictTypeRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.QueryDictDataPageList(Admin.NET.Application.DictDataPageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀛楀吀鍊�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataList(Admin.NET.Application.QueryDictDataListInput)">
+ <summary>
+ 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataListByCode(Admin.NET.Application.QueryDictDataListByCodeInput)">
+ <summary>
+ 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.AddDictData(Admin.NET.Application.AddDictDataInput)">
+ <summary>
+ 澧炲姞瀛楀吀鍊�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.DeleteDictData(Admin.NET.Application.DeleteDictDataInput)">
+ <summary>
+ 鍒犻櫎瀛楀吀鍊�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.UpdateDictData(Admin.NET.Application.UpdateDictDataInput)">
+ <summary>
+ 鏇存柊瀛楀吀鍊�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.GetDictData(Admin.NET.Application.QueryDictDataInput)">
+ <summary>
+ 瀛楀吀鍊艰鎯�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.ChangeDictDataStatus(Admin.NET.Application.ChageStateDictDataInput)">
+ <summary>
+ 淇敼瀛楀吀鍊肩姸鎬�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.GetDictDataListByDictTypeId(System.Int64)">
+ <summary>
+ 鏍规嵁瀛楀吀绫诲瀷Id鑾峰彇瀛楀吀鍊奸泦鍚�
+ </summary>
+ <param name="dictTypeId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictDataService.DeleteByTypeId(System.Int64)">
+ <summary>
+ 鍒犻櫎瀛楀吀涓嬫墍鏈夊��
+ </summary>
+ <param name="dictTypeId"></param>
+ </member>
+ <member name="T:Admin.NET.Application.SysDictTypeService">
+ <summary>
+ 瀛楀吀绫诲瀷鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.#ctor(Admin.NET.Application.ISysDictDataService,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysDictDataService"></param>
+ <param name="sysDictTypeRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.QueryDictTypePageList(Admin.NET.Application.DictTypePageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTypeList">
+ <summary>
+ 鑾峰彇瀛楀吀绫诲瀷鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTypeDropDown(Admin.NET.Application.DropDownDictTypeInput)">
+ <summary>
+ 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏稿��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.AddDictType(Admin.NET.Application.AddDictTypeInput)">
+ <summary>
+ 娣诲姞瀛楀吀绫诲瀷
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.DeleteDictType(Admin.NET.Application.DeleteDictTypeInput)">
+ <summary>
+ 鍒犻櫎瀛楀吀绫诲瀷
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.UpdateDictType(Admin.NET.Application.UpdateDictTypeInput)">
+ <summary>
+ 鏇存柊瀛楀吀绫诲瀷
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.GetDictType(Admin.NET.Application.QueryDictTypeInfoInput)">
+ <summary>
+ 瀛楀吀绫诲瀷璇︽儏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.ChangeDictTypeStatus(Admin.NET.Application.ChangeStateDictTypeInput)">
+ <summary>
+ 鏇存柊瀛楀吀绫诲瀷鐘舵��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysDictTypeService.GetDictTree">
+ <summary>
+ 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑瀛楀吀鏍�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.EmpExtOrgPosOutput">
+ <summary>
+ 闄勫睘鏈烘瀯鍜岃亴浣嶅弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgId">
+ <summary>
+ 闄勫睘鏈烘瀯id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgCode">
+ <summary>
+ 闄勫睘鏈烘瀯缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.OrgName">
+ <summary>
+ 闄勫睘鏈烘瀯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosId">
+ <summary>
+ 闄勫睘鑱屼綅id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosCode">
+ <summary>
+ 闄勫睘鑱屼綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpExtOrgPosOutput.PosName">
+ <summary>
+ 闄勫睘鑱屼綅鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.EmpOutput">
+ <summary>
+ 鍛樺伐淇℃伅鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput.JobNum">
+ <summary>
+ 宸ュ彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput.OrgId">
+ <summary>
+ 鏈烘瀯id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput.OrgName">
+ <summary>
+ 鏈烘瀯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput.ExtOrgPos">
+ <summary>
+ 鏈烘瀯涓庤亴浣嶄俊鎭�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput.Positions">
+ <summary>
+ 鑱屼綅淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.EmpOutput2">
+ <summary>
+ 鍛樺伐淇℃伅鍙傛暟2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.Id">
+ <summary>
+ 鍛樺伐Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.JobNum">
+ <summary>
+ 宸ュ彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.OrgId">
+ <summary>
+ 鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.OrgName">
+ <summary>
+ 鏈烘瀯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.ExtIds">
+ <summary>
+ 闄勫睘鏈烘瀯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpOutput2.PosIdList">
+ <summary>
+ 鑱屼綅闆嗗悎
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.EmpPosOutput">
+ <summary>
+ 鍛樺伐鑱屼綅鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpPosOutput.PosId">
+ <summary>
+ 鑱屼綅Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpPosOutput.PosCode">
+ <summary>
+ 鑱屼綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EmpPosOutput.PosName">
+ <summary>
+ 鑱屼綅鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysEmpExtOrgPosService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{Admin.NET.Application.EmpExtOrgPosOutput})">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <param name="extIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.GetEmpExtOrgPosList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.HasExtOrgEmp(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpExtOrgPosService.HasExtPosEmp(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="posId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysEmpPosService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <param name="posIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpPosService.DeleteEmpPosInfoByUserId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpPosService.GetEmpPosList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpPosService.HasPosEmp(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="posId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysEmpService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.AddOrUpdate(Admin.NET.Application.EmpOutput2)">
+ <summary>
+
+ </summary>
+ <param name="sysEmpParam"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.DeleteEmpInfoByUserId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.GetEmpInfo(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.GetEmpOrgId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.HasOrgEmp(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.UpdateEmpOrgInfo(System.Int64,System.String)">
+ <summary>
+
+ </summary>
+ <param name="orgId"></param>
+ <param name="orgName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEmpService.HasOrgEmp(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="orgIds"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysEmpExtOrgPosService">
+ <summary>
+ 鍛樺伐闄勫睘鏈烘瀯鍜岃亴浣嶆湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmpExtOrgPos})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysEmpExtOrgPosRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{Admin.NET.Application.EmpExtOrgPosOutput})">
+ <summary>
+ 淇濆瓨鎴栫紪杈戦檮灞炴満鏋勭浉鍏充俊鎭�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.GetEmpExtOrgPosList(System.Int64)">
+ <summary>
+ 鑾峰彇闄勫睘鏈烘瀯鍜岃亴浣嶄俊鎭�
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.HasExtOrgEmp(System.Int64)">
+ <summary>
+ 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ラ檮灞炴満鏋勪笅鏄惁鏈夊憳宸�
+ </summary>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.HasExtPosEmp(System.Int64)">
+ <summary>
+ 鏍规嵁鑱屼綅Id鍒ゆ柇璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+ </summary>
+ <param name="posId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(System.Int64)">
+ <summary>
+ 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysEmpPosService">
+ <summary>
+ 鍛樺伐鑱屼綅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmpPos})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysEmpPosRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpPosService.AddOrUpdate(System.Int64,System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 澧炲姞鎴栫紪杈戝憳宸ヨ亴浣嶇浉鍏充俊鎭�
+ </summary>
+ <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+ <param name="posIdList">鑱屼綅id闆嗗悎</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpPosService.GetEmpPosList(System.Int64)">
+ <summary>
+ 鑾峰彇鎵�灞炶亴浣嶄俊鎭�
+ </summary>
+ <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpPosService.HasPosEmp(System.Int64)">
+ <summary>
+ 鏍规嵁鑱屼綅Id鍒ゆ柇璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+ </summary>
+ <param name="posId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpPosService.DeleteEmpPosInfoByUserId(System.Int64)">
+ <summary>
+ 鏍规嵁鍛樺伐Id鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysEmpService">
+ <summary>
+ 鍛樺伐鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmp},Admin.NET.Application.ISysEmpExtOrgPosService,Admin.NET.Application.ISysEmpPosService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysEmpRep"></param>
+ <param name="sysEmpExtOrgPosService"></param>
+ <param name="sysEmpPosService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.GetEmpInfo(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鍛樺伐鐩稿叧淇℃伅锛堝寘鎷櫥褰曪級
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.AddOrUpdate(Admin.NET.Application.EmpOutput2)">
+ <summary>
+ 澧炲姞鎴栫紪杈戝憳宸ョ浉鍏充俊鎭�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.UpdateEmpOrgInfo(System.Int64,System.String)">
+ <summary>
+ 淇敼鍛樺伐鐩稿叧鏈烘瀯淇℃伅
+ </summary>
+ <param name="orgId"></param>
+ <param name="orgName"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.HasOrgEmp(System.Int64)">
+ <summary>
+ 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夊憳宸�
+ </summary>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.DeleteEmpInfoByUserId(System.Int64)">
+ <summary>
+ 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸ヨ〃淇℃伅
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.GetEmpOrgId(System.Int64)">
+ <summary>
+ 鑾峰彇鍛樺伐鏈烘瀯Id
+ </summary>
+ <param name="empId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEmpService.HasOrgEmp(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鑾峰彇瀛愭満鏋勭敤鎴�
+ </summary>
+ <param name="orgIds"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.EnumDataInput">
+ <summary>
+ 鏋氫妇杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EnumDataInput.EnumName">
+ <summary>
+ 鏋氫妇绫诲瀷鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryEnumDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.QueryEnumDataInput.EntityName">
+ <summary>
+ 瀹炰綋鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.QueryEnumDataInput.FieldName">
+ <summary>
+ 瀛楁鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.EnumDataOutput">
+ <summary>
+ 鏋氫妇杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EnumDataOutput.Code">
+ <summary>
+ 瀛楀吀Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.EnumDataOutput.Value">
+ <summary>
+ 瀛楀吀鍊�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysEnumDataService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataList(Admin.NET.Application.EnumDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysEnumDataService">
+ <summary>
+ 鏋氫妇鍊兼湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataList(Admin.NET.Application.EnumDataInput)">
+ <summary>
+ 閫氳繃鏋氫妇绫诲瀷鑾峰彇鏋氫妇鍊奸泦鍚�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysEnumDataService.GetEnumDataListByField(Admin.NET.Application.QueryEnumDataInput)">
+ <summary>
+ 閫氳繃瀹炰綋瀛楁绫诲瀷鑾峰彇鐩稿叧闆嗗悎锛堢洰鍓嶄粎鏀寔鏋氫妇绫诲瀷锛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateDto">
+ <summary>
+ Excel妯℃澘杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateSearch">
+ <summary>
+ Excel妯℃澘鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearch.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateSearchNonPage">
+ <summary>
+ Excel妯℃澘涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateSearchNonPage.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateInput">
+ <summary>
+ Excel妯℃澘杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateInput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddSysExcelTemplateInput">
+ <summary>
+ Excel妯℃澘娣诲姞杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddSysExcelTemplateInput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateSysExcelTemplateStatusInput">
+ <summary>
+ 鏇存柊Excel妯℃澘鐘舵�佽緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateSysExcelTemplateStatusInput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteSysExcelTemplateInput">
+ <summary>
+ Excel妯℃澘鍒犻櫎杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateSysExcelTemplateInput">
+ <summary>
+ Excel妯℃澘鏇存柊杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateSysExcelTemplateInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QuerySysExcelTemplateInput">
+ <summary>
+ Excel妯℃澘鏌ヨ杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateOutput">
+ <summary>
+ Excel妯℃澘杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Name">
+ <summary>
+ 妯℃澘鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.AppName">
+ <summary>
+ 鎵�灞炲簲鐢�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.TemplateFileName">
+ <summary>
+ 妯℃澘鏂囦欢鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.UnionUniqueFields">
+ <summary>
+ 鍞竴瀛楁闆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.HeadStartLine">
+ <summary>
+ 琛ㄥご寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.DataStartLine">
+ <summary>
+ 鏁版嵁寮�濮嬭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Status">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SysExcelTemplateOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysExcelTemplateService">
+ <summary>
+ Excel妯℃澘杈撳嚭鏈嶅姟鎺ュ彛
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.AddAsync(Admin.NET.Application.AddSysExcelTemplateInput)">
+ <summary>
+ 娣诲姞Excel妯℃澘
+ </summary>
+ <param name="input">Excel妯℃澘娣诲姞鍙傛暟</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.DeleteAsync(Admin.NET.Application.DeleteSysExcelTemplateInput)">
+ <summary>
+ 鍒犻櫎Excel妯℃澘
+ </summary>
+ <param name="input">Excel妯℃澘鍒犻櫎鍙傛暟</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetAsync(Admin.NET.Application.QuerySysExcelTemplateInput)">
+ <summary>
+ 鑾峰彇鍗曚釜Excel妯℃澘
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>Excel妯℃澘瀹炰緥</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ListAsync(Admin.NET.Application.SysExcelTemplateInput)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈡墍鏈塃xcel妯℃澘鍒楄〃
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.PageAsync(Admin.NET.Application.SysExcelTemplateSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨExcel妯℃澘鍒楄〃
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ListNonPageAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.UpdateAsync(Admin.NET.Application.UpdateSysExcelTemplateInput)">
+ <summary>
+ 鏇存柊Excel妯℃澘
+ </summary>
+ <param name="input">Excel妯℃澘鏇存柊鍙傛暟</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+ <summary>
+ 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage,System.String)">
+ <summary>
+ 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <param name="appName"></param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ChangeSysExcelTemplateStatusAsync(Admin.NET.Application.UpdateSysExcelTemplateStatusInput)">
+ <summary>
+ 淇敼Excel妯℃澘鐘舵��
+ </summary>
+ <param name="input">Excel妯℃澘鐘舵�佸弬鏁�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync(System.String,System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+ </summary>
+ <param name="className">绫诲悕</param>
+ <param name="version">鐗堟湰鍙�</param>
+ <returns>Excel妯℃澘瀹炰緥</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍔熻兘
+ </summary>
+ <param name="file"> Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.GetColumnListAsync(System.String)">
+ <summary>
+ 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ </summary>
+ <param name="className">瀹炰綋鍚嶇О</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseTemplateHintAsync(System.String)">
+ <summary>
+ 鑾峰彇妯℃澘鎻愮ず瀛楃
+ </summary>
+ <param name="className">瀹炰綋鍚嶇О</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.QueryUniqueColumns(System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈠敮涓�绫诲瀷
+ </summary>
+ <param name="className">绫诲瀷鍚�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.QueryTable(System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+ </summary>
+ <param name="className">绫诲瀷鍚�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseSeedData(System.String,System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+ </summary>
+ <param name="className">绫诲悕</param>
+ <param name="prefix">鍓嶇紑</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysExcelTemplateService.ParseId(System.String)">
+ <summary>
+ 鏍规嵁鍓嶇紑鑾峰彇鏈�澶D鍔�1
+ </summary>
+ <param name="prefix">鍓嶇紑</param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysExcelTemplateService">
+ <summary>
+ Excel妯℃澘鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysExcelTemplate,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ Excel妯℃澘鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysExcelTemplateRep"></param>
+ <param name="sysDictTypeRep"></param>
+ <param name="sysDictDataRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.PageAsync(Admin.NET.Application.SysExcelTemplateSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨExcel妯℃澘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ListNonPageAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.AddAsync(Admin.NET.Application.AddSysExcelTemplateInput)">
+ <summary>
+ 澧炲姞Excel妯℃澘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.DeleteAsync(Admin.NET.Application.DeleteSysExcelTemplateInput)">
+ <summary>
+ 鍒犻櫎Excel妯℃澘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.UpdateAsync(Admin.NET.Application.UpdateSysExcelTemplateInput)">
+ <summary>
+ 鏇存柊Excel妯℃澘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ChangeSysExcelTemplateStatusAsync(Admin.NET.Application.UpdateSysExcelTemplateStatusInput)">
+ <summary>
+ 淇敼Excel妯℃澘鐘舵��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.GetAsync(Admin.NET.Application.QuerySysExcelTemplateInput)">
+ <summary>
+ 鑾峰彇Excel妯℃澘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ListAsync(Admin.NET.Application.SysExcelTemplateInput)">
+ <summary>
+ 鑾峰彇Excel妯℃澘鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage)">
+ <summary>
+ 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ToExcelAsync(Admin.NET.Application.SysExcelTemplateSearchNonPage,System.String)">
+ <summary>
+ 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ <param name="appName"></param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync(System.String,System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+ </summary>
+ <param name="className">绫诲悕</param>
+ <param name="version">鐗堟湰鍙�</param>
+ <returns>Excel妯℃澘瀹炰緥</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ 瀵煎叆Excel妯℃澘鏂囦欢
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.GetColumnListAsync(System.String)">
+ <summary>
+ 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ </summary>
+ <param name="className">瀹炰綋鍚嶇О</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.QueryUniqueColumns(System.String)">
+ <summary>
+ 鎹被鍚嶆煡璇㈠叾鏌ヨ鏍囬噺绫诲瀷
+ </summary>
+ <param name="className">绫诲悕</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.QueryTable(System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+ </summary>
+ <param name="className">绫诲瀷鍚�</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseSeedData(System.String,System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+ </summary>
+ <param name="className">绫诲悕</param>
+ <param name="prefix">鍓嶇紑</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseTemplateHintAsync(System.String)">
+ <summary>
+ 鑾峰彇妯℃澘鎻愮ず瀛楃
+ </summary>
+ <param name="className">瀹炰綋鍚嶇О</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysExcelTemplateService.ParseId(System.String)">
+ <summary>
+ 鏍规嵁绫诲悕鑾峰彇鏈�澶D鍔�1
+ </summary>
+ <param name="prefix">鍓嶇紑</param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.FilePageInput">
+ <summary>
+ 涓婁紶鏂囦欢鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FilePageInput.FileLocation">
+ <summary>
+ 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FilePageInput.FileBucket">
+ <summary>
+ 鏂囦欢浠撳簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FilePageInput.FileOriginName">
+ <summary>
+ 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteFileInfoInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryFileInfoInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FileOutput">
+ <summary>
+ 涓婁紶鏂囦欢鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.Id">
+ <summary>
+ 鏂囦欢Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileLocation">
+ <summary>
+ 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileBucket">
+ <summary>
+ 鏂囦欢浠撳簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileOriginName">
+ <summary>
+ 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileSuffix">
+ <summary>
+ 鏂囦欢鍚庣紑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileSizeKb">
+ <summary>
+ 鏂囦欢澶у皬kb
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileSizeInfo">
+ <summary>
+ 鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FileObjectName">
+ <summary>
+ 瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FileOutput.FilePath">
+ <summary>
+ 瀛樺偍璺緞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.KFormFileOutput">
+ <summary>
+ k-form-design鎵�闇�鍙傛暟瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.KFormFileOutput.code">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.KFormFileOutput.Data">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.KFormFileIrem">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.KFormFileIrem.FileId">
+ <summary>
+ 鏂囦欢ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.KFormFileIrem.Url">
+ <summary>
+ 鏂囦欢涓嬭浇鍦板潃
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysFileService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.DeleteFileInfo(Admin.NET.Application.DeleteFileInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.DownloadFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.GetFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.GetFileInfoList(Admin.NET.Application.FileOutput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.PreviewFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.QueryFileInfoPageList(Admin.NET.Application.FilePageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.UploadFileAvatar(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.UploadFileDefault(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.UploadFileDocument(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.UploadFileShop(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysFileService">
+ <summary>
+ 鏂囦欢鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysFile},Microsoft.Extensions.Configuration.IConfiguration,OnceMi.AspNetCore.OSS.IOSSServiceFactory)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysFileInfoRep"></param>
+ <param name="configuration"></param>
+ <param name="oSSServiceFactory"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.QueryFileInfoPageList(Admin.NET.Application.FilePageInput)">
+ <summary>
+ 鍒嗛〉鑾峰彇鏂囦欢鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.GetFileInfoList(Admin.NET.Application.FileOutput)">
+ <summary>
+ 鑾峰彇鏂囦欢鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.DeleteFileInfo(Admin.NET.Application.DeleteFileInfoInput)">
+ <summary>
+ 鍒犻櫎鏂囦欢
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.GetFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+ 鑾峰彇鏂囦欢璇︽儏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.PreviewFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+ 棰勮鏂囦欢
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFileDefault(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 涓婁紶鏂囦欢
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.KFormUploadFileDefault(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+ <summary>
+ 涓婁紶鏂囦欢(k-form-design)
+ </summary>
+ <param name="file"></param>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.DownloadFileInfo(Admin.NET.Application.QueryFileInfoInput)">
+ <summary>
+ 涓嬭浇鏂囦欢
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFileAvatar(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 涓婁紶澶村儚
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFileDocument(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 涓婁紶鏂囨。
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFileShop(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 涓婁紶鍟嗗簵鍥剧墖
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String)">
+ <summary>
+ 涓婁紶鏂囦欢
+ </summary>
+ <param name="file"></param>
+ <param name="key"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysFileService.UploadFile(Microsoft.AspNetCore.Http.IFormFile,System.String,Admin.NET.Core.FileLocation)">
+ <summary>
+ 涓婁紶鏂囦欢
+ </summary>
+ <param name="file">鏂囦欢</param>
+ <param name="key">瀵硅薄瀛樺偍閿�</param>
+ <param name="fileLocation">鏂囦欢瀛樺偍浣嶇疆</param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.FormAddDto">
+ <summary>
+ 琛ㄥ崟娣诲姞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormAddDto.Title">
+ <summary>
+ 琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormAddDto.TypeId">
+ <summary>
+ 琛ㄥ崟绫诲瀷ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormAddDto.FormJson">
+ <summary>
+ form琛ㄥ崟Json
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormAddDto.Publish">
+ <summary>
+ 鏄惁鍙戝竷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormAddDto.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormDto">
+ <summary>
+ 琛ㄥ崟杈撳嚭Dto
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.FormDto.#ctor">
+ <summary>
+ 鏃犲弬鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.FormDto.#ctor(Admin.NET.Application.FormDto)">
+ <summary>
+ 鏈夊弬鏋勯�犲嚱鏁�
+ </summary>
+ <param name="formDto"></param>
+ </member>
+ <member name="M:Admin.NET.Application.FormDto.#ctor(System.Int64,System.String,System.String,System.Boolean,System.Int64,System.String,System.Int32,System.String,System.Nullable{System.Int64},System.Nullable{System.DateTimeOffset},Admin.NET.Application.FormList)">
+ <summary>
+ 鏈夊弬鏋勯�犲嚱鏁�
+ </summary>
+ <param name="id"></param>
+ <param name="title"></param>
+ <param name="formjson"></param>
+ <param name="publish"></param>
+ <param name="typeId"></param>
+ <param name="typeName"></param>
+ <param name="version"></param>
+ <param name="createdUserName"></param>
+ <param name="createdUserId"></param>
+ <param name="createdTime"></param>
+ <param name="nodesList"></param>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.Id">
+ <summary>
+ 涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.Title">
+ <summary>
+ 琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.FormJson">
+ <summary>
+ form琛ㄥ崟Json
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.Publish">
+ <summary>
+ 鏄惁鍙戝竷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.TypeId">
+ <summary>
+ 琛ㄥ崟绫诲瀷ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.TypeName">
+ <summary>
+ 琛ㄥ崟绫诲瀷鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.CreatedUserName">
+ <summary>
+ 鍒涘缓浜哄鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.CreatedUserId">
+ <summary>
+ 鍒涘缓浜篒D
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormDto.NodesList">
+ <summary>
+ 鑺傜偣鍒楄〃
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormList">
+ <summary>
+ 琛ㄥ崟鍒楄〃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormList.List">
+ <summary>
+ 鑺傜偣鍒楄〃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormList.Config">
+ <summary>
+ 閰嶇疆
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormNode">
+ <summary>
+ 琛ㄥ崟鑺傜偣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Type">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Label">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Options">
+ <summary>
+ 灞炴�ц缃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Model">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Key">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Help">
+ <summary>
+ 甯姪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Prefix">
+ <summary>
+ 鍓嶇紑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Suffix">
+ <summary>
+ 鍚庣紑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormNode.Rules">
+ <summary>
+ 鏍¢獙瑙勫垯
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormOptions">
+ <summary>
+ 鑺傜偣灞炴��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Type">
+ <summary>
+ 绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Width">
+ <summary>
+ 瀹藉害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.DefaultValue">
+ <summary>
+ 榛樿鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Placeholder">
+ <summary>
+ 甯姪淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Clearable">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.MaxLength">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Hidden">
+ <summary>
+ 鏄惁闅愯棌
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormOptions.Disabled">
+ <summary>
+ 鏄惁鍙敤
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormRules">
+ <summary>
+ 鏍¢獙瑙勫垯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormRules.Required">
+ <summary>
+ 鏄惁蹇呭~
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormRules.Message">
+ <summary>
+ 淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormConfig">
+ <summary>
+ 琛ㄥ崟閰嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormConfig.Layout">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormConfig.LabelCol">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormConfig.WrapperCol">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormConfig.HideRequiredMark">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormConfig.CustomStyle">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormLabelCol">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.XS">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.SM">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.MD">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.LG">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.XL">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormLabelCol.XXL">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormWrapperCol">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.XS">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.SM">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.MD">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.LG">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.XL">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormWrapperCol.XXL">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormEditDto">
+ <summary>
+ 琛ㄥ崟缂栬緫
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormEditDto.Title">
+ <summary>
+ 琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormEditDto.FormJson">
+ <summary>
+ form琛ㄥ崟Json
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormEditDto.Publish">
+ <summary>
+ 鏄惁鍙戝竷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormEditDto.TypeId">
+ <summary>
+ 琛ㄥ崟绫诲瀷ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormEditDto.Version">
+ <summary>
+ 鐗堟湰
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormPageSearch">
+ <summary>
+ 鍒嗛〉鏌ヨ鏉′欢
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormPageSearch.Title">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormPageSearch.TypeId">
+ <summary>
+ 琛ㄥ崟绫诲瀷
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormPublishDto">
+ <summary>
+ 鍙戝竷鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormPublishDto.Publish">
+ <summary>
+ 鍙戝竷鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FormPublishDto.Type">
+ <summary>
+ 琛ㄥ崟绫诲瀷Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FormService">
+ <summary>
+ 琛ㄥ崟绠$悊
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysForm},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysformRep">琛ㄥ崟鏁版嵁琛�</param>
+ <param name="sysDictDataRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.GetPageList(Admin.NET.Application.FormPageSearch)">
+ <summary>
+ 鑾峰彇琛ㄥ崟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.FormAdd(Admin.NET.Application.FormAddDto)">
+ <summary>
+ 娣诲姞
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.UpdateEditForm(Admin.NET.Application.FormEditDto)">
+ <summary>
+ 鏇存柊琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.Delete(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鍒犻櫎琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.Publish(Admin.NET.Application.FormPublishDto)">
+ <summary>
+ 鍙戝竷琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.Get(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鑾峰彇鍗曚竴瀹炰綋
+ </summary>
+ <param name="Input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.GetView(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+ </summary>
+ <param name="Input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.GetPulishList(System.Nullable{System.Int64})">
+ <summary>
+ 鑾峰彇宸插彂甯冭〃鍗曞垪琛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.FormService.CheckTitle(System.String)">
+ <summary>
+ 鍒ゆ柇鏍囬鏄惁閲嶅
+ </summary>
+ <param name="Title"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.IFormService">
+ <summary>
+ 琛ㄥ崟绠$悊鎺ュ彛
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.GetPageList(Admin.NET.Application.FormPageSearch)">
+ <summary>
+ 鑾峰彇琛ㄥ崟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.FormAdd(Admin.NET.Application.FormAddDto)">
+ <summary>
+ 娣诲姞
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.UpdateEditForm(Admin.NET.Application.FormEditDto)">
+ <summary>
+ 鏇存柊琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.Delete(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鍒犻櫎琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.Publish(Admin.NET.Application.FormPublishDto)">
+ <summary>
+ 鍙戝竷琛ㄥ崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.Get(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鑾峰彇鍗曚竴瀹炰綋
+ </summary>
+ <param name="Input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.GetView(Admin.NET.Core.Service.BaseId)">
+ <summary>
+ 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+ </summary>
+ <param name="Input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IFormService.GetPulishList(System.Nullable{System.Int64})">
+ <summary>
+ 鑾峰彇鍙戝竷琛ㄥ崟鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ChatHub">
+ <summary>
+ 鑱婂ぉ闆嗙嚎鍣�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.#ctor(Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISendMessageService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="cache"></param>
+ <param name="sendMessageService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.OnConnectedAsync">
+ <summary>
+ 杩炴帴
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.OnDisconnectedAsync(System.Exception)">
+ <summary>
+ 鏂紑
+ </summary>
+ <param name="exception"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessage(Admin.NET.Application.MessageinputDto)">
+ <summary>
+ 鍓嶇璋冪敤鍙戦�佹柟娉�
+ 鍙戦�佷俊鎭粰鏌愪釜浜�
+ </summary>
+ <param name="_message"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoAll(Admin.NET.Application.MessageinputDto)">
+ <summary>
+ 鍓嶇璋冪敤鍙戦�佹柟娉�
+ 鍙戦�佷俊鎭粰鎵�鏈変汉
+ </summary>
+ <param name="_message"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoOther(Admin.NET.Application.MessageinputDto)">
+ <summary>
+ 鍓嶇璋冪敤鍙戦�佹柟娉�
+ 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ </summary>
+ <param name="_message"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ChatHub.ClientsSendMessagetoUsers(Admin.NET.Application.MessageinputDto)">
+ <summary>
+ 鍓嶇璋冪敤鍙戦�佹柟娉�
+ 鍙戦�佹秷鎭粰鏌愪簺浜�
+ </summary>
+ <param name="_message"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.MessageinputDto">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MessageinputDto.userId">
+ <summary>
+ 鐢ㄦ埛ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MessageinputDto.userIds">
+ <summary>
+ 鐢ㄦ埛ID鍒楄〃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MessageinputDto.title">
+ <summary>
+ 娑堟伅鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MessageinputDto.message">
+ <summary>
+ 娑堟伅鍐呭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MessageinputDto.messageType">
+ <summary>
+ 娑堟伅绫诲瀷
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.IChatClient">
+ <summary>
+ 鑱婂ぉ瀹㈡埛绔帴鍙e畾涔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IChatClient.ForceExist">
+ <summary>
+ 寮哄埗涓嬬嚎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IChatClient.SingleLoginForceExist">
+ <summary>
+ 鍗曠敤鎴风櫥褰曪紝寮哄埗涓嬬嚎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IChatClient.ReceiveMessage(System.Object)">
+ <summary>
+ 鍙戦�佷俊鎭�
+ </summary>
+ <param name="context"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput.Add">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrasOutput.Del">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode.Controls">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode.Databases">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Id">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Key">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Label">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Model">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.Control_Type">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.TableName">
+ <summary>
+ 琛ㄥ悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.TableDesc">
+ <summary>
+ 琛ㄦ弿杩�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.FieldName">
+ <summary>
+ 瀛楁鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbType">
+ <summary>
+ 鏁版嵁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbTypeName">
+ <summary>
+ 鏁版嵁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DtoTypeName">
+ <summary>
+ 鏁版嵁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.DbParam">
+ <summary>
+ 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.IsRequired">
+ <summary>
+ 鏄惁蹇呭~
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherTable">
+ <summary>
+ 鍒楄〃鏄剧ず
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherOrderBy">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.whetherAddUpdate">
+ <summary>
+ 澧炴敼
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.QueryWhether">
+ <summary>
+ 鏄惁鏄煡璇�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.QueryType">
+ <summary>
+ 鏌ヨ鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.ContrastLowCode_Database.WhetherUnionKey">
+ <summary>
+ 鏄惁鑱斿悎涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableDesc">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.AuthorName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.BusName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ModuleName">
+ <summary>
+ 妯″潡璺緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.IsOnlyQuery">
+ <summary>
+ 鏄惁鍙槸鏌ヨ
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ProName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DatabaseName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ClassName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.CamelizeClassName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.QueryWhetherList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.TableField">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.FileTableField">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.Fields">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.LowCodeId">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.FormDesign">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DynamicData">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.DynamicLoad_Dict">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.IsFile">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate.ImportExcelCustomizationContent">
+ <summary>
+ 瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AntDesignTreeNode">
+ <summary>
+ 鐧诲綍鑿滃崟-AntDesign鑿滃崟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Id">
+ <summary>
+ id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Pid">
+ <summary>
+ 鐖秈d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Name">
+ <summary>
+ 璺敱鍚嶇О, 蹇呴』璁剧疆,涓斾笉鑳介噸鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Component">
+ <summary>
+ 缁勪欢
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Redirect">
+ <summary>
+ 閲嶅畾鍚戝湴鍧�, 璁块棶杩欎釜璺敱鏃�, 鑷畾杩涜閲嶅畾鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Meta">
+ <summary>
+ 璺敱鍏冧俊鎭紙璺敱闄勫甫鎵╁睍淇℃伅锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Path">
+ <summary>
+ 璺緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AntDesignTreeNode.Hidden">
+ <summary>
+ 鎺у埗璺敱鍜屽瓙璺敱鏄惁鏄剧ず鍦� sidebar
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Meta">
+ <summary>
+ 璺敱鍏冧俊鎭唴閮ㄧ被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Meta.Title">
+ <summary>
+ 璺敱鏍囬, 鐢ㄤ簬鏄剧ず闈㈠寘灞�, 椤甸潰鏍囬 *鎺ㄨ崘璁剧疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Meta.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Meta.Show">
+ <summary>
+ 鏄惁鍙
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Meta.Target">
+ <summary>
+ 濡傞渶澶栭儴鎵撳紑锛屽鍔狅細_blank
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.Meta.Link">
+ <summary>
+ 鍐呴摼鎵撳紑http閾炬帴
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MenuInput">
+ <summary>
+ 鑿滃崟鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuInput.Type">
+ <summary>
+ 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuInput.Router">
+ <summary>
+ 璺敱鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuInput.Permission">
+ <summary>
+ 鏉冮檺鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuInput.OpenType">
+ <summary>
+ 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TreeForGrantInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TreeForGrantInput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetMenuTreeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMenuTreeInput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetMenuListInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMenuListInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetMenuListInput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Type">
+ <summary>
+ 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Router">
+ <summary>
+ 璺敱鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Component">
+ <summary>
+ 缁勪欢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Permission">
+ <summary>
+ 鏉冮檺鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.OpenType">
+ <summary>
+ 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Visible">
+ <summary>
+ 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Link">
+ <summary>
+ 鍐呴摼鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Redirect">
+ <summary>
+ 閲嶅畾鍚戝湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Weight">
+ <summary>
+ 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddMenuInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Id">
+ <summary>
+ 鑿滃崟Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>DeleteMenuInput
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Type">
+ <summary>
+ 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Router">
+ <summary>
+ 璺敱鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Component">
+ <summary>
+ 缁勪欢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Permission">
+ <summary>
+ 鏉冮檺鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.OpenType">
+ <summary>
+ 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Visible">
+ <summary>
+ 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Link">
+ <summary>
+ 鍐呴摼鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Redirect">
+ <summary>
+ 閲嶅畾鍚戝湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Weight">
+ <summary>
+ 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMenuInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChangeAppMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Application">
+ <summary>
+ 搴旂敤缂栫爜
+ </summary>DeleteMenuInput
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Type">
+ <summary>
+ 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Router">
+ <summary>
+ 璺敱鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Component">
+ <summary>
+ 缁勪欢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Permission">
+ <summary>
+ 鏉冮檺鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.OpenType">
+ <summary>
+ 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Visible">
+ <summary>
+ 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Link">
+ <summary>
+ 鍐呴摼鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Redirect">
+ <summary>
+ 閲嶅畾鍚戝湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Weight">
+ <summary>
+ 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeAppMenuInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MenuOutput">
+ <summary>
+ 鑿滃崟鏍戯紙鍒楄〃褰㈠紡锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Id">
+ <summary>
+ 鑿滃崟Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Children">
+ <summary>
+ 瀛愯妭鐐�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Type">
+ <summary>
+ 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Icon">
+ <summary>
+ 鍥炬爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Router">
+ <summary>
+ 璺敱鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Component">
+ <summary>
+ 缁勪欢鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Permission">
+ <summary>
+ 鏉冮檺鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Application">
+ <summary>
+ 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.OpenType">
+ <summary>
+ 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Visible">
+ <summary>
+ 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Link">
+ <summary>
+ 鍐呴摼鍦板潃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Redirect">
+ <summary>
+ 閲嶅畾鍚戝湴鍧�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Weight">
+ <summary>
+ 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MenuOutput.GetId">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MenuOutput.GetPid">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MenuOutput.SetChildren(System.Collections.IList)">
+ <summary>
+
+ </summary>
+ <param name="children"></param>
+ </member>
+ <member name="T:Admin.NET.Application.MenuTreeOutput">
+ <summary>
+ 鑿滃崟鏍�---鎺堟潈銆佹柊澧炵紪杈戞椂閫夋嫨
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.Id">
+ <summary>
+ 涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.ParentId">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.Title">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.IntValue">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.Weight">
+ <summary>
+ 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MenuTreeOutput.Children">
+ <summary>
+ 瀛愯妭鐐�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MenuTreeOutput.GetId">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MenuTreeOutput.GetPid">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MenuTreeOutput.SetChildren(System.Collections.IList)">
+ <summary>
+
+ </summary>
+ <param name="children"></param>
+ </member>
+ <member name="T:Admin.NET.Application.ISysMenuService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.AddMenu(Admin.NET.Application.AddMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.ChangeAppMenu(Admin.NET.Application.ChangeAppMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.DeleteMenu(Admin.NET.Application.DeleteMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetLoginMenusAntDesign(System.Int64,System.String)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetLoginPermissionList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetAllPermissionList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetMenu(Admin.NET.Application.QueryMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetMenuList(Admin.NET.Application.GetMenuListInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetMenuTree(Admin.NET.Application.GetMenuTreeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.GetUserMenuAppCodeList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.HasMenu(System.String)">
+ <summary>
+
+ </summary>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.TreeForGrant(Admin.NET.Application.TreeForGrantInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysMenuService.UpdateMenu(Admin.NET.Application.UpdateMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysMenuService">
+ <summary>
+ 绯荤粺鑿滃崟鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPdaPower},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysUserRoleService,Admin.NET.Application.ISysRoleMenuService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysMenuRep"></param>
+ <param name="sysCacheService"></param>
+ <param name="sysUserRoleService"></param>
+ <param name="sysRoleMenuService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetLoginPermissionList(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鏉冮檺(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetAllPermissionList">
+ <summary>
+ 鑾峰彇鎵�鏈夋潈闄�(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetLoginMenusAntDesign(System.Int64,System.String)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛AntDesign鑿滃崟闆嗗悎
+ </summary>
+ <param name="userId"></param>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetUserMenuAppCodeList(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鑿滃崟鎵�灞炵殑搴旂敤缂栫爜闆嗗悎
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetMenuList(Admin.NET.Application.GetMenuListInput)">
+ <summary>
+ 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetMenuListPda(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+ 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.CreateNewPids(System.Int64)">
+ <summary>
+ 鍒涘缓Pids鏍煎紡
+ 濡傛灉pid鏄�0椤剁骇鑺傜偣锛宲ids灏辨槸 [0];
+ 濡傛灉pid涓嶆槸椤剁骇鑺傜偣锛宲ids灏辨槸 pid鑿滃崟鐨� pids + [pid] + ,
+ </summary>
+ <param name="pid"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.CheckMenuParam(Admin.NET.Application.MenuInput)">
+ <summary>
+ 澧炲姞鍜岀紪杈戞椂妫�鏌ュ弬鏁�
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.AddMenu(Admin.NET.Application.AddMenuInput)">
+ <summary>
+ 澧炲姞绯荤粺鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.DeleteMenu(Admin.NET.Application.DeleteMenuInput)">
+ <summary>
+ 鍒犻櫎绯荤粺鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.UpdateMenu(Admin.NET.Application.UpdateMenuInput)">
+ <summary>
+ 鏇存柊绯荤粺鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetMenu(Admin.NET.Application.QueryMenuInput)">
+ <summary>
+ 鑾峰彇绯荤粺鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.GetMenuTree(Admin.NET.Application.GetMenuTreeInput)">
+ <summary>
+ 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板銆佺紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.TreeForGrant(Admin.NET.Application.TreeForGrantInput)">
+ <summary>
+ 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.HasMenu(System.String)">
+ <summary>
+ 鏍规嵁搴旂敤缂栫爜鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+ </summary>
+ <param name="appCode"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysMenuService.ChangeAppMenu(Admin.NET.Application.ChangeAppMenuInput)">
+ <summary>
+ 鏍规嵁绯荤粺搴旂敤鍒囨崲鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISendMessageService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+ <summary>
+ 鍙戦�佹秷鎭粰鏌愪釜浜�
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鎺ユ敹浜�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToUsers(System.String,System.String,Admin.NET.Core.MessageType,System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鍙戦�佹秷鎭粰鏌愪簺浜�
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鎺ユ敹浜哄垪琛�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToAllUser(System.String,System.String,Admin.NET.Core.MessageType)">
+ <summary>
+ 鍙戦�佹秷鎭粰鎵�鏈変汉
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISendMessageService.SendMessageToOtherUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+ <summary>
+ 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鍙戦�佷汉</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SendMessageService">
+ <summary>
+ 娑堟伅鍙戦�佹湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SendMessageService.#ctor(Admin.NET.Application.ISysCacheService,Microsoft.AspNetCore.SignalR.IHubContext{Admin.NET.Application.ChatHub,Admin.NET.Application.IChatClient})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysCacheService"></param>
+ <param name="chatHubContext"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SendMessageService.SendMessageToAllUser(System.String,System.String,Admin.NET.Core.MessageType)">
+ <summary>
+ 鍙戦�佹秷鎭粰鎵�鏈変汉
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SendMessageService.SendMessageToOtherUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+ <summary>
+ 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鍙戦�佷汉</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SendMessageService.SendMessageToUser(System.String,System.String,Admin.NET.Core.MessageType,System.Int64)">
+ <summary>
+ 鍙戦�佹秷鎭粰鏌愪釜浜�
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鎺ユ敹浜�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SendMessageService.SendMessageToUsers(System.String,System.String,Admin.NET.Core.MessageType,System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鍙戦�佹秷鎭粰鏌愪簺浜�
+ </summary>
+ <param name="title">鍙戦�佹爣棰�</param>
+ <param name="message">鍙戦�佸唴瀹�</param>
+ <param name="userId">鎺ユ敹浜哄垪琛�</param>
+ <param name="type">娑堟伅绫诲瀷</param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.IMachineService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.IMachineService.GetMachineBaseInfo">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IMachineService.GetMachineNetWorkInfo">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.IMachineService.GetMachineUseInfo">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.MachineService">
+ <summary>
+ 鏈嶅姟鍣ㄤ俊鎭湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MachineService.#ctor">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MachineService.GetMachineUseInfo">
+ <summary>
+ 鑾峰彇鏈嶅姟鍣ㄨ祫婧愪俊鎭�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MachineService.GetMachineBaseInfo">
+ <summary>
+ 鑾峰彇鏈嶅姟鍣ㄥ熀鏈弬鏁�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MachineService.GetMachineNetWorkInfo">
+ <summary>
+ 鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.NoticeBase">
+ <summary>
+ 閫氱煡鍏憡鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.Title">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.Content">
+ <summary>
+ 鍐呭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.Type">
+ <summary>
+ 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.PublicUserId">
+ <summary>
+ 鍙戝竷浜篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.PublicUserName">
+ <summary>
+ 鍙戝竷浜哄鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.PublicOrgId">
+ <summary>
+ 鍙戝竷鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.PublicOrgName">
+ <summary>
+ 鍙戝竷鏈烘瀯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.PublicTime">
+ <summary>
+ 鍙戝竷鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.CancelTime">
+ <summary>
+ 鎾ゅ洖鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeBase.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.NoticeDetailOutput">
+ <summary>
+ 绯荤粺閫氱煡鍏憡璇︽儏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeDetailOutput.NoticeUserIdList">
+ <summary>
+ 閫氱煡鍒扮殑鐢ㄦ埛Id闆嗗悎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeDetailOutput.NoticeUserReadInfoList">
+ <summary>
+ 閫氱煡鍒扮殑鐢ㄦ埛闃呰淇℃伅闆嗗悎
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.NoticeUserRead">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeUserRead.UserId">
+ <summary>
+ 鐢ㄦ埛Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeUserRead.UserName">
+ <summary>
+ 鐢ㄦ埛鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeUserRead.ReadStatus">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeUserRead.ReadTime">
+ <summary>
+ 闃呰鏃堕棿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.NoticeInput">
+ <summary>
+ 閫氱煡鍏憡鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeInput.Title">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeInput.Content">
+ <summary>
+ 鍐呭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeInput.Type">
+ <summary>
+ 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeInput.NoticeUserIdList">
+ <summary>
+ 閫氱煡鍒扮殑浜�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.NoticePageInput">
+ <summary>
+ 閫氱煡鍏憡鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticePageInput.Type">
+ <summary>
+ 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddNoticeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddNoticeInput.Title">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddNoticeInput.Content">
+ <summary>
+ 鍐呭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddNoticeInput.Type">
+ <summary>
+ 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddNoticeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddNoticeInput.NoticeUserIdList">
+ <summary>
+ 閫氱煡鍒扮殑浜�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteNoticeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateNoticeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.Title">
+ <summary>
+ 鏍囬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.Content">
+ <summary>
+ 鍐呭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.Type">
+ <summary>
+ 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateNoticeInput.NoticeUserIdList">
+ <summary>
+ 閫氱煡鍒扮殑浜�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryNoticeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChangeStatusNoticeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangeStatusNoticeInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.NoticeReceiveOutput">
+ <summary>
+ 閫氱煡鍏憡鎺ユ敹鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeReceiveOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeReceiveOutput.ReadStatus">
+ <summary>
+ 闃呰鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.NoticeReceiveOutput.ReadTime">
+ <summary>
+ 闃呰鏃堕棿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.Notice.ISysNoticeService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.AddNotice(Admin.NET.Application.AddNoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.ChangeStatus(Admin.NET.Application.ChangeStatusNoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.DeleteNotice(Admin.NET.Application.DeleteNoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.GetNotice(Admin.NET.Application.QueryNoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.QueryNoticePageList(Admin.NET.Application.NoticePageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.ReceivedNoticePageList(Admin.NET.Application.NoticePageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.UpdateNotice(Admin.NET.Application.UpdateNoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeService.UnReadNoticeList(Admin.NET.Application.NoticeInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.Notice.ISysNoticeUserService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Add(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+
+ </summary>
+ <param name="noticeId"></param>
+ <param name="noticeUserIdList"></param>
+ <param name="noticeUserStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.GetNoticeUserListByNoticeId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="noticeId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Read(System.Int64,System.Int64,Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+
+ </summary>
+ <param name="noticeId"></param>
+ <param name="userId"></param>
+ <param name="status"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.ISysNoticeUserService.Update(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+
+ </summary>
+ <param name="noticeId"></param>
+ <param name="noticeUserIdList"></param>
+ <param name="noticeUserStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.Notice.SysNoticeService">
+ <summary>
+ 閫氱煡鍏憡鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNotice},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNoticeUser},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysEmp},Admin.NET.Application.Notice.ISysNoticeUserService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysNoticeRep"></param>
+ <param name="sysNoticeUserRep"></param>
+ <param name="sysEmpRep"></param>
+ <param name="sysNoticeUserService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.QueryNoticePageList(Admin.NET.Application.NoticePageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ閫氱煡鍏憡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.AddNotice(Admin.NET.Application.AddNoticeInput)">
+ <summary>
+ 澧炲姞閫氱煡鍏憡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.DeleteNotice(Admin.NET.Application.DeleteNoticeInput)">
+ <summary>
+ 鍒犻櫎閫氱煡鍏憡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.UpdateNotice(Admin.NET.Application.UpdateNoticeInput)">
+ <summary>
+ 鏇存柊閫氱煡鍏憡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.GetNotice(Admin.NET.Application.QueryNoticeInput)">
+ <summary>
+ 鑾峰彇閫氱煡鍏憡璇︽儏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.ChangeStatus(Admin.NET.Application.ChangeStatusNoticeInput)">
+ <summary>
+ 淇敼閫氱煡鍏憡鐘舵��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.ReceivedNoticePageList(Admin.NET.Application.NoticePageInput)">
+ <summary>
+ 鑾峰彇鎺ユ敹鐨勯�氱煡鍏憡
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.UpdatePublicInfo(Admin.NET.Core.SysNotice)">
+ <summary>
+ 鏇存柊鍙戝竷淇℃伅
+ </summary>
+ <param name="notice"></param>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeService.UnReadNoticeList(Admin.NET.Application.NoticeInput)">
+ <summary>
+ 鏈鐞嗘秷鎭�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.Notice.SysNoticeUserService">
+ <summary>
+ 閫氱煡鍏憡鐢ㄦ埛
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysNoticeUser})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysNoticeUserRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Add(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+ 澧炲姞
+ </summary>
+ <param name="noticeId"></param>
+ <param name="noticeUserIdList"></param>
+ <param name="noticeUserStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Update(System.Int64,System.Collections.Generic.List{System.Int64},Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+ 鏇存柊
+ </summary>
+ <param name="noticeId"></param>
+ <param name="noticeUserIdList"></param>
+ <param name="noticeUserStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.GetNoticeUserListByNoticeId(System.Int64)">
+ <summary>
+ 鑾峰彇閫氱煡鍏憡鐢ㄦ埛鍒楄〃
+ </summary>
+ <param name="noticeId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.Notice.SysNoticeUserService.Read(System.Int64,System.Int64,Admin.NET.Core.NoticeUserStatus)">
+ <summary>
+ 璁剧疆閫氱煡鍏憡璇诲彇鐘舵��
+ </summary>
+ <param name="noticeId"></param>
+ <param name="userId"></param>
+ <param name="status"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.OnlineUserOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.ConnectionId">
+ <summary>
+ 杩炴帴Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.UserId">
+ <summary>
+ 鐢ㄦ埛Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.LastTime">
+ <summary>
+ 鏈�鍚庤繛鎺ユ椂闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginIp">
+ <summary>
+ 鏈�鍚庣櫥褰旾P
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginBrowser">
+ <summary>
+ 鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.LastLoginOs">
+ <summary>
+ 鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OnlineUserOutput.TenantName">
+ <summary>
+ 绉熸埛鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysOnlineUserService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOnlineUserService.QueryOnlineUserPageList(Admin.NET.Core.PageInputBase)">
+ <summary>
+ 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOnlineUserService.List">
+ <summary>
+ 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOnlineUserService.ForceExist(Admin.NET.Core.OnlineUser)">
+ <summary>
+ 寮哄埗涓嬬嚎
+ </summary>
+ <param name="onlineUser">鍦ㄧ嚎鐢ㄦ埛淇℃伅</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOnlineUserService.SingleLoginForceExist(Admin.NET.Core.OnlineUser)">
+ <summary>
+ 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+ </summary>
+ <param name="user"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysOnlineUserService">
+ <summary>
+ 鍦ㄧ嚎鐢ㄦ埛鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysOnlineUserService.#ctor(Admin.NET.Application.ISysCacheService,Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Microsoft.AspNetCore.SignalR.IHubContext{Admin.NET.Application.ChatHub,Admin.NET.Application.IChatClient})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysCacheService"></param>
+ <param name="sysUerRep"></param>
+ <param name="chatHubContext"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysOnlineUserService.QueryOnlineUserPageList(Admin.NET.Core.PageInputBase)">
+ <summary>
+ 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOnlineUserService.List">
+ <summary>
+ 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOnlineUserService.ForceExist(Admin.NET.Core.OnlineUser)">
+ <summary>
+ 寮哄埗涓嬬嚎
+ </summary>
+ <param name="user"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOnlineUserService.SingleLoginForceExist(Admin.NET.Core.OnlineUser)">
+ <summary>
+ 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+ </summary>
+ <param name="user"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.OrgListInput">
+ <summary>
+ 缁勭粐鏈烘瀯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgListInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OrgAddInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.OrgType">
+ <summary>
+ 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Pids">
+ <summary>
+ 鐖禝ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgAddInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteOrgInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DeleteOrgInput.Id">
+ <summary>
+ 鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateOrgInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.OrgType">
+ <summary>
+ 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Id">
+ <summary>
+ 鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Pids">
+ <summary>
+ 鐖禝ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateOrgInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryOrgInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.QueryOrgInput.Id">
+ <summary>
+ 鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OrgPageInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgPageInput.OrgType">
+ <summary>
+ 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgPageInput.Id">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgPageInput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgPageInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OrgOutput">
+ <summary>
+ 缁勭粐鏈烘瀯鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.OrgType">
+ <summary>
+ 鏈烘瀯绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Id">
+ <summary>
+ 鏈烘瀯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Pid">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Pids">
+ <summary>
+ 鐖禝ds
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgOutput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OrgTreeNode">
+ <summary>
+ 缁勭粐鏈烘瀯鏍�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.ParentId">
+ <summary>
+ 鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Title">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Value">
+ <summary>
+ 鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Weight">
+ <summary>
+ 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Children">
+ <summary>
+ 瀛愯妭鐐�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OrgTreeNode.Pid">
+ <summary>
+ 涓婁竴绾d
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.OrgTreeNode.GetId">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.OrgTreeNode.GetPid">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.OrgTreeNode.SetChildren(System.Collections.IList)">
+ <summary>
+
+ </summary>
+ <param name="children"></param>
+ </member>
+ <member name="T:Admin.NET.Application.ISysOrgService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.AddOrg(Admin.NET.Application.OrgAddInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.DeleteOrg(Admin.NET.Application.DeleteOrgInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetDataScopeListByDataScopeType(System.Int32,System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="dataScopeType"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetOrg(Admin.NET.Application.QueryOrgInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetOrgList(Admin.NET.Application.OrgListInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetOrgTree">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.QueryOrgPageList(Admin.NET.Application.OrgPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.UpdateOrg(Admin.NET.Application.UpdateOrgInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetAllDataScopeIdList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysOrgService.GetUserDataScopeIdList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysOrgService">
+ <summary>
+ 缁勭粐鏈烘瀯鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysOrg},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysEmpExtOrgPosService,Admin.NET.Application.ISysRoleDataScopeService,Admin.NET.Application.ISysUserDataScopeService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysOrgRep"></param>
+ <param name="sysCacheService"></param>
+ <param name="sysEmpService"></param>
+ <param name="sysEmpExtOrgPosService"></param>
+ <param name="sysRoleDataScopeService"></param>
+ <param name="sysUserDataScopeService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.QueryOrgPageList(Admin.NET.Application.OrgPageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ缁勭粐鏈烘瀯
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetDataScopeList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ (闈炵鐞嗗憳)鑾峰彇褰撳墠鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d锛�
+ </summary>
+ <param name="dataScopes"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetOrgList(Admin.NET.Application.OrgListInput)">
+ <summary>
+ 鑾峰彇缁勭粐鏈烘瀯鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.AddOrg(Admin.NET.Application.OrgAddInput)">
+ <summary>
+ 澧炲姞缁勭粐鏈烘瀯
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.FillPids(Admin.NET.Core.SysOrg)">
+ <summary>
+ 濉厖鐖禝ds瀛楁
+ </summary>
+ <param name="sysOrg"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.DeleteOrg(Admin.NET.Application.DeleteOrgInput)">
+ <summary>
+ 鍒犻櫎缁勭粐鏈烘瀯
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.UpdateOrg(Admin.NET.Application.UpdateOrgInput)">
+ <summary>
+ 鏇存柊缁勭粐鏈烘瀯
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetOrg(Admin.NET.Application.QueryOrgInput)">
+ <summary>
+ 鑾峰彇缁勭粐鏈烘瀯淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetChildIdListWithSelfById(System.Int64)">
+ <summary>
+ 鏍规嵁鑺傜偣Id鑾峰彇鎵�鏈夊瓙鑺傜偣Id闆嗗悎锛屽寘鍚嚜宸�
+ </summary>
+ <param name="id"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetOrgTree">
+ <summary>
+ 鑾峰彇缁勭粐鏈烘瀯鏍�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetDataScopeListByDataScopeType(System.Int32,System.Int64)">
+ <summary>
+ 鏍规嵁鏁版嵁鑼冨洿绫诲瀷鑾峰彇褰撳墠鐢ㄦ埛鐨勬暟鎹寖鍥达紙鏈烘瀯Id锛夐泦鍚�
+ </summary>
+ <param name="dataScopeType"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetAllDataScopeIdList">
+ <summary>
+ 鑾峰彇鎵�鏈夌殑鏈烘瀯缁勭粐Id闆嗗悎
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysOrgService.GetUserDataScopeIdList">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.PosInput">
+ <summary>
+ 鑱屼綅鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.PageNo">
+ <summary>
+ 褰撳墠椤电爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PosInput.PageSize">
+ <summary>
+ 椤电爜瀹归噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddPosInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddPosInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddPosInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddPosInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddPosInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddPosInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeletePosInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdatePosInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Id">
+ <summary>
+ 鑱屼綅Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdatePosInput.Status">
+ <summary>
+ 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryPosInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysPosService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.AddPos(Admin.NET.Application.AddPosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.DeletePos(Admin.NET.Application.DeletePosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.GetPos(Admin.NET.Application.QueryPosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.GetPosList(Admin.NET.Application.PosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.QueryPosPageList(Admin.NET.Application.PosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysPosService.UpdatePos(Admin.NET.Application.UpdatePosInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysPosService">
+ <summary>
+ 鑱屼綅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysPos},Admin.NET.Application.ISysEmpPosService,Admin.NET.Application.ISysEmpExtOrgPosService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysPosRep"></param>
+ <param name="sysEmpPosService"></param>
+ <param name="sysEmpExtOrgPosService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.QueryPosPageList(Admin.NET.Application.PosInput)">
+ <summary>
+ 鍒嗛〉鑾峰彇鑱屼綅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.GetPosList(Admin.NET.Application.PosInput)">
+ <summary>
+ 鑾峰彇鑱屼綅鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.AddPos(Admin.NET.Application.AddPosInput)">
+ <summary>
+ 澧炲姞鑱屼綅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.DeletePos(Admin.NET.Application.DeletePosInput)">
+ <summary>
+ 鍒犻櫎鑱屼綅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.UpdatePos(Admin.NET.Application.UpdatePosInput)">
+ <summary>
+ 鏇存柊鑱屼綅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysPosService.GetPos(Admin.NET.Application.QueryPosInput)">
+ <summary>
+ 鑾峰彇鑱屼綅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.RoleInput">
+ <summary>
+ 瑙掕壊鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleInput.RoleType">
+ <summary>
+ 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.RolePageInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RolePageInput.RoleType">
+ <summary>
+ 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RolePageInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RolePageInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddRoleInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.RoleType">
+ <summary>
+ 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.DataScopeType">
+ <summary>
+ 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddRoleInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteRoleInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateRoleInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.RoleType">
+ <summary>
+ 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.Id">
+ <summary>
+ 瑙掕壊Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.DataScopeType">
+ <summary>
+ 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateRoleInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryRoleInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GrantRoleMenuInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.Id">
+ <summary>
+ 瑙掕壊Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.DataScopeType">
+ <summary>
+ 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantMenuIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantRoleIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleMenuInput.GrantOrgIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GrantRoleDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.Id">
+ <summary>
+ 瑙掕壊Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.Sort">
+ <summary>
+ 鎺掑簭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.DataScopeType">
+ <summary>
+ 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantMenuIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantRoleIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GrantRoleDataInput.GrantOrgIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.RoleOutput">
+ <summary>
+ 鐧诲綍鐢ㄦ埛瑙掕壊鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleOutput.RoleType">
+ <summary>
+ 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleOutput.Code">
+ <summary>
+ 缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.RoleOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysRoleDataScopeService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="orgIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleDataScopeService.GetRoleDataScopeIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="roleIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleDataScopeService.GrantDataScope(Admin.NET.Application.GrantRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysRoleMenuService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleMenuService.DeleteRoleMenuListByMenuIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="menuIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleMenuService.DeleteRoleMenuListByRoleId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleMenuService.GetRoleMenuIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="roleIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleMenuService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysRoleService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.AddRole(Admin.NET.Application.AddRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.DeleteRole(Admin.NET.Application.DeleteRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetNameByRoleId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetRoleDropDown">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetRoleInfo(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetRoleList(Admin.NET.Application.RoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetUserDataScopeIdList(System.Collections.Generic.List{System.Int64},System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="roleIdList"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GetUserRoleList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GrantData(Admin.NET.Application.GrantRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.OwnData(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.OwnMenu(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.QueryRolePageList(Admin.NET.Application.RolePageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysRoleService.UpdateRole(Admin.NET.Application.UpdateRoleInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysRoleDataScopeService">
+ <summary>
+ 瑙掕壊鏁版嵁鑼冨洿鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleDataScopeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRoleDataScope})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysRoleDataScopeRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleDataScopeService.GrantDataScope(Admin.NET.Application.GrantRoleDataInput)">
+ <summary>
+ 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleDataScopeService.GetRoleDataScopeIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇瑙掕壊鏁版嵁鑼冨洿闆嗗悎
+ </summary>
+ <param name="roleIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ </summary>
+ <param name="orgIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(System.Int64)">
+ <summary>
+ 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysRoleMenuService">
+ <summary>
+ 瑙掕壊鑿滃崟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleMenuService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRoleMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysMenu},Admin.NET.Application.ISysCacheService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysRoleMenuRep"></param>
+ <param name="sysMenuRep"></param>
+ <param name="sysCacheService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleMenuService.GetRoleMenuIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鑾峰彇瑙掕壊鐨勮彍鍗旾d闆嗗悎
+ </summary>
+ <param name="roleIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleMenuService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+ <summary>
+ 鎺堟潈瑙掕壊鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleMenuService.DeleteRoleMenuListByMenuIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鏍规嵁鑿滃崟Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄤ俊鎭�
+ </summary>
+ <param name="menuIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleMenuService.DeleteRoleMenuListByRoleId(System.Int64)">
+ <summary>
+ 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysRoleService">
+ <summary>
+ 瑙掕壊鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysRole},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserRole},Admin.NET.Application.ISysRoleDataScopeService,Admin.NET.Application.ISysOrgService,Admin.NET.Application.ISysRoleMenuService,Admin.NET.Application.ISysCacheService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysRoleRep"></param>
+ <param name="sysUserRoleRep"></param>
+ <param name="sysRoleDataScopeService"></param>
+ <param name="sysOrgService"></param>
+ <param name="sysRoleMenuService"></param>
+ <param name="sysCacheService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetUserRoleList(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛瑙掕壊鐩稿叧淇℃伅锛堢櫥褰曪級
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.QueryRolePageList(Admin.NET.Application.RolePageInput)">
+ <summary>
+ 鍒嗛〉鑾峰彇瑙掕壊鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetRoleList(Admin.NET.Application.RoleInput)">
+ <summary>
+ 鑾峰彇瑙掕壊鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetRoleDropDown">
+ <summary>
+ 瑙掕壊涓嬫媺锛堢敤浜庢巿鏉冭鑹叉椂閫夋嫨锛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.AddRole(Admin.NET.Application.AddRoleInput)">
+ <summary>
+ 澧炲姞瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.DeleteRole(Admin.NET.Application.DeleteRoleInput)">
+ <summary>
+ 鍒犻櫎瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.UpdateRole(Admin.NET.Application.UpdateRoleInput)">
+ <summary>
+ 鏇存柊瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetRoleInfo(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+ 鑾峰彇瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GrantMenu(Admin.NET.Application.GrantRoleMenuInput)">
+ <summary>
+ 鎺堟潈瑙掕壊鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GrantPdaMenu(Admin.NET.Application.GrantRoleMenuInput)">
+ <summary>
+ 鎺堟潈瑙掕壊PDA鑿滃崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GrantData(Admin.NET.Application.GrantRoleDataInput)">
+ <summary>
+ 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetUserDataScopeIdList(System.Collections.Generic.List{System.Int64},System.Int64)">
+ <summary>
+ 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇鏁版嵁鑼冨洿Id闆嗗悎
+ </summary>
+ <param name="roleIdList"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.GetNameByRoleId(System.Int64)">
+ <summary>
+ 鏍规嵁瑙掕壊Id鑾峰彇瑙掕壊鍚嶇О
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.OwnMenu(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+ 鑾峰彇瑙掕壊鎷ユ湁鑿滃崟Id闆嗗悎
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysRoleService.OwnData(Admin.NET.Application.QueryRoleInput)">
+ <summary>
+ 鑾峰彇瑙掕壊鎷ユ湁鏁版嵁Id闆嗗悎
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.JobPageInput">
+ <summary>
+ 浠诲姟璋冨害鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.JobName">
+ <summary>
+ 浠诲姟鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.DoOnce">
+ <summary>
+ 鍙墽琛屼竴娆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.StartNow">
+ <summary>
+ 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.ExecuteType">
+ <summary>
+ 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.Interval">
+ <summary>
+ 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ </summary>
+ <example>5</example>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.Cron">
+ <summary>
+ Cron琛ㄨ揪寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.TimerType">
+ <summary>
+ 瀹氭椂鍣ㄧ被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.RequestUrl">
+ <summary>
+ 璇锋眰url
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.RequestParameters">
+ <summary>
+ 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.Headers">
+ <summary>
+ Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ 鏍煎紡锛歿"Authorization":"userpassword.."}
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.RequestType">
+ <summary>
+ 璇锋眰绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobPageInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddJobInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.JobName">
+ <summary>
+ 浠诲姟鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.DoOnce">
+ <summary>
+ 鍙墽琛屼竴娆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.StartNow">
+ <summary>
+ 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.ExecuteType">
+ <summary>
+ 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.Interval">
+ <summary>
+ 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ </summary>
+ <example>5</example>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.Cron">
+ <summary>
+ Cron琛ㄨ揪寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.TimerType">
+ <summary>
+ 瀹氭椂鍣ㄧ被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.RequestUrl">
+ <summary>
+ 璇锋眰url
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.RequestParameters">
+ <summary>
+ 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.Headers">
+ <summary>
+ Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ 鏍煎紡锛歿"Authorization":"userpassword.."}
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.RequestType">
+ <summary>
+ 璇锋眰绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddJobInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StopJobInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StopJobInput.JobName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteJobInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateJobInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.JobName">
+ <summary>
+ 浠诲姟鍚嶇О
+ </summary>
+ <example>dilon</example>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.DoOnce">
+ <summary>
+ 鍙墽琛屼竴娆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.StartNow">
+ <summary>
+ 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.ExecuteType">
+ <summary>
+ 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.Interval">
+ <summary>
+ 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ </summary>
+ <example>5</example>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.Cron">
+ <summary>
+ Cron琛ㄨ揪寮�
+ </summary>
+ <example></example>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.TimerType">
+ <summary>
+ 瀹氭椂鍣ㄧ被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.RequestUrl">
+ <summary>
+ 璇锋眰url
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.RequestParameters">
+ <summary>
+ 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.Headers">
+ <summary>
+ Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ 鏍煎紡锛歿"Authorization":"userpassword.."}
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.RequestType">
+ <summary>
+ 璇锋眰绫诲瀷
+ </summary>
+ <example>2</example>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateJobInput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryJobInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.JobOutput">
+ <summary>
+ 浠诲姟淇℃伅---浠诲姟璇︽儏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.RunNumber">
+ <summary>
+ 宸叉墽琛屾鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.TimerStatus">
+ <summary>
+ 瀹氭椂鍣ㄧ姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.Exception">
+ <summary>
+ 寮傚父淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.JobName">
+ <summary>
+ 浠诲姟鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.DoOnce">
+ <summary>
+ 鍙墽琛屼竴娆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.StartNow">
+ <summary>
+ 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.ExecuteType">
+ <summary>
+ 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.Interval">
+ <summary>
+ 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.Cron">
+ <summary>
+ Cron琛ㄨ揪寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.TimerType">
+ <summary>
+ 瀹氭椂鍣ㄧ被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.RequestUrl">
+ <summary>
+ 璇锋眰url
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.RequestType">
+ <summary>
+ 璇锋眰绫诲瀷
+ </summary>
+ <example>2</example>
+ </member>
+ <member name="P:Admin.NET.Application.JobOutput.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TaskMethodInfo">
+ <summary>
+ 浠诲姟鏂规硶淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.MethodName">
+ <summary>
+ 鏂规硶鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.DeclaringType">
+ <summary>
+ 鏂规硶鎵�灞炵被鐨凾ype瀵硅薄
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.JobName">
+ <summary>
+ 浠诲姟鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.DoOnce">
+ <summary>
+ 鍙墽琛屼竴娆�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.StartNow">
+ <summary>
+ 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.ExecuteType">
+ <summary>
+ 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.Interval">
+ <summary>
+ 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.Cron">
+ <summary>
+ Cron琛ㄨ揪寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.TimerType">
+ <summary>
+ 瀹氭椂鍣ㄧ被鍨�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.RequestUrl">
+ <summary>
+ 璇锋眰url
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.RequestType">
+ <summary>
+ 璇锋眰绫诲瀷
+ </summary>
+ <example>2</example>
+ </member>
+ <member name="P:Admin.NET.Application.TaskMethodInfo.Remark">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysTimerService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.AddTimer(Admin.NET.Application.AddJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.AddTimerJob(Admin.NET.Application.AddJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.DeleteTimer(Admin.NET.Application.DeleteJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.GetTimer(Admin.NET.Application.QueryJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.GetTimerPageList(Admin.NET.Application.JobPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.StartTimerJob(Admin.NET.Application.AddJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.StopTimerJob(Admin.NET.Application.StopJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.UpdateTimber(Admin.NET.Application.UpdateJobInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysTimerService.StartTimerJob">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SysTimerService">
+ <summary>
+ 浠诲姟璋冨害鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysTimer},Admin.NET.Application.ISysCacheService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysTimerRep"></param>
+ <param name="cache"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.GetTimerPageList(Admin.NET.Application.JobPageInput)">
+ <summary>
+ 鍒嗛〉鑾峰彇浠诲姟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.GetLocalJobList">
+ <summary>
+ 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.AddTimer(Admin.NET.Application.AddJobInput)">
+ <summary>
+ 澧炲姞浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.DeleteTimer(Admin.NET.Application.DeleteJobInput)">
+ <summary>
+ 鍒犻櫎浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.UpdateTimber(Admin.NET.Application.UpdateJobInput)">
+ <summary>
+ 淇敼浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.GetTimer(Admin.NET.Application.QueryJobInput)">
+ <summary>
+ 鏌ョ湅浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.StopTimerJob(Admin.NET.Application.StopJobInput)">
+ <summary>
+ 鍋滄浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.StartTimerJob(Admin.NET.Application.AddJobInput)">
+ <summary>
+ 鍚姩浠诲姟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.AddTimerJob(Admin.NET.Application.AddJobInput)">
+ <summary>
+ 鏂板瀹氭椂浠诲姟
+ </summary>
+ <param name="input"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.StartTimerJob">
+ <summary>
+ 鍚姩鑷惎鍔ㄤ换鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysTimerService.GetTaskMethods">
+ <summary>
+ 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.CurrentUserInfo">
+ <summary>
+ 褰撳墠鐢ㄦ埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CurrentUserInfo.UserId">
+ <summary>
+ 鐢ㄦ埛id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CurrentUserInfo.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CurrentUserInfo.Name">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CurrentUserInfo.IsSuperAdmin">
+ <summary>
+ 鏄惁瓒呯骇绠$悊鍛�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AuthToken">
+ <summary>
+ AuthToken鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.AccessToken">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.ExpireIn">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.RefreshToken">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.Uid">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.OpenId">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.AccessCode">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.UnionId">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.Scope">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.TokenType">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.IdToken">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.MacAlgorithm">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.MacKey">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.Code">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.OauthToken">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.OauthTokenSecret">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.UserId">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.ScreenName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthToken.OauthCallbackConfirmed">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AuthUserInput">
+ <summary>
+ OAuth鐢ㄦ埛鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Uuid">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Username">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Nickname">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Avatar">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Blog">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Company">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Location">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Email">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Eemark">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Gender">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Source">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.Token">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AuthUserInput.RawUserInfo">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UserPageInput">
+ <summary>
+ 鐢ㄦ埛鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Sex">
+ <summary>
+ 鎬у埆-鐢穇1銆佸コ_2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.SearchStatus">
+ <summary>
+ 鎼滅储鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.GrantMenuIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.GrantRoleIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserPageInput.GrantOrgIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UserSelectorInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserSelectorInput.Name">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CreateUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Sex">
+ <summary>
+ 鎬у埆-鐢穇1銆佸コ_2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateUserInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Confirm">
+ <summary>
+ 纭瀵嗙爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Sex">
+ <summary>
+ 鎬у埆-鐢穇1銆佸コ_2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddUserInput.ProductionlineId">
+ <summary>
+ 鎵�灞炶溅闂翠骇绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CheckUserDataInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CheckUserDataInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DeleteUserInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Sex">
+ <summary>
+ 鎬у埆-鐢穇1銆佸コ_2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserInput.ProductionlineId">
+ <summary>
+ 鎵�灞炶溅闂翠骇绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateUserBaseInfoInput">
+ <summary>
+ 鏇存柊鐢ㄦ埛鍩烘湰淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.NickName">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Phone">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Email">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Sex">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Birthday">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserBaseInfoInput.Tel">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateUserRoleDataInput">
+ <summary>
+ 鏇存柊鐢ㄦ埛鎺堟潈鏁版嵁瑙掕壊鍜屾暟鎹寖鍥�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.SysEmpParam">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantMenuIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantRoleIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserRoleDataInput.GrantOrgIdList">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateUserStatusInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateUserStatusInput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ChangePasswordUserInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangePasswordUserInput.Password">
+ <summary>
+ 瀵嗙爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ChangePasswordUserInput.NewPassword">
+ <summary>
+ 鏂板瘑鐮�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UploadAvatarInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UploadAvatarInput.Avatar">
+ <summary>
+ 澶村儚鏂囦欢璺緞鏍囪瘑
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UserOutput">
+ <summary>
+ 鐢ㄦ埛鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Account">
+ <summary>
+ 璐﹀彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.NickName">
+ <summary>
+ 鏄电О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Avatar">
+ <summary>
+ 澶村儚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Birthday">
+ <summary>
+ 鐢熸棩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Sex">
+ <summary>
+ 鎬у埆-鐢穇1銆佸コ_2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Email">
+ <summary>
+ 閭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Phone">
+ <summary>
+ 鎵嬫満
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Tel">
+ <summary>
+ 鐢佃瘽
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.Status">
+ <summary>
+ 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.SysEmpInfo">
+ <summary>
+ 鍛樺伐淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UserOutput.ProductionlineId">
+ <summary>
+ 鎵�灞炶溅闂翠骇绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesWorkShopOutput">
+ <summary>
+ 浜х嚎鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesWorkShopOutput.Id">
+ <summary>
+ 浜х嚎Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesWorkShopOutput.LesWorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesWorkShopOutput.Name">
+ <summary>
+ 浜х嚎鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesWorkShopOutput.Code">
+ <summary>
+ 浜х嚎缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ISysUserDataScopeService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+
+ </summary>
+ <param name="orgIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserDataScopeService.DeleteUserDataScopeListByUserId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserDataScopeService.GetUserDataScopeIdList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserDataScopeService.GrantData(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysUserRoleService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserRoleService.DeleteUserRoleListByRoleId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserRoleService.DeleteUserRoleListByUserId(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserRoleService.GetUserRoleDataScopeIdList(System.Int64,System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserRoleService.GetUserRoleIdList(System.Int64,System.Boolean)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <param name="checkRoleStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserRoleService.GrantRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.ISysUserService">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.AddUser(Admin.NET.Application.AddUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.ChangeUserStatus(Admin.NET.Application.UpdateUserStatusInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.DeleteUser(Admin.NET.Application.DeleteUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.ExportUser">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUser(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="id"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserById(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserDataScopeIdList">
+ <summary>
+
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserDataScopeIdList(System.Int64)">
+ <summary>
+
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserOwnData(Admin.NET.Application.QueryUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserOwnRole(Admin.NET.Application.QueryUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetUserSelector(Admin.NET.Application.UserSelectorInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GrantUserData(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GrantUserRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.GetSysUserList">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.ImportUser(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.QueryUserPageList(Admin.NET.Application.UserPageInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.ResetUserPwd(Admin.NET.Application.QueryUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.SaveAuthUserToUser(Admin.NET.Application.AuthUserInput,Admin.NET.Application.CreateUserInput)">
+ <summary>
+
+ </summary>
+ <param name="authUser"></param>
+ <param name="sysUser"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.UpdateAvatar(Admin.NET.Application.UploadAvatarInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.UpdateUser(Admin.NET.Application.UpdateUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.UpdateUserInfo(Admin.NET.Application.UpdateUserBaseInfoInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.ISysUserService.UpdateUserPwd(Admin.NET.Application.ChangePasswordUserInput)">
+ <summary>
+
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysUserDataScopeService">
+ <summary>
+ 鐢ㄦ埛鏁版嵁鑼冨洿鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserDataScopeService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserDataScope})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysUserDataScopeRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserDataScopeService.GrantData(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+ 鎺堟潈鐢ㄦ埛鏁版嵁
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserDataScopeService.GetUserDataScopeIdList(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鐨勬暟鎹寖鍥碔d闆嗗悎
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(System.Collections.Generic.List{System.Int64})">
+ <summary>
+ 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ </summary>
+ <param name="orgIdList"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserDataScopeService.DeleteUserDataScopeListByUserId(System.Int64)">
+ <summary>
+ 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysUserRoleService">
+ <summary>
+ 鐢ㄦ埛瑙掕壊鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUserRole},Admin.NET.Application.ISysRoleService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysUserRoleRep"></param>
+ <param name="sysRoleService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.GetUserRoleIdList(System.Int64,System.Boolean)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鐨勮鑹睮d闆嗗悎
+ </summary>
+ <param name="userId"></param>
+ <param name="checkRoleStatus"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.GrantRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+ 鎺堟潈鐢ㄦ埛瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.GetUserRoleDataScopeIdList(System.Int64,System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鎵�鏈夎鑹茬殑鏁版嵁鑼冨洿锛堢粍缁囨満鏋処d闆嗗悎锛�
+ </summary>
+ <param name="userId"></param>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.DeleteUserRoleListByRoleId(System.Int64)">
+ <summary>
+ 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ </summary>
+ <param name="roleId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserRoleService.DeleteUserRoleListByUserId(System.Int64)">
+ <summary>
+ 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SysUserService">
+ <summary>
+ 鐢ㄦ埛鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysUser},Admin.NET.Application.ISysCacheService,Admin.NET.Application.ISysEmpService,Admin.NET.Application.ISysUserDataScopeService,Admin.NET.Application.ISysUserRoleService,Admin.NET.Application.ISysOrgService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysUserRep"></param>
+ <param name="lesProductionlineRep"></param>
+ <param name="sysCacheService"></param>
+ <param name="sysEmpService"></param>
+ <param name="sysUserDataScopeService"></param>
+ <param name="sysUserRoleService"></param>
+ <param name="sysOrgService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.QueryUserPageList(Admin.NET.Application.UserPageInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ鐢ㄦ埛
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.AddUser(Admin.NET.Application.AddUserInput)">
+ <summary>
+ 澧炲姞鐢ㄦ埛
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.DeleteUser(Admin.NET.Application.DeleteUserInput)">
+ <summary>
+ 鍒犻櫎鐢ㄦ埛
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.UpdateUser(Admin.NET.Application.UpdateUserInput)">
+ <summary>
+ 鏇存柊鐢ㄦ埛
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUser(System.Int64)">
+ <summary>
+ 鏌ョ湅鐢ㄦ埛
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.ChangeUserStatus(Admin.NET.Application.UpdateUserStatusInput)">
+ <summary>
+ 淇敼鐢ㄦ埛鐘舵��
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GrantUserRole(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+ 鎺堟潈鐢ㄦ埛瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GrantUserData(Admin.NET.Application.UpdateUserRoleDataInput)">
+ <summary>
+ 鎺堟潈鐢ㄦ埛鏁版嵁鑼冨洿
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.UpdateUserInfo(Admin.NET.Application.UpdateUserBaseInfoInput)">
+ <summary>
+ 鏇存柊鐢ㄦ埛淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.UpdateUserPwd(Admin.NET.Application.ChangePasswordUserInput)">
+ <summary>
+ 淇敼鐢ㄦ埛瀵嗙爜
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserOwnRole(Admin.NET.Application.QueryUserInput)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鎷ユ湁瑙掕壊
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserOwnData(Admin.NET.Application.QueryUserInput)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鎷ユ湁鏁版嵁
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.ResetUserPwd(Admin.NET.Application.QueryUserInput)">
+ <summary>
+ 閲嶇疆鐢ㄦ埛瀵嗙爜
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.UpdateAvatar(Admin.NET.Application.UploadAvatarInput)">
+ <summary>
+ 淇敼鐢ㄦ埛澶村儚
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserSelector(Admin.NET.Application.UserSelectorInput)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛閫夋嫨鍣�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetSysUserList">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.ExportUser">
+ <summary>
+ 鐢ㄦ埛瀵煎嚭
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.ImportUser(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ 鐢ㄦ埛瀵煎叆
+ </summary>
+ <param name="file"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserById(System.Int64)">
+ <summary>
+ 鏍规嵁鐢ㄦ埛Id鑾峰彇鐢ㄦ埛
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.SaveAuthUserToUser(Admin.NET.Application.AuthUserInput,Admin.NET.Application.CreateUserInput)">
+ <summary>
+ 灏哋Auth璐﹀彿杞崲鎴愯处鍙�
+ </summary>
+ <param name="authUser"></param>
+ <param name="sysUser"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserDataScopeIdList(System.Int64)">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛夊苟缂撳瓨
+ </summary>
+ <param name="userId"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.GetUserDataScopeIdList">
+ <summary>
+ 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.SysUserService.CheckDataScope(System.String)">
+ <summary>
+ 妫�鏌ユ櫘閫氱敤鎴锋暟鎹寖鍥�
+ 褰撴湁鐢ㄦ埛鏈夊涓粍缁囨椂锛屽湪鐧诲綍鏃堕�夋嫨涓�涓粍缁囷紝鎵�浠ョ粍缁噄d锛坥rgId锛変粠鍓嶇浼犺繃鏉�
+ </summary>
+ <param name="orgId"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent3Search">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.HasMoney">
+ <summary>
+ 闆惰姳閽�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Search.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent3SearchNonPage">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囦笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.HasMoney">
+ <summary>
+ 闆惰姳閽�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3SearchNonPage.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent3Input">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.HasMoney">
+ <summary>
+ 闆惰姳閽�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Input.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddTestStudent3Input">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨柊澧炲弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteTestStudent3Input">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垹闄ゅ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateTestStudent3Input">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨洿鏂板弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTestStudent3Input.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeTestStudent3Input">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪幏鍙栧崟涓弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent3Output">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.HasMoney">
+ <summary>
+ 闆惰姳閽�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent3Output.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent3Service">
+ <summary>
+ 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.Page(Admin.NET.Application.TestStudent3Search)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.ListNonPageAsync(Admin.NET.Application.TestStudent3SearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃3-鍒樻枃濂囧垪琛�
+ </summary>
+ <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+ <returns>(瀛︾敓淇℃伅琛�3-鍒樻枃濂�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.Add(Admin.NET.Application.AddTestStudent3Input)">
+ <summary>
+ 澧炲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.Delete(Admin.NET.Application.DeleteTestStudent3Input)">
+ <summary>
+ 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.Update(Admin.NET.Application.UpdateTestStudent3Input)">
+ <summary>
+ 鏇存柊瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.Get(Admin.NET.Application.QueryeTestStudent3Input)">
+ <summary>
+ 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.List(Admin.NET.Application.TestStudent3Input)">
+ <summary>
+ 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.ImportExcelAsync(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囧姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.CommonImport(System.Data.DataTable,System.Int32)">
+ <summary>
+ DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ </summary>
+ <param name="dataTable"></param>
+ <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.ToExcelAsync(Admin.NET.Application.TestStudent3SearchNonPage)">
+ <summary>
+ 鏍规嵁瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.CheckExisit(Admin.NET.Core.TestStudent3,System.Boolean)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ </summary>
+ <param name="input"></param>
+ <param name="isEdit"></param>
+ <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent3Service.CheckExisitForImport(System.Collections.Generic.List{Admin.NET.Core.TestStudent3})">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5Dto">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.Age">
+ <summary>
+ 骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Dto.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5Search">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.Age">
+ <summary>
+ 骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Search.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5SearchNonPage">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.Age">
+ <summary>
+ 骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5SearchNonPage.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5Input">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.Age">
+ <summary>
+ 骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Input.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddTestStudent5Input">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄦ柊澧炲弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteTestStudent5Input">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄥ垹闄ゅ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateTestStudent5Input">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄦ洿鏂板弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTestStudent5Input.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeTestStudent5Input">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄨ幏鍙栧崟涓弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5Output">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.Name">
+ <summary>
+ 濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.Age">
+ <summary>
+ 骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudent5Output.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudent5Service">
+ <summary>
+ 娴嬭瘯瀛︾敓琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.Page(Admin.NET.Application.TestStudent5Search)">
+ <summary>
+ 鍒嗛〉鏌ヨ娴嬭瘯瀛︾敓琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.ListNonPageAsync(Admin.NET.Application.TestStudent5SearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈡祴璇曞鐢熻〃鍒楄〃
+ </summary>
+ <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(娴嬭瘯瀛︾敓琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.Add(Admin.NET.Application.AddTestStudent5Input)">
+ <summary>
+ 澧炲姞娴嬭瘯瀛︾敓琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.Delete(Admin.NET.Application.DeleteTestStudent5Input)">
+ <summary>
+ 鍒犻櫎娴嬭瘯瀛︾敓琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.Update(Admin.NET.Application.UpdateTestStudent5Input)">
+ <summary>
+ 鏇存柊娴嬭瘯瀛︾敓琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.Get(Admin.NET.Application.QueryeTestStudent5Input)">
+ <summary>
+ 鑾峰彇娴嬭瘯瀛︾敓琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.List(Admin.NET.Application.TestStudent5Input)">
+ <summary>
+ 鑾峰彇娴嬭瘯瀛︾敓琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆娴嬭瘯瀛︾敓琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.CommonImport(System.Data.DataTable,System.Int32)">
+ <summary>
+ DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ </summary>
+ <param name="dataTable"></param>
+ <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.ToExcelAsync(Admin.NET.Application.TestStudent5SearchNonPage)">
+ <summary>
+ 鏍规嵁娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.CheckExisit(Admin.NET.Core.TestStudent5,System.Boolean,System.Int32)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ </summary>
+ <param name="input"></param>
+ <param name="isEdit"></param>
+ <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudent5Service.CheckExisit(System.Collections.Generic.List{Admin.NET.Core.TestStudent5},Admin.NET.Core.TestStudent5,System.Int32)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+ </summary>
+ <param name="inputs"></param>
+ <param name="input"></param>
+ <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudentSearch">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearch.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudentSearchNonPage">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ヤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentSearchNonPage.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudentInput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentInput.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddTestStudentInput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ柊澧炲弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteTestStudentInput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垹闄ゅ弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateTestStudentInput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ洿鏂板弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTestStudentInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeTestStudentInput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ幏鍙栧崟涓弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudentOutput">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.CreatedUserName">
+ <summary>
+ 鍒涘缓鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestStudentOutput.UpdatedUserName">
+ <summary>
+ 淇敼鑰呭悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestStudentService">
+ <summary>
+ 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.Page(Admin.NET.Application.TestStudentSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.ListNonPageAsync(Admin.NET.Application.TestStudentSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃1-閭甸暱绁ュ垪琛�
+ </summary>
+ <param name="input">瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�</param>
+ <returns>(瀛︾敓淇℃伅琛�1-閭甸暱绁�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.Get(Admin.NET.Application.QueryeTestStudentInput)">
+ <summary>
+ 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.List(Admin.NET.Application.TestStudentInput)">
+ <summary>
+ 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.Add(Admin.NET.Application.AddTestStudentInput)">
+ <summary>
+ 澧炲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.Delete(Admin.NET.Application.DeleteTestStudentInput)">
+ <summary>
+ 鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.Update(Admin.NET.Application.UpdateTestStudentInput)">
+ <summary>
+ 鏇存柊瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.ImportExcelAsync(Microsoft.AspNetCore.Http.IFormFile)">
+ <summary>
+ Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ュ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.CommonImport(System.Data.DataTable,System.Int32)">
+ <summary>
+ DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ </summary>
+ <param name="dataTable"></param>
+ <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.CheckExisit(Admin.NET.Core.TestStudent,System.Boolean)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ </summary>
+ <param name="input"></param>
+ <param name="isEdit"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestStudentService.CheckExisitForImport(System.Collections.Generic.List{Admin.NET.Core.TestStudent})">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ </summary>
+ <param name="inputs"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherDto">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherDto.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherSearch">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherSearch.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherSearchNonPage">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherSearchNonPage.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherInput">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherInput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTestTeacherInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherOutput">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherOutput.Name">
+ <summary>
+ 鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TestTeacherOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TestTeacherService">
+ <summary>
+ 娴嬭瘯鑰佸笀琛ㄦ湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.Page(Admin.NET.Application.TestTeacherSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ娴嬭瘯鑰佸笀琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.ListNonPageAsync(Admin.NET.Application.TestTeacherSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈡祴璇曡�佸笀琛ㄥ垪琛�
+ </summary>
+ <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(娴嬭瘯鑰佸笀琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.Add(Admin.NET.Application.AddTestTeacherInput)">
+ <summary>
+ 澧炲姞娴嬭瘯鑰佸笀琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.Delete(Admin.NET.Application.DeleteTestTeacherInput)">
+ <summary>
+ 鍒犻櫎娴嬭瘯鑰佸笀琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.Update(Admin.NET.Application.UpdateTestTeacherInput)">
+ <summary>
+ 鏇存柊娴嬭瘯鑰佸笀琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.Get(Admin.NET.Application.QueryeTestTeacherInput)">
+ <summary>
+ 鑾峰彇娴嬭瘯鑰佸笀琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.List(Admin.NET.Application.TestTeacherInput)">
+ <summary>
+ 鑾峰彇娴嬭瘯鑰佸笀琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆娴嬭瘯鑰佸笀琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.TestTeacherService.ToExcelAsync(Admin.NET.Application.TestTeacherSearchNonPage)">
+ <summary>
+ 鏍规嵁娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.VStudentSearch">
+ <summary>
+ 瀛︾敓瑙嗗浘鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearch.teacherName">
+ <summary>
+ 鑰佸笀鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.VStudentSearchNonPage">
+ <summary>
+ 瀛︾敓瑙嗗浘涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentSearchNonPage.teacherName">
+ <summary>
+ 鑰佸笀鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.VStudentInput">
+ <summary>
+ 瀛︾敓瑙嗗浘杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentInput.teacherName">
+ <summary>
+ 鑰佸笀鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddVStudentInput">
+ <summary>
+ 瀛︾敓瑙嗗浘鏂板鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteVStudentInput">
+ <summary>
+ 瀛︾敓瑙嗗浘鍒犻櫎鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateVStudentInput">
+ <summary>
+ 瀛︾敓瑙嗗浘鏇存柊鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeVStudentInput">
+ <summary>
+ 瀛︾敓瑙嗗浘鑾峰彇鍗曚釜鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.VStudentOutput">
+ <summary>
+ 瀛︾敓瑙嗗浘杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.Name">
+ <summary>
+ 瀛︾敓濮撳悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.Age">
+ <summary>
+ 瀛︾敓骞撮緞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.StartName">
+ <summary>
+ 鏄惁鍦ㄦ牎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.Gender">
+ <summary>
+ 鎬у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.BrithDate">
+ <summary>
+ 鍑虹敓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.TeacherId">
+ <summary>
+ 鍏宠仈鑰佸笀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.VStudentOutput.teacherName">
+ <summary>
+ 鑰佸笀鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.VStudentService">
+ <summary>
+ 瀛︾敓瑙嗗浘鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.Page(Admin.NET.Application.VStudentSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ瀛︾敓瑙嗗浘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.ListNonPageAsync(Admin.NET.Application.VStudentSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠鐢熻鍥惧垪琛�
+ </summary>
+ <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+ <returns>(瀛︾敓瑙嗗浘)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.Add(Admin.NET.Application.AddVStudentInput)">
+ <summary>
+ 澧炲姞瀛︾敓瑙嗗浘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.Delete(Admin.NET.Application.DeleteVStudentInput)">
+ <summary>
+ 鍒犻櫎瀛︾敓瑙嗗浘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.Update(Admin.NET.Application.UpdateVStudentInput)">
+ <summary>
+ 鏇存柊瀛︾敓瑙嗗浘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.Get(Admin.NET.Application.QueryeVStudentInput)">
+ <summary>
+ 鑾峰彇瀛︾敓瑙嗗浘
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.List(Admin.NET.Application.VStudentInput)">
+ <summary>
+ 鑾峰彇瀛︾敓瑙嗗浘鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆瀛︾敓瑙嗗浘鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.CommonImport(System.Data.DataTable,System.Int32)">
+ <summary>
+ DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ </summary>
+ <param name="dataTable"></param>
+ <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.ToExcelAsync(Admin.NET.Application.VStudentSearchNonPage)">
+ <summary>
+ 鏍规嵁瀛︾敓瑙嗗浘鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.CheckExisit(Admin.NET.Core.VStudent,System.Boolean,System.Int32)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ </summary>
+ <param name="input"></param>
+ <param name="isEdit"></param>
+ <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.VStudentService.CheckExisit(System.Collections.Generic.List{Admin.NET.Core.VStudent},Admin.NET.Core.VStudent,System.Int32)">
+ <summary>
+ 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+ </summary>
+ <param name="inputs"></param>
+ <param name="input"></param>
+ <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ </member>
+ <member name="T:Admin.NET.Application.AssembleInteractiveInput">
+ <summary>
+ 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AssembleInteractiveInput.BlankingProductionLine">
+ <summary>
+ 涓嬬嚎鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AssembleDestinationsInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AssembleDestinationsInput.locationName">
+ <summary>
+ 浣嶇疆锛堣捣鐐癸級/ 浣嶇疆锛堢粓鐐癸級
+ </summary>
+ <example>001H01B0101</example>
+ </member>
+ <member name="P:Admin.NET.Application.AssembleDestinationsInput.operation">
+ <summary>
+ 鍙栬揣鍔ㄤ綔锛氬眰鏁� / 鏀捐揣鍔ㄤ綔锛氬眰鏁� 2
+ </summary>
+ <example>Load cargo:00</example>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateAssembleTaskInput">
+ <summary>
+ 鏇存柊浠诲姟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.TaskAssembleDodeviceStatus">
+ <summary>
+ 璁惧浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAssembleTaskInput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FinishAssembleTaskInput">
+ <summary>
+ 寮哄埗瀹屾垚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FinishAssembleTaskInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateAgvWaring">
+ <summary>
+ 鏇存柊agv鎶ラ敊淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAgvWaring.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetAssembleTaskOutput">
+ <summary>
+ 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskLevel">
+ <summary>
+ 浠诲姟浼樺厛绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.Aisle">
+ <summary>
+ 宸烽亾/鎻愬崌鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAssembleTaskOutput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetAgvWaring">
+ <summary>
+ 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨刟gv鎶ヨ淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetAgvWaring.Aisle">
+ <summary>
+ 宸烽亾/鎻愬崌鏈�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.InteractiveInput">
+ <summary>
+ 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InteractiveInput.BlankingProductionLine">
+ <summary>
+ 涓嬬嚎鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPlaceInput">
+ <summary>
+ 鏌ヨ鎵�鏈夌┖闂插簱浣嶈緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPlaceInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateTaskInput">
+ <summary>
+ 鏇存柊浠诲姟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTaskInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTaskInput.TaskDodeviceStatus">
+ <summary>
+ 璁惧浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateTaskInput.weight">
+ <summary>
+ 绉伴噸閲嶉噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FinishTaskInput">
+ <summary>
+ 寮哄埗瀹屾垚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FinishTaskInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CreateRelocationInput">
+ <summary>
+ 鏇存柊浠诲姟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateRelocationInput.SourcePlace">
+ <summary>
+ 浠诲姟璧风偣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CreateRelocationInput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddDeviceWaringInput">
+ <summary>
+ 娣诲姞璁惧鎶ヨ淇℃伅杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddDeviceWaringInput.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetSendTaskOutput">
+ <summary>
+ 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetSendTaskOutput.taskDetail">
+ <summary>
+ 浠诲姟璇︽儏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetSendTaskOutput.materialDetail">
+ <summary>
+ 鐗╂枡璇︽儏
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SendTaskDetailOutput">
+ <summary>
+ 浠诲姟璇︽儏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskLevel">
+ <summary>
+ 浠诲姟浼樺厛绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.SourcePlace">
+ <summary>
+ 浠诲姟鐨勮捣鐐�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendTaskDetailOutput.ContainerCode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SendMaterialDetailOutput">
+ <summary>
+ 鐗╂枡璇︽儏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SendMaterialDetailOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPlaceOutput">
+ <summary>
+ 鑾峰彇绌洪棽鐨勫簱浣�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPlaceOutput.ToPlace">
+ <summary>
+ 鍏ュ簱搴撲綅鐩爣鐐�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPlaceOutput.SourcePlace">
+ <summary>
+ 绉诲簱搴撲綅璧风偣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPlaceOutput.TaskIsExist">
+ <summary>
+ 浠诲姟鏄惁瀛樺湪
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetYiKuPlaceOutput">
+ <summary>
+ 鑾峰彇绉诲簱搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetYiKuPlaceOutput.ToPlace">
+ <summary>
+ 绉诲簱搴撲綅鐩爣鐐�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetYiKuPlaceOutput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareWcsToWmsService">
+ <summary>
+ 鎷涘晢LES WCS璋冪敤鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesPackWarehouse,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesDeviceWaring,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetSendTask">
+ <summary>
+ 瀹氭椂鏌ヨWCS鍙互涓嬪彂鐨勫嚭鍏ュ簱浠诲姟(10鏉�)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.UpdateTask(Admin.NET.Application.UpdateTaskInput)">
+ <summary>
+ 鏇存柊浠诲姟淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetPlace(Admin.NET.Application.GetPlaceInput)">
+ <summary>
+ 鑾峰彇搴撲綅淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.CreateRelocation(Admin.NET.Application.CreateRelocationInput)">
+ <summary>
+ 鍒涘缓绉诲簱浠诲姟
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.CancelTask(Admin.NET.Application.FinishTaskInput)">
+ <summary>
+ 鍙栨秷浠诲姟
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.CheckPack">
+ <summary>
+ wcs璇诲彇鎺ュ彛鍒ゆ柇鐗╂枡鏄惁缁勭洏鍑哄簱 true浠h〃宸茬粡缁勭洏鍑哄簱
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.AddDeviceWaring(Admin.NET.Application.AddDeviceWaringInput)">
+ <summary>
+ 璁惧鎶ヨ淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetOneRowByAisle(System.Int32)">
+ <summary>
+ 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+ </summary>
+ <param name="Aisle"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetTwoRowByAisle(System.Int32)">
+ <summary>
+ 鏍规嵁宸烽亾鑾峰彇鍐呬晶绗簩鎺�
+ </summary>
+ <param name="Aisle"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetThreeRowByAisle(System.Int32)">
+ <summary>
+ 鏍规嵁宸烽亾鑾峰彇澶栦晶绗簩鎺�
+ </summary>
+ <param name="Aisle"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WareWcsToWmsService.GetFourRowByAisle(System.Int32)">
+ <summary>
+ 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+ </summary>
+ <param name="Aisle"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.AccessDetailsDto">
+ <summary>
+ 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.TaskLevel">
+ <summary>
+ 浠诲姟绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.SourcePlace">
+ <summary>
+ 鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.ToPlace">
+ <summary>
+ 鐩爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.MaterialId">
+ <summary>
+ 鐗╂枡Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.BindQuantity">
+ <summary>
+ 鎿嶄綔鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsDto.BindStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.View_AccessDetailsSearch">
+ <summary>
+ 鍑哄叆搴撹褰曟煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskLevel">
+ <summary>
+ 浠诲姟绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.SourcePlace">
+ <summary>
+ 鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ToPlace">
+ <summary>
+ 鐩爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.MaterialId">
+ <summary>
+ 鐗╂枡Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.BindQuantity">
+ <summary>
+ 鎿嶄綔鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsSearch.BindStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AccessDetailsInput">
+ <summary>
+ 鍑哄叆搴撹褰曡緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.TaskLevel">
+ <summary>
+ 浠诲姟绛夌骇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.SourcePlace">
+ <summary>
+ 鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.ToPlace">
+ <summary>
+ 鐩爣
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.MaterialId">
+ <summary>
+ 鐗╂枡Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.BindQuantity">
+ <summary>
+ 鎿嶄綔鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AccessDetailsInput.BindStatus">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddAccessDetailsInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteAccessDetailsInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateAccessDetailsInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeAccessDetailsInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.View_AccessDetailsOutput">
+ <summary>
+ 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.Description">
+ <summary>
+ 鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.UpdatedTime">
+ <summary>
+ 淇敼鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskCreatedTime">
+ <summary>
+ 浠诲姟寮�濮嬫椂闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.TaskUpdatedTime">
+ <summary>
+ 浠诲姟缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.View_AccessDetailsOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AccessDetailsService">
+ <summary>
+ 鍑哄叆搴撹褰曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.AccessDetailsService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.Entity.VAccessDetails,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="vAccessDetailsRep"></param>
+ </member>
+ <member name="M:Admin.NET.Application.AccessDetailsService.Page(Admin.NET.Application.View_AccessDetailsSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍑哄叆搴撹褰�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringDto">
+ <summary>
+ 璁惧鎶ヨ杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringSearch">
+ <summary>
+ 璁惧鎶ヨ鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringSearchNonPage">
+ <summary>
+ 璁惧鎶ヨ涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringInput">
+ <summary>
+ 璁惧鎶ヨ杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateLesDeviceWaringInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringOutput">
+ <summary>
+ 璁惧鎶ヨ杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.WcsId">
+ <summary>
+ WcsId
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.DeviceName">
+ <summary>
+ 璁惧鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.FaultName">
+ <summary>
+ 鏁呴殰鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.StartTime">
+ <summary>
+ 鍙戠敓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.EndTime">
+ <summary>
+ 缁撴潫鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.RunningTime">
+ <summary>
+ 鎸佺画鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.LesDeviceWaringOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LesDeviceWaringService">
+ <summary>
+ 璁惧鎶ヨ鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesDeviceWaring,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.Page(Admin.NET.Application.LesDeviceWaringSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ璁惧鎶ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.ListNonPageAsync(Admin.NET.Application.LesDeviceWaringSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈣澶囨姤璀﹀垪琛�
+ </summary>
+ <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+ <returns>(璁惧鎶ヨ)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.Add(Admin.NET.Application.AddLesDeviceWaringInput)">
+ <summary>
+ 澧炲姞璁惧鎶ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.Delete(Admin.NET.Application.DeleteLesDeviceWaringInput)">
+ <summary>
+ 鍒犻櫎璁惧鎶ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.Update(Admin.NET.Application.UpdateLesDeviceWaringInput)">
+ <summary>
+ 鏇存柊璁惧鎶ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.Get(Admin.NET.Application.QueryeLesDeviceWaringInput)">
+ <summary>
+ 鑾峰彇璁惧鎶ヨ
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.List(Admin.NET.Application.LesDeviceWaringInput)">
+ <summary>
+ 鑾峰彇璁惧鎶ヨ鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆璁惧鎶ヨ鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.LesDeviceWaringService.ToExcelAsync(Admin.NET.Application.LesDeviceWaringSearchNonPage)">
+ <summary>
+ 鏍规嵁璁惧鎶ヨ鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.LocationViewInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPalceAisleInput">
+ <summary>
+ 鑾峰彇搴撲綅瀵瑰簲鐨勫贩閬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceAisleInput.Areaid">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPalceAisleRownoInput">
+ <summary>
+ 鑾峰彇搴撲綅鍜屽贩閬撹幏鍙栧搴旂殑鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceAisleRownoInput.Areaid">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceAisleRownoInput.Aisleid">
+ <summary>
+ 宸烽亾ID
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPalceListInput">
+ <summary>
+ 鑾峰彇搴撲綅鍒楄〃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceListInput.Areaid">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceListInput.Aisleid">
+ <summary>
+ 宸烽亾Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPalceListInput.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetMaterialDetailInput">
+ <summary>
+ 鑾峰彇搴撲綅瀵瑰簲鐨勪俊鎭�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PalceInfoOtput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.countNum">
+ <summary>
+ 鎬诲簱浣嶆暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.cunhuoNum">
+ <summary>
+ 鎬诲瓨璐ф暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.emptyNum">
+ <summary>
+ 绌哄簱浣嶆暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.emptyContainerNum">
+ <summary>
+ 绌烘墭鐩樻暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.materialNum">
+ <summary>
+ 鐗╂枡鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.lockNum">
+ <summary>
+ 閿佸畾搴撲綅鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.DaiRuNum">
+ <summary>
+ 寰呭叆搴撲綅鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.DaichuNum">
+ <summary>
+ 寰呭嚭搴撲綅鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceInfoOtput.PalceDetails">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareLocationAisleData">
+ <summary>
+ 宸�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationAisleData.Aisle">
+ <summary>
+ 宸�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationAisleData.wareLocationRownoData">
+ <summary>
+ 宸峰睘鎬ф暟鎹�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareLocationRownoData">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationRownoData.Rowno">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationRownoData.wareLocationLayerData">
+ <summary>
+ 鎺掑睘鎬ф暟鎹�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareLocationLayerData">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationLayerData.Layer">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WareLocationLayerData.wareLocationColumnNoData">
+ <summary>
+ 灞傚睘鎬ф暟鎹�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialDetailsOutput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialDetailsOutput.Containercode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialDetailsOutput.PalceDetails">
+ <summary>
+ 搴撲綅瀵硅薄
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialDetailsOutput.WmsMaterialStocks">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PalceDetail">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.PlaceCode">
+ <summary>
+ 搴撲綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.PlaceStatus">
+ <summary>
+ 搴撲綅鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.Islock">
+ <summary>
+ 鏄惁閿佸畾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.EmptyContainer">
+ <summary>
+ 鏄惁绌烘墭鐩�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.RowNo">
+ <summary>
+ 鎺�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.ColumnNo">
+ <summary>
+ 鍒�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PalceDetail.LayerNo">
+ <summary>
+ 灞�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.LocationViewService">
+ <summary>
+ 搴撲綅璇曞浘鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.GetArea">
+ <summary>
+ 鑾峰彇搴撳尯淇℃伅
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.GetPalceAisle(Admin.NET.Application.GetPalceAisleInput)">
+ <summary>
+ 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.GetPalceRowno(Admin.NET.Application.GetPalceAisleRownoInput)">
+ <summary>
+ 鏍规嵁搴撳尯鍜屽贩閬撹幏鍙栨帓
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.GetPalceList(Admin.NET.Application.GetPalceListInput)">
+ <summary>
+ 鏍规嵁搴撳尯 鎺掕幏鍙栧簱浣嶄俊鎭�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.GetMaterialDetail(Admin.NET.Application.GetMaterialDetailInput)">
+ <summary>
+ 鏍规嵁搴撲綅鑾峰彇瀵瑰簲淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.UpdatePalceIslock(Admin.NET.Application.GetMaterialDetailInput)">
+ <summary>
+ 淇敼搴撲綅閿佸畾淇℃伅
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.LocationViewService.UpdatePalceKongXian(Admin.NET.Application.GetMaterialDetailInput)">
+ <summary>
+ 灏嗗簱浣嶇疆涓虹┖闂�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialStockDto">
+ <summary>
+ 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.WmsAreaAreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialType">
+ <summary>
+ 鐗╂枡绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.StockNumber">
+ <summary>
+ 搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.AreaId">
+ <summary>
+ 搴撳尯ID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsMaterialStockSearch">
+ <summary>
+ 搴撳瓨琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialType">
+ <summary>
+ 鐗╂枡绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.StockNumber">
+ <summary>
+ 搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.DrawingNo">
+ <summary>
+ 鍥惧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsMaterialStockSearch.ShipNo">
+ <summary>
+ 鑸瑰彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialStockSearch">
+ <summary>
+ 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夋煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialType">
+ <summary>
+ 鐗╂枡绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.StockNumber">
+ <summary>
+ 搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockSearch.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialStockInput">
+ <summary>
+ 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.StockNumber">
+ <summary>
+ 搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockInput.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddMaterialStockInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteMaterialStockInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateMaterialStockInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateMaterialStockInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeMaterialStockInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AreaEntranceListOutput">
+ <summary>
+ 鑾峰彇搴撳彛浠撳簱涓嬫媺妗嗚緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AreaEntranceListOutput.AreaId">
+ <summary>
+ 浠撳簱Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AreaEntranceListOutput.AreaName">
+ <summary>
+ 浠撳簱鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialStockOutput">
+ <summary>
+ 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialType">
+ <summary>
+ 鐗╂枡绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.StockNumber">
+ <summary>
+ 搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.AreaName">
+ <summary>
+ 搴撳尯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialStockOutput.CreatedTime">
+ <summary>
+ 鍏ュ簱鏃堕棿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialStockService">
+ <summary>
+ 搴撳瓨淇℃伅鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.Page(Admin.NET.Application.WmsMaterialStockSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ搴撳瓨琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.Add(Admin.NET.Application.AddMaterialStockInput)">
+ <summary>
+ 澧炲姞搴撳瓨琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.Delete(Admin.NET.Application.DeleteMaterialStockInput)">
+ <summary>
+ 鍒犻櫎搴撳瓨琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.Update(Admin.NET.Application.UpdateMaterialStockInput)">
+ <summary>
+ 鏇存柊搴撳瓨琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.Get(Admin.NET.Application.QueryeMaterialStockInput)">
+ <summary>
+ 鑾峰彇搴撳瓨琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.List(Admin.NET.Application.MaterialStockInput)">
+ <summary>
+ 鑾峰彇搴撳瓨琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialStockService.FkWmsAreaList">
+ <summary>
+ 鑾峰彇WmsArea鍒楄〃
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskDto">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.StartPlace">
+ <summary>
+ 璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.EndPlace">
+ <summary>
+ 缁撴潫浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.AgvState">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.TransportOrder">
+ <summary>
+ 褰撳墠鎵ц鐨勪换鍔�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.TaskNo">
+ <summary>
+ 涓讳换鍔″彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.Pid">
+ <summary>
+ Agv鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskSearch">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.StartPlace">
+ <summary>
+ 璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.EndPlace">
+ <summary>
+ 缁撴潫浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.AgvState">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.TransportOrder">
+ <summary>
+ 褰撳墠鎵ц鐨勪换鍔�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.TaskNo">
+ <summary>
+ 涓讳换鍔″彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.Pid">
+ <summary>
+ Agv鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskSearchNonPage">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.StartPlace">
+ <summary>
+ 璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.EndPlace">
+ <summary>
+ 缁撴潫浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.AgvState">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TransportOrder">
+ <summary>
+ 褰撳墠鎵ц鐨勪换鍔�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.TaskNo">
+ <summary>
+ 涓讳换鍔″彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.Pid">
+ <summary>
+ Agv鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskInput">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.StartPlace">
+ <summary>
+ 璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.EndPlace">
+ <summary>
+ 缁撴潫浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.AgvState">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.TransportOrder">
+ <summary>
+ 褰撳墠鎵ц鐨勪换鍔�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.TaskNo">
+ <summary>
+ 涓讳换鍔″彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.Pid">
+ <summary>
+ Agv鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddAgvTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteAgvTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateAgvTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateAgvTaskInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeAgvTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskFinishInput">
+ <summary>
+ 寮哄埗瀹屾垚
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AgvTaskOutput">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.StartPlace">
+ <summary>
+ 璧峰浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.EndPlace">
+ <summary>
+ 缁撴潫浣嶇疆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.AgvState">
+ <summary>
+ 鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.TransportOrder">
+ <summary>
+ 褰撳墠鎵ц鐨勪换鍔�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.TaskNo">
+ <summary>
+ 涓讳换鍔″彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.Pid">
+ <summary>
+ Agv鐖禝d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.WorkShopType">
+ <summary>
+ 鎵�灞炶溅闂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AgvTaskOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsAgvTaskService">
+ <summary>
+ AGV鍑哄叆搴撲换鍔$鐞嗘湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ <param name="sysDictTypeRep"></param>
+ <param name="sysDictDataRep"></param>
+ <param name="agvTaskRep"></param>
+ <param name="wmsTaskRep"></param>
+ <param name="sysExcelTemplateService"></param>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Page(Admin.NET.Application.AgvTaskSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨAGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.ListNonPageAsync(Admin.NET.Application.AgvTaskSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇GV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ <returns>(AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Add(Admin.NET.Application.AddAgvTaskInput)">
+ <summary>
+ 澧炲姞AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Delete(Admin.NET.Application.DeleteAgvTaskInput)">
+ <summary>
+ 鍒犻櫎AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Update(Admin.NET.Application.UpdateAgvTaskInput)">
+ <summary>
+ 鏇存柊AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Finish(Admin.NET.Application.AgvTaskFinishInput)">
+ <summary>
+ 寮哄埗瀹屾垚
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.Get(Admin.NET.Application.QueryeAgvTaskInput)">
+ <summary>
+ 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.List(Admin.NET.Application.AgvTaskInput)">
+ <summary>
+ 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsAgvTaskService.ToExcelAsync(Admin.NET.Application.AgvTaskSearchNonPage)">
+ <summary>
+ 鏍规嵁AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.TaskDto">
+ <summary>
+ 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.IsRead">
+ <summary>
+ WCS鏄惁鍙互璇诲彇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.ContainerCode">
+ <summary>
+ 鎵樼洏缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.OrderDetailsId">
+ <summary>
+ 鍗曟嵁鏄庣粏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.OrderNo">
+ <summary>
+ 缁勭洏璁板綍鍗曟嵁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.SendTimes">
+ <summary>
+ 鍙戦�佹鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.DodeviceId">
+ <summary>
+ 浠诲姟鎵ц鍫嗗灈鏈篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.DodevicenodeId">
+ <summary>
+ 璁惧鎵ц鑺傜偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.Dodevicetype">
+ <summary>
+ 璁惧绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.TaskDodeviceStatus">
+ <summary>
+ 浠诲姟璁惧鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTaskSearch">
+ <summary>
+ 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.Batch">
+ <summary>
+ 鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.MaterialDensity">
+ <summary>
+ 瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.IsRead">
+ <summary>
+ WCS鏄惁鍙互璇诲彇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.ContainerCode">
+ <summary>
+ 鎵樼洏缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.OrderDetailsId">
+ <summary>
+ 鍗曟嵁鏄庣粏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.OrderNo">
+ <summary>
+ 缁勭洏璁板綍鍗曟嵁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.SendTimes">
+ <summary>
+ 鍙戦�佹鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.DodeviceId">
+ <summary>
+ 浠诲姟鎵ц鍫嗗灈鏈篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.DodevicenodeId">
+ <summary>
+ 璁惧鎵ц鑺傜偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.Dodevicetype">
+ <summary>
+ 璁惧绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.TaskDodeviceStatus">
+ <summary>
+ 浠诲姟璁惧鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTaskFinishInput">
+ <summary>
+ 寮哄埗瀹屾垚杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateTaskLevelInput">
+ <summary>
+ 鏇存柊浠诲姟浼樺厛绾�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CancelInput">
+ <summary>
+ 鎵归噺鍙栨秷浠诲姟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CancelInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.BatchCancelInput">
+ <summary>
+ 鎵归噺鍙栨秷浠诲姟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BatchCancelInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.BatchBreakInput">
+ <summary>
+ 鎵归噺鏆傚仠浠诲姟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BatchBreakInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.BatchContinueInput">
+ <summary>
+ 鎵归噺缁х画浠诲姟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.BatchContinueInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTaskSearchNonPage">
+ <summary>
+ 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.IsRead">
+ <summary>
+ WCS鏄惁鍙互璇诲彇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.ContainerCode">
+ <summary>
+ 鎵樼洏缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.OrderDetailsId">
+ <summary>
+ 鍗曟嵁鏄庣粏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.OrderNo">
+ <summary>
+ 缁勭洏璁板綍鍗曟嵁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.SendTimes">
+ <summary>
+ 鍙戦�佹鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.DodeviceId">
+ <summary>
+ 浠诲姟鎵ц鍫嗗灈鏈篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.DodevicenodeId">
+ <summary>
+ 璁惧鎵ц鑺傜偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.Dodevicetype">
+ <summary>
+ 璁惧绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.TaskDodeviceStatus">
+ <summary>
+ 浠诲姟璁惧鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTaskSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TaskInput">
+ <summary>
+ 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.IsRead">
+ <summary>
+ WCS鏄惁鍙互璇诲彇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.OrderDetailsId">
+ <summary>
+ 鍗曟嵁鏄庣粏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.OrderNo">
+ <summary>
+ 缁勭洏璁板綍鍗曟嵁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.SendTimes">
+ <summary>
+ 鍙戦�佹鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.DodeviceId">
+ <summary>
+ 浠诲姟鎵ц鍫嗗灈鏈篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.DodevicenodeId">
+ <summary>
+ 璁惧鎵ц鑺傜偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.Dodevicetype">
+ <summary>
+ 璁惧绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.TaskDodeviceStatus">
+ <summary>
+ 浠诲姟璁惧鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AddWmsTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DeleteWmsTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.UpdateWmsTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsTaskInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.QueryeWmsTaskInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TaskOutput">
+ <summary>
+ 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskModel">
+ <summary>
+ 浠诲姟鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskType">
+ <summary>
+ 浠诲姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskLevel">
+ <summary>
+ 浠诲姟绾у埆
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskStatus">
+ <summary>
+ 浠诲姟鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.IsRead">
+ <summary>
+ WCS鏄惁鍙互璇诲彇
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.IsReadName">
+ <summary>
+ WCS鏄惁鍙互璇诲彇鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.SourcePlace">
+ <summary>
+ 璧峰搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.ToPlace">
+ <summary>
+ 鐩爣搴撲綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.AreaName">
+ <summary>
+ 搴撳尯鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.OrderDetailsId">
+ <summary>
+ 鍗曟嵁鏄庣粏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.OrderNo">
+ <summary>
+ 缁勭洏璁板綍鍗曟嵁鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.SendTimes">
+ <summary>
+ 鍙戦�佹鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.DodeviceId">
+ <summary>
+ 浠诲姟鎵ц鍫嗗灈鏈篒d
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.DodevicenodeId">
+ <summary>
+ 璁惧鎵ц鑺傜偣Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.Dodevicetype">
+ <summary>
+ 璁惧绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.TaskDodeviceStatus">
+ <summary>
+ 浠诲姟璁惧鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.AgvState">
+ <summary>
+ Agv鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.Batch">
+ <summary>
+ 鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.MaterialDensity">
+ <summary>
+ 瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.MaterialSpec">
+ <summary>
+ 瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.CreatedTime">
+ <summary>
+ 鍒涘缓鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.UpdatedTime">
+ <summary>
+ 鏇存柊鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.BlankingProductionLine">
+ <summary>
+ 涓嬫枡浜х嚎
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TaskOutput.Description">
+ <summary>
+ 鍏ュ簱鏉ユ簮
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTaskService">
+ <summary>
+ 浠诲姟绠$悊鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.AgvTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Admin.NET.Application.ISysExcelTemplateService)">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Page(Admin.NET.Application.WmsTaskSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍑哄叆搴撲换鍔$鐞�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.ListNonPageAsync(Admin.NET.Application.WmsTaskSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠嚭鍏ュ簱浠诲姟绠$悊鍒楄〃
+ </summary>
+ <param name="input">鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁�</param>
+ <returns>(鍑哄叆搴撲换鍔$鐞�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Add(Admin.NET.Application.AddWmsTaskInput)">
+ <summary>
+ 澧炲姞鍑哄叆搴撲换鍔$鐞�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Delete(Admin.NET.Application.DeleteWmsTaskInput)">
+ <summary>
+ 鍒犻櫎鍑哄叆搴撲换鍔$鐞�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Update(Admin.NET.Application.UpdateWmsTaskInput)">
+ <summary>
+ 鏇存柊鍑哄叆搴撲换鍔$鐞�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Finish(Admin.NET.Application.WmsTaskFinishInput)">
+ <summary>
+ 寮哄埗瀹屾垚
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.UpwardTaskLevel(Admin.NET.Application.UpdateTaskLevelInput)">
+ <summary>
+ 鏇存柊浼樺厛绾�(鍚戜笂)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.DownTaskLevel(Admin.NET.Application.UpdateTaskLevelInput)">
+ <summary>
+ 鏇存柊浼樺厛绾�(鍚戜笅)
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.CancelTask(Admin.NET.Application.CancelInput)">
+ <summary>
+ 鍙栨秷
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.BatchCancel(Admin.NET.Application.BatchCancelInput)">
+ <summary>
+ 鎵归噺鍙栨秷
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.BatchBreak(Admin.NET.Application.BatchBreakInput)">
+ <summary>
+ 鎵归噺鏆傚仠
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.BatchContinue(Admin.NET.Application.BatchContinueInput)">
+ <summary>
+ 鎵归噺缁х画
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.Get(Admin.NET.Application.QueryeWmsTaskInput)">
+ <summary>
+ 鑾峰彇鍑哄叆搴撲换鍔$鐞�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.List(Admin.NET.Application.TaskInput)">
+ <summary>
+ 鑾峰彇鍑哄叆搴撲换鍔$鐞嗗垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍑哄叆搴撲换鍔$鐞嗗姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鍑哄叆搴撲换鍔$鐞嗙殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTaskService.ToExcelAsync(Admin.NET.Application.WmsTaskSearchNonPage)">
+ <summary>
+ 鏍规嵁鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderDto">
+ <summary>
+ 杞偍鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.Creator">
+ <summary>
+ 鍒涘缓浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderSearch">
+ <summary>
+ 杞偍鍗曟煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Creator">
+ <summary>
+ 鍒涘缓浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderSearchNonPage">
+ <summary>
+ 杞偍鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Creator">
+ <summary>
+ 鍒涘缓浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderInput">
+ <summary>
+ 杞偍鍗曡緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.Creator">
+ <summary>
+ 鍒涘缓浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsDumpOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DumpPageDetailInput">
+ <summary>
+ 鑾峰彇鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderOutput">
+ <summary>
+ 杞偍鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Creator">
+ <summary>
+ 鍒涘缓浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsDumpOrderOutput.Dtls">
+ <summary>
+ 瀵瑰簲YiGo绯荤粺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DumpPageDetailOutput">
+ <summary>
+ 杞偍鍗曡鎯呰緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Length">
+ <summary>
+ 闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.ProjectCode">
+ <summary>
+ 搴撳瓨椤圭洰缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.Projectcode_To">
+ <summary>
+ 鏂板簱瀛橀」鐩紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DumpPageDetailOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderOutputByYiGO">
+ <summary>
+ yigo杞偍鍗曡幏鍙栧弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsDumpOrderService">
+ <summary>
+ 杞偍鍗曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.Page(Admin.NET.Application.WmsDumpOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.PageDetail(Admin.NET.Application.DumpPageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.GetDumpOrder">
+ <summary>
+ 澧炲姞杞偍鍗�(yigo绯荤粺鑾峰彇)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.ExecuteDumpOrder(Admin.NET.Application.DumpPageDetailInput)">
+ <summary>
+ 鎵ц杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.ListNonPageAsync(Admin.NET.Application.WmsDumpOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈣浆鍌ㄥ崟鍒楄〃
+ </summary>
+ <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+ <returns>(杞偍鍗�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.Add(Admin.NET.Application.AddWmsDumpOrderInput)">
+ <summary>
+ 澧炲姞杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.Delete(Admin.NET.Application.DeleteWmsDumpOrderInput)">
+ <summary>
+ 鍒犻櫎杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.Update(Admin.NET.Application.UpdateWmsDumpOrderInput)">
+ <summary>
+ 鏇存柊杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.Get(Admin.NET.Application.QueryeWmsDumpOrderInput)">
+ <summary>
+ 鑾峰彇杞偍鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.List(Admin.NET.Application.WmsDumpOrderInput)">
+ <summary>
+ 鑾峰彇杞偍鍗曞垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆杞偍鍗曞姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsDumpOrderService.ToExcelAsync(Admin.NET.Application.WmsDumpOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁杞偍鍗曟煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderDto">
+ <summary>
+ 閫�璐у崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.GoodsReturnStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderSearch">
+ <summary>
+ 閫�璐у崟鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.GoodsReturnStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage">
+ <summary>
+ 閫�璐у崟涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.GoodsReturnStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderInput">
+ <summary>
+ 閫�璐у崟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.GoodsReturnStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsGoodsReturnOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GoodsReturnOrdePageDetailInput">
+ <summary>
+ 閫�璐у崟鑾峰彇鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GoodsReturnOrdePageDetailInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderInput">
+ <summary>
+ 閫�璐т笅鏋剁粰yigo绯荤粺鐨勫弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.SOID">
+ <summary>
+ YIGO绯荤粺id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.NO">
+ <summary>
+ 鍏ュ簱閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.WMSNO">
+ <summary>
+ WMS閫�璐у崟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Billdate">
+ <summary>
+ 涓嬫灦鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInput.Dtls">
+ <summary>
+ 閫�璐ц鎯�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail">
+ <summary>
+ 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.OID">
+ <summary>
+ OID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.SumWeight">
+ <summary>
+ 閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.DestStoreareacode">
+ <summary>
+ 搴撳尯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderInputDetail.DestLocationcode">
+ <summary>
+ 鍌ㄤ綅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderOutput">
+ <summary>
+ 閫�璐у崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.GoodsReturnStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderOutput.Dtls">
+ <summary>
+ 瀵瑰簲YiGo绯荤粺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput">
+ <summary>
+ 閫�璐у崟璇︽儏杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Batchno_WMS">
+ <summary>
+ 鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsGoodsReturnOrderDetailOutput.ReceivingStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetGoodsReturnOrderOutputByYiGo">
+ <summary>
+ yigo鑾峰彇閫�璐у崟杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnGoodsReturnOrderOutput">
+ <summary>
+ 閫�璐т笅鏋惰繑鍥炲弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderOutput.Result">
+ <summary>
+ 缁撴灉鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnGoodsReturnOrderOutput.Status">
+ <summary>
+ 璇锋眰鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsGoodsReturnOrderService">
+ <summary>
+ 閫�璐у崟鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Page(Admin.NET.Application.WmsGoodsReturnOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ閫�璐у崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.PageDetail(Admin.NET.Application.GoodsReturnOrdePageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.GetGoodsReturnOrder">
+ <summary>
+ 鑾峰彇閫�璐у崟(yigo绯荤粺)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ReturnGoodsReturnOrder(Admin.NET.Application.ReturnGoodsReturnOrderInput)">
+ <summary>
+ 閫�璐т笅鏋舵帴鍙�(yigo绯荤粺)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ListNonPageAsync(Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈤��璐у崟鍒楄〃
+ </summary>
+ <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+ <returns>(閫�璐у崟)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Add(Admin.NET.Application.AddWmsGoodsReturnOrderInput)">
+ <summary>
+ 澧炲姞閫�璐у崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Delete(Admin.NET.Application.DeleteWmsGoodsReturnOrderInput)">
+ <summary>
+ 鍒犻櫎閫�璐у崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Update(Admin.NET.Application.UpdateWmsGoodsReturnOrderInput)">
+ <summary>
+ 鏇存柊閫�璐у崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.Get(Admin.NET.Application.QueryeWmsGoodsReturnOrderInput)">
+ <summary>
+ 鑾峰彇閫�璐у崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.List(Admin.NET.Application.WmsGoodsReturnOrderInput)">
+ <summary>
+ 鑾峰彇閫�璐у崟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆閫�璐у崟鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsGoodsReturnOrderService.ToExcelAsync(Admin.NET.Application.WmsGoodsReturnOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁閫�璐у崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderDto">
+ <summary>
+ 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PageDetailInput">
+ <summary>
+ 鑾峰彇鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PageDetailInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderSearch">
+ <summary>
+ 鍗曟嵁琛ㄦ煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderSearchNonPage">
+ <summary>
+ 鍗曟嵁琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderInput">
+ <summary>
+ 鍗曟嵁琛ㄨ緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DistributeInOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderOutput">
+ <summary>
+ 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderDetailOutput">
+ <summary>
+ 鍗曟嵁琛ㄨ鎯呰緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.SpecialNeeds">
+ <summary>
+ 鐗规畩瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsOrderDetailOutput.InspectionResults">
+ <summary>
+ 妫�楠岀粨鏋�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsOrderService">
+ <summary>
+ 鍏ュ簱閫氱煡鍗曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.Page(Admin.NET.Application.WmsOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍗曟嵁琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.PageDetail(Admin.NET.Application.PageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.DistributeInOrder(Admin.NET.Application.DistributeInOrderInput)">
+ <summary>
+ 鎵归噺涓嬪彂鍏ュ簱鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.ListNonPageAsync(Admin.NET.Application.WmsOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠崟鎹〃鍒楄〃
+ </summary>
+ <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>(鍗曟嵁琛�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.Add(Admin.NET.Application.AddWmsOrderInput)">
+ <summary>
+ 澧炲姞鍗曟嵁琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.Delete(Admin.NET.Application.DeleteWmsOrderInput)">
+ <summary>
+ 鍒犻櫎鍗曟嵁琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.Update(Admin.NET.Application.UpdateWmsOrderInput)">
+ <summary>
+ 鏇存柊鍗曟嵁琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.Get(Admin.NET.Application.QueryeWmsOrderInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.List(Admin.NET.Application.WmsOrderInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁琛ㄥ垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍗曟嵁琛ㄥ姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsOrderService.ToExcelAsync(Admin.NET.Application.WmsOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁鍗曟嵁琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.InspectionDeclarationDetail">
+ <summary>
+ 鎶ユ浼犻�掔粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationDetail.OID">
+ <summary>
+ OID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationDetail.SumWeight">
+ <summary>
+ 閲嶉噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.InspectionDeclarationYiGo">
+ <summary>
+ 鎶ユ浼犻�掔粰yigo绯荤粺鐨勫弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.SOID">
+ <summary>
+ YIGO绯荤粺id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.NO">
+ <summary>
+ 鍏ュ簱閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.WMSNO">
+ <summary>
+ WMS鏀惰揣鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Billdate">
+ <summary>
+ 鏀惰揣鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationYiGo.Dtls">
+ <summary>
+ 鏀惰揣璇︽儏
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetInspectionResultInput">
+ <summary>
+ 鑾峰彇鎶ユ缁撴灉鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultInput.NO">
+ <summary>
+ 缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultInput.SOID">
+ <summary>
+ SOID
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.InspectionDeclarationOutput">
+ <summary>
+ 鎶ユ杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationOutput.Result">
+ <summary>
+ 缁撴灉鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.InspectionDeclarationOutput.Status">
+ <summary>
+ 璇锋眰鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetInspectionResultOutput">
+ <summary>
+ 鑾峰彇鎶ユ缁撴灉杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutput.Result">
+ <summary>
+ 缁撴灉鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutput.Status">
+ <summary>
+ 璇锋眰鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutput.Data">
+ <summary>
+ 鏁版嵁
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetInspectionResultOutputData">
+ <summary>
+ 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.SOID">
+ <summary>
+ SOID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.ON">
+ <summary>
+ 鏀惰揣鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Billdate">
+ <summary>
+ 璐ㄦ鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.QCNO">
+ <summary>
+ 璐ㄦ鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputData.Dtls">
+ <summary>
+ 璇︽儏
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetInspectionResultOutputDataDetail">
+ <summary>
+ 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁璇︽儏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.OID">
+ <summary>
+ OID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.FATQuality">
+ <summary>
+ 璐ㄦ鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ProjectCode">
+ <summary>
+ 椤圭洰缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ContractCode">
+ <summary>
+ 鍚堝悓缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.SpecialNeeds">
+ <summary>
+ 鐗规畩瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetInspectionResultOutputDataDetail.BatchNO_SCM">
+ <summary>
+ 渚涘簲閾炬壒娆″彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsInspectOrderService">
+ <summary>
+ 鎶ユ鍗�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInspectOrderService.InspectionDeclaration(Admin.NET.Application.InspectionDeclarationYiGo)">
+ <summary>
+ 鎶ユ涓婁紶
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInspectOrderService.GetInspectionResult(Admin.NET.Application.GetInspectionResultInput)">
+ <summary>
+ 鑾峰彇鎶ユ缁撴灉
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInspectOrderService.Page(Admin.NET.Application.WmsOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍏ュ簱閫氱煡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInspectOrderService.PageDetail(Admin.NET.Application.PageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderDto">
+ <summary>
+ 鏀惰揣鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderSearch">
+ <summary>
+ 鏀惰揣鍗曟煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderSearchNonPage">
+ <summary>
+ 鏀惰揣鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderInput">
+ <summary>
+ 鏀惰揣鍗曡緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsReceiptOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReceiptageDetailInput">
+ <summary>
+ 鏀惰揣鍗曡幏鍙栨槑缁嗗弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReceiptageDetailInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PcConfirmReceiptInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PcConfirmReceiptInput.GetOrderDetailOutputList">
+ <summary>
+ 璇︽儏鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderOutput">
+ <summary>
+ 鏀惰揣鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Billdate">
+ <summary>
+ 鍒涘缓鏃ユ湡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.SourceBillNo">
+ <summary>
+ 閫佽揣閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Vendorcode">
+ <summary>
+ 渚涘簲鍟嗙紪鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Vendorname">
+ <summary>
+ 渚涘簲鍟嗗悕绉�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Companyname">
+ <summary>
+ 鍏徃鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.WarehouseKeepername">
+ <summary>
+ 浠撶鍛�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.TradeMode">
+ <summary>
+ 璐告槗鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.StoreRoomname">
+ <summary>
+ 浠撻棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.DeclarationCode">
+ <summary>
+ 鎶ュ叧鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Majorname">
+ <summary>
+ 涓撲笟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.Dtls">
+ <summary>
+ 瀵瑰簲YiGo绯荤粺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.ReceivingStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderOutput.InspectionStatus">
+ <summary>
+ 鎶ユ鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderDetailOutput">
+ <summary>
+ 鏀惰揣鍗曡鎯呰緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OID">
+ <summary>
+ SCM鍏ュ簱閫氱煡鍗曟槑缁嗚鍞竴鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.SpecialNeeds">
+ <summary>
+ 鐗规畩瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.DeliveryQty">
+ <summary>
+ 閫佽揣鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ReceivedQty">
+ <summary>
+ 鏀惰揣鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.ReceivingStatus">
+ <summary>
+ 閫�璐х姸鎬�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsReceiptOrderDetailOutput.InspectionStatus">
+ <summary>
+ 鎶ユ鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.addOrderInput">
+ <summary>
+ 娴嬭瘯鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsReceiptOrderService">
+ <summary>
+ 鏀惰揣鍗曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.Page(Admin.NET.Application.WmsReceiptOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鏀惰揣鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.PageDetail(Admin.NET.Application.ReceiptageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.PcConfirmReceipt(Admin.NET.Application.PcConfirmReceiptInput)">
+ <summary>
+ pc纭鏀惰揣
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.ListNonPageAsync(Admin.NET.Application.WmsReceiptOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈡敹璐у崟鍒楄〃
+ </summary>
+ <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+ <returns>(鏀惰揣鍗�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.Add">
+ <summary>
+ 澧炲姞鏀惰揣鍗�(yigo绯荤粺鑾峰彇)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.Delete(Admin.NET.Application.DeleteWmsReceiptOrderInput)">
+ <summary>
+ 鍒犻櫎鏀惰揣鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.Update(Admin.NET.Application.UpdateWmsReceiptOrderInput)">
+ <summary>
+ 鏇存柊鏀惰揣鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.Get(Admin.NET.Application.QueryeWmsReceiptOrderInput)">
+ <summary>
+ 鑾峰彇鏀惰揣鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.List(Admin.NET.Application.WmsReceiptOrderInput)">
+ <summary>
+ 鑾峰彇鏀惰揣鍗曞垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鏀惰揣鍗曞姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsReceiptOrderService.ToExcelAsync(Admin.NET.Application.WmsReceiptOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁鏀惰揣鍗曟煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderDto">
+ <summary>
+ 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderSearch">
+ <summary>
+ 鍒嗘嫞鍗曟煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderSearchNonPage">
+ <summary>
+ 鍒嗘嫞鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderInput">
+ <summary>
+ 鍒嗘嫞鍗曡緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsSortOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderOutput">
+ <summary>
+ 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsSortOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsSortOrderService">
+ <summary>
+ 鍒嗘嫞鍗曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.Page(Admin.NET.Application.WmsSortOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍒嗘嫞鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.ListNonPageAsync(Admin.NET.Application.WmsSortOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈠垎鎷e崟鍒楄〃
+ </summary>
+ <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+ <returns>(鍒嗘嫞鍗�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.Add(Admin.NET.Application.AddWmsSortOrderInput)">
+ <summary>
+ 澧炲姞鍒嗘嫞鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.Delete(Admin.NET.Application.DeleteWmsSortOrderInput)">
+ <summary>
+ 鍒犻櫎鍒嗘嫞鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.Update(Admin.NET.Application.UpdateWmsSortOrderInput)">
+ <summary>
+ 鏇存柊鍒嗘嫞鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.Get(Admin.NET.Application.QueryeWmsSortOrderInput)">
+ <summary>
+ 鑾峰彇鍒嗘嫞鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.List(Admin.NET.Application.WmsSortOrderInput)">
+ <summary>
+ 鑾峰彇鍒嗘嫞鍗曞垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆鍒嗘嫞鍗曞姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsSortOrderService.ToExcelAsync(Admin.NET.Application.WmsSortOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁鍒嗘嫞鍗曟煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderDto">
+ <summary>
+ 閫�搴撳崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Billdate">
+ <summary>
+ 閫�鏂欑敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.CostCenterID">
+ <summary>
+ 鏀剁泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.PickerID">
+ <summary>
+ 棰嗗彇浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderSearch">
+ <summary>
+ 閫�搴撳崟鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.Billdate">
+ <summary>
+ 閫�鏂欑敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.CostCenterID">
+ <summary>
+ 鏀剁泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.PickerID">
+ <summary>
+ 棰嗗彇浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderSearchNonPage">
+ <summary>
+ 閫�搴撳崟涓嶅垎椤垫煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.Billdate">
+ <summary>
+ 閫�鏂欑敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.CostCenterID">
+ <summary>
+ 鏀剁泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.PickerID">
+ <summary>
+ 棰嗗彇浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderInput">
+ <summary>
+ 閫�搴撳崟杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.Billdate">
+ <summary>
+ 閫�鏂欑敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.CostCenterID">
+ <summary>
+ 鏀剁泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.PickerID">
+ <summary>
+ 棰嗗彇浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AddWmsStockReturnOrderInput.WmsStockReturnOrderDetails">
+ <summary>
+ 閫�搴撴槑缁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderDetail">
+ <summary>
+ 閫�搴撴槑缁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Length">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetail.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsStockReturnOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PageDetailStockReturnOrderInput">
+ <summary>
+ 鑾峰彇鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PageDetailStockReturnOrderInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetTakeOrderDetailInput">
+ <summary>
+ 鑾峰彇鍑哄簱瀹屾垚鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetTakeOrderDetailInput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderInput">
+ <summary>
+ 閫�鏂欎笂鏋剁粰yigo绯荤粺鐨勫弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.SOID">
+ <summary>
+ YIGO绯荤粺id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.NO">
+ <summary>
+ 閫�鏂欑敵璇峰崟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.WMSNO">
+ <summary>
+ WMS鍏ュ簱鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Billdate">
+ <summary>
+ 鍑哄簱鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInput.Dtls">
+ <summary>
+ 閫�鏂欒鎯�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail">
+ <summary>
+ 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.OID">
+ <summary>
+ OID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.DestStoreareacode">
+ <summary>
+ 搴撳尯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.DestLocationcode">
+ <summary>
+ 鍌ㄤ綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderInputDetail.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderOutput">
+ <summary>
+ 閫�搴撳崟杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Billdate">
+ <summary>
+ 閫�鏂欑敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.CostCenterID">
+ <summary>
+ 鏀剁泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.PickerID">
+ <summary>
+ 棰嗗彇浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderOutput.Dtls">
+ <summary>
+ 瀵瑰簲YiGo绯荤粺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderDetailOutput">
+ <summary>
+ 閫�搴撳崟鑾峰彇鏄庣粏杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Length">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsStockReturnOrderDetailOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderOutputByYiGO">
+ <summary>
+ yigo鑾峰彇閫�搴撳崟杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGoodsReturnOrderOutput">
+ <summary>
+ 閫�鏂欎笅鏋惰繑鍥炲弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderOutput.Result">
+ <summary>
+ 缁撴灉鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGoodsReturnOrderOutput.Status">
+ <summary>
+ 璇锋眰鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnOrderService">
+ <summary>
+ 閫�搴撳崟鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Page(Admin.NET.Application.WmsStockReturnOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ閫�搴撳崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.PageDetail(Admin.NET.Application.PageDetailStockReturnOrderInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.GetTakeOrderDetail(Admin.NET.Application.GetTakeOrderDetailInput)">
+ <summary>
+ 鑾峰彇鍑哄簱瀹屾垚鐨勬槑缁�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Add">
+ <summary>
+ 澧炲姞閫�搴撳崟(yigo绯荤粺鑾峰彇)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.StockReturnGoodsReturnOrder(Admin.NET.Application.StockReturnGoodsReturnOrderInput)">
+ <summary>
+ 閫�鏂欎笂鏋舵帴鍙�(yigo绯荤粺)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.ListNonPageAsync(Admin.NET.Application.WmsStockReturnOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈤��搴撳崟鍒楄〃
+ </summary>
+ <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+ <returns>(閫�搴撳崟)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Delete(Admin.NET.Application.DeleteWmsStockReturnOrderInput)">
+ <summary>
+ 鍒犻櫎閫�搴撳崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Update(Admin.NET.Application.UpdateWmsStockReturnOrderInput)">
+ <summary>
+ 鏇存柊閫�搴撳崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.Get(Admin.NET.Application.QueryeWmsStockReturnOrderInput)">
+ <summary>
+ 鑾峰彇閫�搴撳崟
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.List(Admin.NET.Application.WmsStockReturnOrderInput)">
+ <summary>
+ 鑾峰彇閫�搴撳崟鍒楄〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆閫�搴撳崟鍔熻兘
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnOrderService.ToExcelAsync(Admin.NET.Application.WmsStockReturnOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁閫�搴撳崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ </summary>
+ <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderDto">
+ <summary>
+ 棰嗘枡鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDto.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.FjStock">
+ <summary>
+ 鍒嗘嫞搴撳瓨
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialType">
+ <summary>
+ 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.MaterialDensity">
+ <summary>
+ 鐗╂枡瀵嗗害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.InspectionMethod">
+ <summary>
+ 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.StockNumber">
+ <summary>
+ 瀹炵墿搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.QuantityOfBill">
+ <summary>
+ 璐﹂潰鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.Source">
+ <summary>
+ 鍏ュ簱鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>]
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.FjStock.FjQty">
+ <summary>
+ 鍒嗘嫞鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderSearch">
+ <summary>
+ 棰嗘枡鍗曟煡璇㈠弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearch.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage">
+ <summary>
+ 棰嗘枡鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderInput">
+ <summary>
+ 棰嗘枡鍗曡緭鍏ュ弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderInput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.UpdateWmsTakeMaterialOrderInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TakePageDetailInput">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakePageDetailInput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TakeMaterialStockSearch">
+ <summary>
+ 鏌ヨ搴撳瓨鏄庣粏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockSearch.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockSearch.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockSearch.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockSearch.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockSearch.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.DistributeOrderInput">
+ <summary>
+ 涓嬪彂棰嗘枡鍗曞弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.DistributeOrderInput.Id">
+ <summary>
+ 棰嗘枡鍗昳d
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnTakeOrderInput">
+ <summary>
+ 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勫弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.SOID">
+ <summary>
+ YIGO绯荤粺id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.NO">
+ <summary>
+ 鍏ュ簱閫氱煡鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.WMSNO">
+ <summary>
+ WMS閫�璐у崟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Billdate">
+ <summary>
+ 鍑哄簱鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInput.Dtls">
+ <summary>
+ 鍑哄簱璇︽儏
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnTakeOrderInputDetail">
+ <summary>
+ 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勮鎯呭弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.OID">
+ <summary>
+ OID
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.DestStoreareacode">
+ <summary>
+ 搴撳尯
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.DestLocationcode">
+ <summary>
+ 鍌ㄤ綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderInputDetail.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderOutput">
+ <summary>
+ 棰嗘枡鍗曡緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.IssueState">
+ <summary>
+ 绛炬牳鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderOutput.Dtls">
+ <summary>
+ 瀵瑰簲YiGo绯荤粺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput">
+ <summary>
+ 鑾峰彇鏄庣粏杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OID">
+ <summary>
+ SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.DistributeQty">
+ <summary>
+ 涓嬪彂鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.WmsTakeMaterialOrderDetailOutput.WmsTakeMaterialOrder">
+ <summary>
+ 鍗曟嵁涓昏〃
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.TakeMaterialStockOutput">
+ <summary>
+ 鑾峰彇搴撳瓨杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialBatch">
+ <summary>
+ 鐗╂枡鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialName">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.MaterialSpec">
+ <summary>
+ 鐗╂枡瑙勬牸
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.UnitType">
+ <summary>
+ 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.UnitNo">
+ <summary>
+ 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.StockNumber">
+ <summary>
+ 瀹炵墿搴撳瓨鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContainerId">
+ <summary>
+ 鎵樼洏Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.AreaId">
+ <summary>
+ 搴撳尯Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.QuantityOfBill">
+ <summary>
+ 璐﹂潰鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.Source">
+ <summary>
+ 鍏ュ簱鏉ユ簮
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.TakeMaterialStockOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialNoListOutput">
+ <summary>
+ 搴撳瓨鍒嗙粍鐗╂枡鍙疯緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialNoListOutput.Code">
+ <summary>
+ Code
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialNoListOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ProjectCodeListOutput">
+ <summary>
+ 搴撳瓨鍒嗙粍椤圭洰缂栫爜杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ProjectCodeListOutput.Code">
+ <summary>
+ Code
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ProjectCodeListOutput.ProjectCode">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderOutputByYiGO">
+ <summary>
+ yigo鑾峰彇棰嗘枡鍗曡繑鍥炲弬鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReturnTakeOrderOutput">
+ <summary>
+ 棰嗘枡涓嬫灦杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderOutput.Result">
+ <summary>
+ 缁撴灉鎻忚堪
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReturnTakeOrderOutput.Status">
+ <summary>
+ 璇锋眰鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsTakeMaterialOrderService">
+ <summary>
+ 棰嗘枡鍗曟湇鍔�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Page(Admin.NET.Application.WmsTakeMaterialOrderSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ListNonPageAsync(Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage)">
+ <summary>
+ 涓嶅垎椤垫煡璇㈤鏂欏崟鍒楄〃
+ </summary>
+ <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+ <returns>(棰嗘枡鍗�)瀹炰緥鍒楄〃</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.PageDetail(Admin.NET.Application.TakePageDetailInput)">
+ <summary>
+ 鑾峰彇鍗曟嵁鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.StockPage(Admin.NET.Application.TakeMaterialStockSearch)">
+ <summary>
+ 鍒嗛〉鏌ヨ鐗╂枡搴撳瓨
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.GetMaterialNoList">
+ <summary>
+ 鐗╂枡缂栫爜涓嬫媺妗�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.GetProjectCodeList">
+ <summary>
+ 椤圭洰缂栫爜涓嬫媺妗�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Add(Admin.NET.Application.AddWmsTakeMaterialOrderInput)">
+ <summary>
+ 澧炲姞棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.TakeOrderAdd">
+ <summary>
+ 澧炲姞棰嗘枡鍗�(yigo绯荤粺鑾峰彇)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ReturnTakeOrder(Admin.NET.Application.ReturnTakeOrderInput)">
+ <summary>
+ 棰嗘枡涓嬫灦鎺ュ彛(yigo绯荤粺)
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.DistributeOrder(Admin.NET.Application.DistributeOrderInput)">
+ <summary>
+ 涓嬪彂棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Delete(Admin.NET.Application.DeleteWmsTakeMaterialOrderInput)">
+ <summary>
+ 鍒犻櫎棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Update(Admin.NET.Application.UpdateWmsTakeMaterialOrderInput)">
+ <summary>
+ 鏇存柊棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.Get(Admin.NET.Application.QueryeWmsTakeMaterialOrderInput)">
+ <summary>
+ 鑾峰彇棰嗘枡鍗�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.List(Admin.NET.Application.WmsTakeMaterialOrderInput)">
+ <summary>
+ 鑾峰彇棰嗘枡鍗曞垪琛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.FromExcelAsync(Microsoft.AspNetCore.Http.IFormFile,Admin.NET.Core.ImportExcelType)">
+ <summary>
+ Excel妯℃澘瀵煎叆棰嗘枡鍗曞姛鑳�
+ </summary>
+ <param name="file">Excel妯℃澘鏂囦欢</param>
+ <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ <returns>瀵煎叆鐨勮褰曟暟</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.DownloadExcelTemplate(System.String)">
+ <summary>
+ 鏍规嵁鐗堟湰涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ </summary>
+ <param name="version">妯℃澘鐗堟湰</param>
+ <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsTakeMaterialOrderService.ToExcelAsync(Admin.NET.Application.WmsTakeMaterialOrderSearchNonPage)">
+ <summary>
+ 鏍规嵁棰嗘枡鍗曟煡璇㈠弬鏁板鍑篍xcel
+ </summary>
+ <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+ <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ </member>
+ <member name="T:Admin.NET.Application.CallEmptyService">
+ <summary>
+ Pda绌烘墭鍑哄簱
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CallEmptyService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.CallEmptyService.PdaContainerOut(Admin.NET.Application.PdaContainerOutInput)">
+ <summary>
+ 鎻愪氦鍑哄簱
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.PdaContainerOutInput">
+ <summary>
+ 绌烘墭鍑哄簱鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaContainerOutInput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetSortInfoInput">
+ <summary>
+ 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetSortInfoInput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SortPdaPageInput">
+ <summary>
+ 鍒嗛〉鑾峰彇鍑哄簱鍗�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageInput.No">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SortPdaDetailPageInput">
+ <summary>
+ 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷f槑缁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageInput.No">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetSortInfoOutput">
+ <summary>
+ 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetSortInfoOutput.WmsContainer">
+ <summary>
+ 瀹瑰櫒
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetSortInfoOutput.WmsSortOrderList">
+ <summary>
+ 鍒嗘嫞淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SortPdaPageOutput">
+ <summary>
+ 鍒嗛〉鑾峰彇鍒嗘嫞鍗�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderLargeCategory">
+ <summary>
+ 鍗曟嵁澶х被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.MoveType">
+ <summary>
+ 浜嬪姟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.SOID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.Billdate">
+ <summary>
+ 棰嗘枡鍗曠敵璇锋棩鏈�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.WBSElementcode">
+ <summary>
+ 棰嗙敤椤圭洰鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.BenefitingDepartcode">
+ <summary>
+ 棰嗘枡閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.CostCenterID">
+ <summary>
+ 鍙楃泭閮ㄩ棬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.FI_Client_Analysis_H">
+ <summary>
+ 瀹㈡埛
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.IsInnerCompany">
+ <summary>
+ 鏄惁鍏徃闂翠氦鏄�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.PickerID">
+ <summary>
+ 棰嗘枡浜�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.WarehouseCentername">
+ <summary>
+ 浠撳偍涓績
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.Companyname">
+ <summary>
+ 鍏徃
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.ConstructionTeamID">
+ <summary>
+ 鏂藉伐闃�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaPageOutput.CreatedTime">
+ <summary>
+ 鏃堕棿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.SortPdaDetailPageOutput">
+ <summary>
+ 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.OrderNo">
+ <summary>
+ 鏉ユ簮鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.OrderDetailID">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ContainerOrderNo">
+ <summary>
+ 鍒嗘嫞缁勭洏鍗曞彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ContainerCode">
+ <summary>
+ 瀹瑰櫒缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.SortQuantity">
+ <summary>
+ 鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.ActualQuantity">
+ <summary>
+ 瀹為檯鍒嗘嫞鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Remarks">
+ <summary>
+ 澶囨敞
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.SortStatus">
+ <summary>
+ 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.SortPdaDetailPageOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialSortingService">
+ <summary>
+ 鐗╂枡鍒嗘嫞鏈嶅姟
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialSortingService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsSortOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTakeMaterialOrder,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialSortingService.GetSortInfo(Admin.NET.Application.GetSortInfoInput)">
+ <summary>
+ 鎵弿鍒嗘嫞鎵樼洏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialSortingService.SortSure(Admin.NET.Application.GetSortInfoOutput)">
+ <summary>
+ 鍒嗘嫞纭
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialSortingService.SortPdaPage(Admin.NET.Application.SortPdaPageInput)">
+ <summary>
+ pda鍑哄簱鍗曟煡璇�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.MaterialSortingService.SortPdaDetailPage(Admin.NET.Application.SortPdaDetailPageInput)">
+ <summary>
+ pda鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟鏄庣粏
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.AutomaticWarehouseService">
+ <summary>
+ Pda鍗婅嚜鍔ㄥ叆搴�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.AutomaticWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AutomaticWarehouseInput">
+ <summary>
+ 鏍规嵁鎵规鍙疯幏鍙栦换鍔″弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseInput.Batch">
+ <summary>
+ 鎵规鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PdaGetWarehouseEntranceInput">
+ <summary>
+ 鏍规嵁id鑾峰彇鍏ュ簱鍙d笅鎷夋
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaGetWarehouseEntranceInput.Id">
+ <summary>
+ id
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PdaAutomaticWarehouseInput">
+ <summary>
+ 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.Batch">
+ <summary>
+ 鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.SerialNo">
+ <summary>
+ 娴佹按鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaAutomaticWarehouseInput.EntranceCode">
+ <summary>
+ 鍏ュ簱鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CallBackInput">
+ <summary>
+ 鍙嶉浠诲姟鐘舵�佸弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CallBackInput.TaskNo">
+ <summary>
+ 浠诲姟鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CallBackInput.DeviceType">
+ <summary>
+ 璁惧绫诲瀷
+ 杈撻�佺嚎 = 1,
+ 鍫嗗灈鏈� = 2,
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CallBackInput.TaskState">
+ <summary>
+ 璁惧鎵ц鐘舵��
+ 杈撻�佺嚎鎵ц涓� = 1,
+ 杈撻�佺嚎瀹屾垚 = 2,
+ 鍫嗗灈鏈烘墽琛屼腑 = 3,
+ 鍫嗗灈鏈哄畬鎴� = 4,
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.AutomaticWarehouseOutput">
+ <summary>
+ 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟杩斿洖鍊�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.MaterialNo">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Batch">
+ <summary>
+ 鎵规
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.SerialNo">
+ <summary>
+ 娴佹按鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.PreferredPort">
+ <summary>
+ 鍏ュ簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.AutomaticWarehouseOutput.Id">
+ <summary>
+ Id涓婚敭
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OutEntranceListDefaultCodeOutput">
+ <summary>
+ 杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OutEntranceListDefaultCodeOutput.DefaultCode">
+ <summary>
+ 榛樿鍏ュ簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OutEntranceListDefaultCodeOutput.OutEntranceListOutputList">
+ <summary>
+ 鍏ュ簱鍙e悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.OutEntranceListOutput">
+ <summary>
+ 鑾峰彇鍏ュ簱鍙d笅鎷夋杈撳嚭鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OutEntranceListOutput.Code">
+ <summary>
+ 鍏ュ簱鍙ode
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.OutEntranceListOutput.Name">
+ <summary>
+ 鍏ュ簱鍙e悕绉�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.CallBackOutput">
+ <summary>
+ 鍙嶉浠诲姟鐘舵�佽緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.CallBackOutput.LocationCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskOutWarehouseInput">
+ <summary>
+ 鎵撳寘淇℃伅鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.OutputEntrance">
+ <summary>
+ 鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.PlcMaterialNoList">
+ <summary>
+ PLC鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseInput.WcsMaterialNoList">
+ <summary>
+ WMS鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PackOutWarehouseInput">
+ <summary>
+ 鎵撳寘淇℃伅鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PackOutWarehouseInput.PackCode">
+ <summary>
+ 鎵撳寘鏍囩
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PackOutWarehouseInput.MaterialNoList">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.MaterialNoList">
+ <summary>
+ 鐗╂枡缂栫爜list
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.MaterialNoList.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetPackInfomationInput">
+ <summary>
+ 鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetPackInfomationInput.OutputEntrance">
+ <summary>
+ 鍑哄簱鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskOutWarehouseOutput">
+ <summary>
+ 鎵撳寘淇℃伅杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.OrderNo">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.OrderSubclass">
+ <summary>
+ 鍗曟嵁灏忕被
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouseOutput.GroupDiskOutWarehouseList">
+ <summary>
+ 鎵撳寘淇℃伅list
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskOutWarehouse">
+ <summary>
+ 鎵撳寘淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.MaterialNo">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.Long">
+ <summary>
+ 闀�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.Wide">
+ <summary>
+ 瀹�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutWarehouse.High">
+ <summary>
+ 楂�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskOutWarehouseService">
+ <summary>
+ Pda缁勭洏鍑哄簱
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.GroupDiskOutWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.LesPackWarehouse,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetContainerInput">
+ <summary>
+ 鑾峰彇鎵樼洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetContainerInput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskInput">
+ <summary>
+ 缁勭洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskInput.ContainerCode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskInput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ReceiptMaterialContainerInput">
+ <summary>
+ 缁勭洏鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Id">
+ <summary>
+ 鏄庣粏id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ReceiptMaterialContainerInput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PdaInWarehouseInput">
+ <summary>
+ 鎻愪氦鍏ュ簱鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaInWarehouseInput.ContainerCode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PdaInWarehouseInput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PadGetMaterialInput">
+ <summary>
+ 鑾峰彇鐗╂枡鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetContainerOutput">
+ <summary>
+ 鑾峰彇鎵樼洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetContainerOutput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetContainerOutput.WmsContainer">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetContainerOutput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GroupDiskOutput">
+ <summary>
+ 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutput.Containercode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GroupDiskOutput.OrderNo">
+ <summary>
+ 缁勭洏鍗曟嵁
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.PadGetMaterialOutput">
+ <summary>
+ 鐗╂枡杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.SpecialNeeds">
+ <summary>
+ 鐗规畩瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.PadGetMaterialOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsInWarehouseService">
+ <summary>
+ Pda鐗╂枡鍏ュ簱
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInWarehouseService.CheckTray(Admin.NET.Application.GetContainerInput)">
+ <summary>
+ 鑾峰彇鎵樼洏
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInWarehouseService.PadGetMaterial(Admin.NET.Application.PadGetMaterialInput)">
+ <summary>
+ 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInWarehouseService.GroupDisk(Admin.NET.Application.GroupDiskInput)">
+ <summary>
+ 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsInWarehouseService.PdaInWarehouse(Admin.NET.Application.PdaInWarehouseInput)">
+ <summary>
+ 鎻愪氦鍏ュ簱
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.GetOrderDetailInput">
+ <summary>
+ 鍗曟嵁鍙峰弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.ConfirmReceiptInput">
+ <summary>
+ 纭鏀惰揣鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ConfirmReceiptInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.ConfirmReceiptInput.GetOrderDetailOutputList">
+ <summary>
+ 璇︽儏鍙傛暟
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetOrderDetailOutput">
+ <summary>
+ 鍗曟嵁鍙疯繑鍥炲弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Id">
+ <summary>
+ Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.TheoreticalWeight">
+ <summary>
+ 鐞嗚閲嶉噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.Price">
+ <summary>
+ 涓嶅惈绋庡崟浠�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.SumPrice">
+ <summary>
+ 鎴愭湰閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.ContractCode">
+ <summary>
+ 鍚堝悓缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.TradeName">
+ <summary>
+ 鎶ュ叧鍝佸悕
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.ItemNo">
+ <summary>
+ 鎶ュ叧椤瑰彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsUnitName">
+ <summary>
+ 鎶ュ叧鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsNum">
+ <summary>
+ 鎶ュ叧鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.CustomsPrices">
+ <summary>
+ 鎶ュ叧閲戦
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.SpecialNeeds">
+ <summary>
+ 鐗规畩瑕佹眰
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.OrderStatus">
+ <summary>
+ 鍗曟嵁鐘舵��
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.DeliveryQty">
+ <summary>
+ 閫佽揣鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetOrderDetailOutput.ReceivedQty">
+ <summary>
+ 鏀惰揣鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsPdaReceiptOrderService">
+ <summary>
+ Pda鏀惰揣
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsReceiptOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsReceiptOrder,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.GetOrderDetail(Admin.NET.Application.GetOrderDetailInput)">
+ <summary>
+ 鏍规嵁鍗曟嵁鍙疯幏鍙栨槑缁�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsPdaReceiptOrderService.ConfirmReceipt(Admin.NET.Application.ConfirmReceiptInput)">
+ <summary>
+ pda纭鏀惰揣
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGetContainerInput">
+ <summary>
+ 鑾峰彇鎵樼洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGetContainerInput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGroupDiskInput">
+ <summary>
+ 缁勭洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGroupDiskInput.ContainerCode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGroupDiskInput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnReceiptMaterialContainerInput">
+ <summary>
+ 缁勭洏鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Id">
+ <summary>
+ 鏄庣粏id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnReceiptMaterialContainerInput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnPdaInWarehouseInput">
+ <summary>
+ 鎻愪氦鍏ュ簱鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPdaInWarehouseInput.ContainerCode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPdaInWarehouseInput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnPadGetMaterialInput">
+ <summary>
+ 鑾峰彇鐗╂枡鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialInput.NO">
+ <summary>
+ 鍗曟嵁缂栧彿
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGetContainerOutput">
+ <summary>
+ 鑾峰彇鎵樼洏鍏ュ弬
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.ContainerCode">
+ <summary>
+ 鎵樼洏鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.WmsContainer">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGetContainerOutput.WmsMaterials">
+ <summary>
+ 鐗╂枡淇℃伅
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnGroupDiskOutput">
+ <summary>
+ 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGroupDiskOutput.Containercode">
+ <summary>
+ 鎵樼洏
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnGroupDiskOutput.OrderNo">
+ <summary>
+ 缁勭洏鍗曟嵁
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.StockReturnPadGetMaterialOutput">
+ <summary>
+ 鐗╂枡杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.OrderId">
+ <summary>
+ 鍗曟嵁Id
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.OID">
+ <summary>
+ 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Length">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.StockReturnPadGetMaterialOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WmsStockReturnWarehouseService">
+ <summary>
+ Pda鐗╂枡閫�搴�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.#ctor(Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsStockReturnOrder,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsStockReturnOrderDetails,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsTask,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsArea,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsWarehouseEntrance,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainer,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsContainerPlace,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsMaterialStock,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{Admin.NET.Core.WmsOrderType,Furion.DatabaseAccessor.MasterDbContextLocator})">
+ <summary>
+ 鏋勯�犲嚱鏁�
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.CheckTray(Admin.NET.Application.StockReturnGetContainerInput)">
+ <summary>
+ 鑾峰彇鎵樼洏
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.PadGetMaterial(Admin.NET.Application.StockReturnPadGetMaterialInput)">
+ <summary>
+ 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.GroupDisk(Admin.NET.Application.StockReturnGroupDiskInput)">
+ <summary>
+ 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Admin.NET.Application.WmsStockReturnWarehouseService.PdaInWarehouse(Admin.NET.Application.StockReturnPdaInWarehouseInput)">
+ <summary>
+ 鎻愪氦鍏ュ簱
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.GetWareHouseInReportFormsInput">
+ <summary>
+ 鍏ュ簱鎶ヨ〃杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsInput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetWareHouseInReportFormsOutput">
+ <summary>
+ 鍏ュ簱鎶ヨ〃杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.OID">
+ <summary>
+ SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.DistributeQty">
+ <summary>
+ 涓嬪彂鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.CreatedTime">
+ <summary>
+ 鍑哄簱鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.UpdatedTime">
+ <summary>
+ 鍑哄簱瀹屾垚鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseInReportFormsOutput.WmsTakeMaterialOrder">
+ <summary>
+ 鍗曟嵁涓昏〃
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareHouseInReportFormsService">
+ <summary>
+ 鍏ュ簱鎶ヨ〃
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WareHouseInReportFormsService.GetWareHouseOutReportForms(Admin.NET.Application.GetWareHouseInReportFormsInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍏ュ簱鎶ヨ〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.GetWareHouseOutReportFormsInput">
+ <summary>
+ 鍑哄簱鎶ヨ〃杈撳叆鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsInput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.GetWareHouseOutReportFormsOutput">
+ <summary>
+ 鍑哄簱鎶ヨ〃杩斿洖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.OID">
+ <summary>
+ SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Materialcode">
+ <summary>
+ 鐗╂枡缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Materialname">
+ <summary>
+ 鐗╂枡鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Unit">
+ <summary>
+ 鍩烘湰鍗曚綅
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Qty">
+ <summary>
+ 鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.DistributeQty">
+ <summary>
+ 涓嬪彂鏁伴噺
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.SingleLength">
+ <summary>
+ 鍗曟牴闀垮害
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Number">
+ <summary>
+ 浠舵暟
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Batchno_SCM">
+ <summary>
+ SCM鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Batchno_WMS">
+ <summary>
+ WMS鎵规鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.ProjectCode">
+ <summary>
+ 椤圭洰缂栧彿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.TACode">
+ <summary>
+ TA鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.PartCode">
+ <summary>
+ 鍒嗘鍙�
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.ContainerCode">
+ <summary>
+ 鎵樼洏缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.PlaceCode">
+ <summary>
+ 搴撲綅缂栫爜
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.CreatedTime">
+ <summary>
+ 鍑哄簱鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.UpdatedTime">
+ <summary>
+ 鍑哄簱瀹屾垚鏃堕棿
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.Aisle">
+ <summary>
+ 宸烽亾
+ </summary>
+ </member>
+ <member name="P:Admin.NET.Application.GetWareHouseOutReportFormsOutput.WmsTakeMaterialOrder">
+ <summary>
+ 鍗曟嵁涓昏〃
+ </summary>
+ </member>
+ <member name="T:Admin.NET.Application.WareHouseOutReportFormsService">
+ <summary>
+ 鍑哄簱鎶ヨ〃
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.WareHouseOutReportFormsService.GetWareHouseOutReportForms(Admin.NET.Application.GetWareHouseOutReportFormsInput)">
+ <summary>
+ 鍒嗛〉鏌ヨ鍑哄簱鎶ヨ〃
+ </summary>
+ <param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="T:Admin.NET.Application.SpareTimeDemo">
+ <summary>
+ 瀹氭椂浠诲姟demo
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.SpareTimeDemo.ExecSql(Furion.TaskScheduler.SpareTimer,System.Int64)">
+ <summary>
+ 3绉掑悗鍑哄嫟缁熻
+ </summary>
+ <param name="timer">鍙傛暟</param>
+ <param name="count">娆℃暟</param>
+ </member>
+ <member name="T:Admin.NET.Application.Startup">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Admin.NET.Application.Startup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
+ <summary>
+
+ </summary>
+ <param name="services"></param>
+ </member>
+ <member name="M:Admin.NET.Application.Startup.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
+ <summary>
+
+ </summary>
+ <param name="app"></param>
+ <param name="env"></param>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ModuleName">
+ <summary>
+ 妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.TableName">
+ <summary>
+ 琛ㄥ悕
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ClassName">
+ <summary>
+ 绫诲悕
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.TableDesc">
+ <summary>
+ 琛ㄦ弿杩�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕绉�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.AuthorName">
+ <summary>
+ 浣滆�呭悕
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.BusName">
+ <summary>
+ 涓氬姟鍚�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.ProName">
+ <summary>
+ 绋嬪簭闆�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.FormDesign">
+ <summary>
+ 鍔ㄦ�佽〃鍗�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.Fields">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity.DataBase">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.Id">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.ColumnComment">
+ <summary>
+ 瀛楁澶囨敞
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.FieldName">
+ <summary>
+ 瀛楁鍚嶇О
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.NetType">
+ <summary>
+ 鏁版嵁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.DtoNetType">
+ <summary>
+ 浼犲叆鏁版嵁绫诲瀷
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.DbParam">
+ <summary>
+ 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity_Field.IsRequired">
+ <summary>
+ 鏄惁蹇呭~
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.LowCodePageInput">
+ <summary>
+ 浠g爜鐢熸垚鍙傛暟绫�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.LowCodePageInput.BusName">
+ <summary>
+ 涓氬姟鍚嶇О
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.ModuleName">
+ <summary>
+ 妯″潡璺緞
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.BusName">
+ <summary>
+ 涓氬姟鍚�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.AddLowCodeInput.MenuPid">
+ <summary>
+ 鑿滃崟缂栫爜
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.DeleteLowCodeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.Id">
+ <summary>
+ 浠g爜鐢熸垚鍣↖d
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.AuthorName">
+ <summary>
+ 浣滆�呭鍚�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.GenerateType">
+ <summary>
+ 鐢熸垚鏂瑰紡
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.DatabaseName">
+ <summary>
+ 鏁版嵁搴撳悕
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.NameSpace">
+ <summary>
+ 鍛藉悕绌洪棿
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.ModuleName">
+ <summary>
+ 妯″潡璺緞
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.BusName">
+ <summary>
+ 涓氬姟鍚�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.MenuApplication">
+ <summary>
+ 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.MenuPid">
+ <summary>
+ 鑿滃崟缂栫爜
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.FormDesignType">
+ <summary>
+ 鍔ㄦ�佽〃鍗曠被鍨�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.FormDesign">
+ <summary>
+ 鍔ㄦ�佽〃鍗�
+ </summary>
+ </member>
+ <member name="P:Furion.Extras.Admin.NET.Service.LowCode.Dto.UpdateLowCodeInput.Databases">
+ <summary>
+ 琛ㄥ崟杞暟鎹粨鏋�
+ </summary>
+ </member>
+ <member name="T:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer">
+ <summary>
+
+ </summary>
+ </member>
+ <member name="M:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer.Equals(Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity,Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity)">
+ <summary>
+
+ </summary>
+ <param name="x"></param>
+ <param name="y"></param>
+ <returns></returns>
+ </member>
+ <member name="M:Furion.Extras.Admin.NET.Service.LowCode.GenEntityComparer.GetHashCode(Furion.Extras.Admin.NET.Service.LowCode.Dto.GenEntity)">
+ <summary>
+
+ </summary>
+ <param name="obj"></param>
+ <returns></returns>
+ </member>
+ </members>
+</doc>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs
new file mode 100644
index 0000000..d331036
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/CodeGenHelper.cs
@@ -0,0 +1,53 @@
+锘縰sing Admin.NET.Core;
+using Furion.FriendlyException;
+using System.Collections.Generic;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚甯姪绫�
+ /// </summary>
+ public class CodeGenHelper
+ {
+
+ /// <summary>
+ /// 鏍¢獙 浠g爜閰嶇疆
+ /// </summary>
+ /// <param name="list"></param>
+ public static void ValidateCodeGenConfig(List<SysCodeGenConfig> list)
+ {
+ //濡傛灉鏄笅鎷夋锛岄偅涔堝氨蹇呴』閫夋嫨瀛楀吀锛併�怑ditby shaocx,2024-04-16銆�
+ foreach (var item in list)
+ {
+ if (item.EffectType == "select" && string.IsNullOrEmpty(item.DictTypeCode))
+ {
+ throw Oops.Oh($"瀛楁{item.ColumnName}鐨勪綔鐢ㄧ被鍨嬫槸'涓嬫媺妗�',瀛楀吀蹇呴』閫夋嫨锛�");
+ }
+ if (item.ColumnName.ToLower() != "id" && item.WhetherRequired == YesOrNot.Y.ToString() && item.WhetherAddUpdate == YesOrNot.N.ToString())
+ {
+ throw Oops.Oh($"瀛楁{item.ColumnName}蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼锛�");
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鏍¢獙 浠g爜閰嶇疆
+ /// </summary>
+ /// <param name="list"></param>
+ public static void ValidateCodeGenConfig(List<CodeGenConfig> list)
+ {
+ //濡傛灉鏄笅鎷夋锛岄偅涔堝氨蹇呴』閫夋嫨瀛楀吀锛併�怑ditby shaocx,2024-04-16銆�
+ foreach (var item in list)
+ {
+ if (item.EffectType == "select" && string.IsNullOrEmpty(item.DictTypeCode))
+ {
+ throw Oops.Oh($"瀛楁{item.ColumnName}鐨勪綔鐢ㄧ被鍨嬫槸'涓嬫媺妗�',瀛楀吀蹇呴』閫夋嫨锛�");
+ }
+ if (item.ColumnName.ToLower() != "id" && item.WhetherRequired == YesOrNot.Y.ToString() && item.WhetherAddUpdate == YesOrNot.N.ToString())
+ {
+ throw Oops.Oh($"瀛楁{item.ColumnName}蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼锛�");
+ }
+ }
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs
new file mode 100644
index 0000000..1c1289a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/CommonHelper/SysHelper.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺甯姪绫�
+ /// </summary>
+ public class SysHelper
+ {
+
+ /// <summary>
+ /// 鑾峰彇鐧诲綍浜虹殑鏄电О
+ /// </summary>
+ /// <returns></returns>
+ public static string GetUserName()
+ {
+ return CurrentUserInfo.Name;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐧诲綍浜虹殑鐢ㄦ埛id
+ /// </summary>
+ /// <returns></returns>
+ public static long GetUserId()
+ {
+ return CurrentUserInfo.UserId;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠鏃堕棿
+ /// </summary>
+ /// <returns></returns>
+ public static DateTime GetNowTime()
+ {
+ return DateTime.Now;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs
new file mode 100644
index 0000000..0631d05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Entity/LocationView.cs
@@ -0,0 +1,30 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using iWare.Wms.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace iWare.Wms.Application.Entity
+{
+ /// <summary>
+ ///
+ /// </summary>
+ [Table("LocationView")]
+ [Comment("")]
+ public class LocationView : DEntityBase<long, MasterDbContextLocator>
+ {
+
+ /// <summary>
+ /// 杈撳叆妗�
+ /// </summary>
+ [Comment("杈撳叆妗�")][Required][Column(TypeName = "nvarchar(200)")]
+ public String input_1668660943053 { get; set; }
+
+ /// <summary>
+ /// 鏂囨湰妗�
+ /// </summary>
+ [Comment("鏂囨湰妗�")][Required][Column(TypeName = "nvarchar(2000)")]
+ public String textarea_1668660945922 { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs
new file mode 100644
index 0000000..981dd12
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Mapper/CustomMapper.cs
@@ -0,0 +1,36 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Util.LowCode.Dto;
+using Mapster;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class CustomMapper : IRegister
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="config"></param>
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<SysOrg, OrgTreeNode>()
+ .Map(dest => dest.ParentId, src => src.Pid)
+ .Map(dest => dest.Title, src => src.Name)
+ .Map(dest => dest.Value, src => src.Id)
+ .Map(dest => dest.Weight, src => src.Sort);
+
+ // 鑷畾涔夋祦绋嬭浆鎹㈡祦绋嬪畾涔塂to
+ //config.ForType<PersistedWorkflowDefinition, WorkflowDefinitionDto>()
+ // .Map(dest => dest.Inputs, src => !string.IsNullOrWhiteSpace(src.Inputs) ? src.Inputs.FromJson<IEnumerable<IEnumerable<IEnumerable<WorkflowFormData>>>>() : null)
+ // .Map(dest => dest.Nodes, src => src.Nodes.FromJson<IEnumerable<WorkflowNode>>());
+
+ config.ForType<SysFile, Front_FileDto>()
+ .Map(dest => dest.Status, src => "done")
+ .Map(dest => dest.Url, src => $"/api/sysFileInfo/download?id={src.Id}")
+ .Map(dest => dest.Uid, src => src.Id)
+ .Map(dest => dest.Name, src => src.FileOriginName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs
new file mode 100644
index 0000000..60da52f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/BindEntranceService.cs
@@ -0,0 +1,518 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍏ュ簱绠$悊鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "BindEntrance", Order = 100)]
+ [Route("api/[Controller]")]
+ public class BindEntranceService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public BindEntranceService(
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep)
+ {
+ this._wmsAreaRep = wmsAreaRep;
+ this._wmsPlaceRep = wmsPlaceRep;
+ this._wmsTaskRep = wmsTaskRep;
+ this._wmsContainerRep = wmsContainerRep;
+ this._wmsContainerPlaceRep = wmsContainerPlaceRep;
+ this._wmsMaterialRep = wmsMaterialRep;
+ this._wmsMaterialStockRep = wmsMaterialStockRep;
+ this._wmsMaterialContainerRep = wmsMaterialContainerRep;
+ }
+
+ /// <summary>
+ /// 鎵樼洏鏌ヨ缁勭洏鐗╂枡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("getcontainer")]
+ [UnifyResult(typeof(BindEntranceOutput))]
+ public async Task<object> GetContainer([FromQuery] BindEntranceInput input)
+ {
+ var bindEntranceOutputModel = new BindEntranceOutput();
+
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+ if (wmsContainer == null)
+ {
+ var newWmsContainer = new WmsContainerDto();
+ newWmsContainer.ContainerCode = input.ContainerCode;
+ newWmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ newWmsContainer.ContainerType = ContainerType.SULIAO;
+
+ bindEntranceOutputModel.ContainerCode = input.ContainerCode;
+ bindEntranceOutputModel.WmsContainer = newWmsContainer;
+
+ if (wmsContainer != null)
+ {
+ var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (isWmsTask) return XnRestfulResultProvider.RESTfulMesaage("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔�!");
+
+ bindEntranceOutputModel.WmsContainer = wmsContainer.Adapt<WmsContainerDto>();
+ bindEntranceOutputModel.ContainerCode = wmsContainer.ContainerCode;
+
+ // 鍛ㄨ浆绠卞彿缁勭洏鐘舵��
+ if (wmsContainer.ContainerStatus == ContainerStatus.ZUPANG)
+ {
+ bindEntranceOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ProjectToType<GetMaterialContainerOutput>().ToListAsync();
+
+ return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+ }
+ // 鍛ㄨ浆绠卞彿搴撲綅鐘舵��
+ if (wmsContainer.ContainerStatus == ContainerStatus.KUWEI)
+ {
+ // 鏌ヨ鍛ㄨ浆绠卞彿涓庡簱浣嶅叧绯�
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(u => u.ContainerId == wmsContainer.Id && u.ContainerCode == wmsContainer.ContainerCode);
+
+ if (wmsContainerPlace != null) bindEntranceOutputModel.PlaceCode = wmsContainerPlace.PlaceCode;
+
+ return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+ }
+ }
+ }
+ return XnRestfulResultProvider.RESTfulResult(bindEntranceOutputModel);
+ }
+
+ /// <summary>
+ /// 鎵爜鑾峰彇鐗╂枡
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetMaterial")]
+ [UnifyResult(typeof(MaterialOutput))]
+ public async Task<object> GetMaterial([FromQuery] GetMaterialInput input)
+ {
+ var material = new MaterialOutput();
+ material.MaterialName = "鑳跺悎鏉�";
+ material.MaterialNo = "JHB20110101";
+ material.MaterialId = 43214325321513;
+ material.MaterialBatch = "DIYIPICI001";
+ material.MaterialType = MaterialType.BAOZHUANGCAILIAO;
+ material.InspectionMethod = MaterialInspection.MIANJIAN;
+ material.MaterialSpec = "";
+ material.MaterialDensity = "";
+ material.MaterialUnit = "";
+ material.LesWorkshopSection = LesWorkshopSection.CNC;
+ return XnRestfulResultProvider.RESTfulResult(material);
+
+ }
+
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("AutoWare")]
+ public async Task AutoWare(WarehousingInput input)
+ {
+ // 鏍规嵁鎵樼洏鍙锋煡璇㈡墭鐩樺彿淇℃伅鏄惁宸插瓨鍦�
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+ if (wmsContainer == null)
+ {
+ // 涓嶅瓨鍦ㄥ垯娣诲姞鎵樼洏鍙蜂俊鎭�
+ wmsContainer = new WmsContainer
+ {
+ ContainerCode = input.ContainerCode,
+ ContainerType = ContainerType.SULIAO,
+ ContainerStatus = ContainerStatus.KOUXIAN,
+ AssetNo = "N/A",
+ ErpNo = "N/A"
+ };
+ await _wmsContainerRep.InsertNowAsync(wmsContainer);
+ }
+ // 鏌ヨ鏄惁浠诲姟宸插瓨鍦�
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (isExit) throw Oops.Oh("鎵樼洏鍙峰瓨鍦ㄦ湭瀹屾垚浠诲姟涓�!");
+
+ // 鏌ヨ宸茬粍鐩樹俊鎭�
+ var wmsMaterialContainerList = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerList);
+ var orderNo = "N/A";
+ if (input.WmsMaterials.Count > 0)
+ {
+ wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+ orderNo = YitIdHelper.NextId().ToString();
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+ // 鍒涘缓鏂扮粍鐩樿褰�
+ foreach (var item in input.WmsMaterials)
+ {
+ //鍒涘缓缁勭洏璁板綍
+ var bindentranceModel = new WmsMaterialContainer();
+ bindentranceModel.ContainerId = wmsContainer.Id;
+ bindentranceModel.ContainerCode = wmsContainer.ContainerCode;
+ bindentranceModel.MaterialNo = item.MaterialNo;
+ bindentranceModel.MaterialId = 478183507525701;
+ bindentranceModel.MaterialBatch = item.MaterialBatch;
+ bindentranceModel.BindQuantity = 1;
+ bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ bindentranceModel.OrderNo = orderNo;
+ bindentranceModel.MaterialName = item.MaterialName;
+ bindentranceModel.MaterialDensity = "N/A";
+ await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ }
+ }
+
+
+
+ /// <summary>
+ /// 鑷姩鍏ュ簱
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("automaticWarehousing")]
+ [UnitOfWork]
+ public async Task AutomaticWarehousing(WarehousingInput input)
+ {
+ // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+ // 鏍规嵁鏂欑鍙锋煡璇㈠懆杞鍙蜂俊鎭槸鍚﹀凡瀛樺湪
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+ if (wmsContainer == null)
+ {
+ // 涓嶅瓨鍦ㄥ垯娣诲姞鍛ㄨ浆绠卞彿淇℃伅
+ wmsContainer = new WmsContainer
+ {
+ ContainerCode = input.ContainerCode,
+ ContainerType = ContainerType.JINSHU,
+ ContainerStatus = ContainerStatus.KOUXIAN,
+ AssetNo = "N/A",
+ ErpNo = "N/A"
+ };
+ await _wmsContainerRep.InsertNowAsync(wmsContainer);
+ }
+ else
+ {
+ // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滃簱浣嶁��
+ wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+
+ // 鏌ヨ鍛ㄨ浆绠卞彿鏄惁宸插瓨鍦ㄤ换鍔�
+ var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (isWmsTask) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ // 鍒犻櫎宸茬粍鐩樹俊鎭�
+ var oldWmsMaterialContainerList = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ foreach (var item in oldWmsMaterialContainerList)
+ {
+ await _wmsMaterialContainerRep.DeleteAsync(item);
+ }
+
+ // 缁勭洏鍗曟嵁 榛樿绌烘枡绠卞崟鎹�
+ var source = ""; //瀹氫箟鍏ュ簱鏉ユ簮
+ var orderNo = "N/A";
+ if (input.WmsMaterials.Count > 0)
+ {
+ wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+ orderNo = YitIdHelper.NextId().ToString();
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ source = "鐗╂枡";
+ }
+ else
+ {
+ source = "绌烘墭";
+ }
+ // 鏌ヨ鐗╂枡Id
+ var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.MaterialNo == "N/A" && u.MaterialName == "N/A" && u.MaterialBatch == "N/A");
+
+ // 鍒涘缓鏂扮粍鐩樿褰�
+ foreach (var item in input.WmsMaterials)
+ {
+ var wmsMaterialContainer = item.Adapt<WmsMaterialContainer>();
+ wmsMaterialContainer.OrderNo = orderNo;
+ wmsMaterialContainer.ContainerId = wmsContainer.Id;
+ wmsMaterialContainer.ContainerCode = wmsContainer.ContainerCode;
+ wmsMaterialContainer.MaterialId = wmsMaterial.Id;
+ wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+ await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+ }
+
+
+ //if (input.Source == RuKuSourceEnum.KONGTUO)
+ //else if (input.Source == RuKuSourceEnum.WULIAO)
+
+ //鍒涘缓宸烽亾鍒嗛厤
+ var wmsPlace = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.KONGXIAN).ToListAsync();
+ var one = wmsPlace.Where(s => s.Aisle==1).ToList().Count;
+ var two = wmsPlace.Where(s => s.Aisle == 2).ToList().Count;
+ var three = wmsPlace.Where(s => s.Aisle == 3).ToList().Count;
+ var Aisle = 0;
+ if (one >= two && one >= three)
+ {
+ Aisle = 1;
+ }
+ else if (two >= one && two >= three)
+ {
+ Aisle = 2;
+ }
+ else
+ {
+ Aisle = 3;
+ }
+
+ string taskNo = "RUKU"+ DateTime.Today.ToString("yyyyMMdd");
+ var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+ if (wmsTaskModel == null)
+ {
+ taskNo = taskNo + "0001";
+ }
+ else
+ {
+ //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+ var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+ taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+ }
+
+ // 鍒涘缓浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.RUKU,
+ TaskLevel = 1,
+ Aisle = Aisle,
+ TaskStatus = TaskStatusEnum.WEIZHIXING,
+ ContainerCode = wmsContainer.ContainerCode,
+ SourcePlace = "鍏ュ簱鍙�",
+ ToPlace = "",
+ AreaName = wmsArea != null ? wmsArea.AreaName : "",
+ OrderNo = orderNo,
+ Description = source, //鍏ュ簱鏉ユ簮
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX,
+ IsRead = true
+ };
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+
+
+
+
+
+ /// <summary>
+ /// 浜哄伐鍏ュ簱
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("manualWarehousing")]
+ [UnitOfWork]
+ public async Task ManualWarehousing(WarehousingInput input)
+ {
+ // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+ // 鏍规嵁鏂欑鍙锋煡璇㈠懆杞鍙蜂俊鎭槸鍚﹀凡瀛樺湪
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.ContainerCode == input.ContainerCode);
+ if (wmsContainer == null)
+ {
+ // 涓嶅瓨鍦ㄥ垯娣诲姞鍛ㄨ浆绠卞彿淇℃伅
+ wmsContainer = new WmsContainer
+ {
+ ContainerCode = input.ContainerCode,
+ ContainerType = ContainerType.JINSHU,
+ ContainerStatus = ContainerStatus.KUWEI,
+ AssetNo = "N/A",
+ ErpNo = "N/A"
+ };
+ await _wmsContainerRep.InsertNowAsync(wmsContainer);
+ }
+ else
+ {
+ // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滃簱浣嶁��
+ wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+
+ // 鏌ヨ鍛ㄨ浆绠卞彿鏄惁宸插瓨鍦ㄤ换鍔�
+ var isWmsTask = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (isWmsTask) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ // 鍒犻櫎宸茬粍鐩樹俊鎭�
+ var oldWmsMaterialContainerList = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ foreach (var item in oldWmsMaterialContainerList)
+ {
+ await _wmsMaterialContainerRep.DeleteAsync(item);
+ }
+
+ // 鏌ヨ搴撲綅淇℃伅 闅忔満鍒嗛厤搴撲綅
+ var wmsPlace = new WmsPlace();
+ if (string.IsNullOrEmpty(input.PlaceCode))
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.Islock == YesOrNot.N && u.PlaceStatus == PlaceStatus.KONGXIAN);
+ else
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.PlaceCode == input.PlaceCode);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+ if (wmsPlace.PlaceStatus != PlaceStatus.KONGXIAN) throw Oops.Oh("搴撲綅宸插瓨璐�!");
+ // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+ wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+
+ // 缁勭洏鍗曟嵁 榛樿绌烘枡绠卞崟鎹�
+ var orderNo = "N/A";
+ var source = ""; //瀹氫箟鍏ュ簱鏉ユ簮
+ if (input.WmsMaterials.Count > 0)
+ {
+ orderNo = YitIdHelper.NextId().ToString();
+ source = "鐗╂枡";
+ }
+ else
+ {
+ wmsPlace.EmptyContainer = YesOrNot.Y; //鏄惁绌烘墭
+ source = "绌烘墭";
+ }
+ // 鏌ヨ鐗╂枡Id
+ var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.MaterialNo == "N/A" && u.MaterialName == "N/A" && u.MaterialBatch == "N/A");
+
+ // 鍒涘缓鏂扮粍鐩樿褰�
+ foreach (var item in input.WmsMaterials)
+ {
+ var wmsMaterialContainer = item.Adapt<WmsMaterialContainer>();
+ wmsMaterialContainer.OrderNo = orderNo;
+ wmsMaterialContainer.ContainerId = wmsContainer.Id;
+ wmsMaterialContainer.ContainerCode = wmsContainer.ContainerCode;
+ wmsMaterialContainer.MaterialId = wmsMaterial.Id;
+ wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+
+ await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+ }
+
+ string taskNo = "RUKU" + DateTime.Today.ToString("yyyyMMdd");
+ var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+ if (wmsTaskModel == null)
+ {
+ taskNo = taskNo + "0001";
+ }
+ else
+ {
+ //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+ var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+ taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+ }
+
+ // 鍒涘缓浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.SHOUDONG,
+ TaskType = TaskType.RUKU,
+ TaskLevel = 1,
+ Aisle = wmsPlace.Aisle,
+ TaskStatus = TaskStatusEnum.WANCHENG,
+ ContainerCode = wmsContainer.ContainerCode,
+ SourcePlace = "鍏ュ簱鍙�",
+ ToPlace = wmsPlace.PlaceCode,
+ AreaName = wmsArea != null ? wmsArea.AreaName : "",
+ OrderNo = orderNo,
+ Description = source, //鍏ュ簱鏉ユ簮
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+ UpdatedTime = DateTime.Now,
+ };
+ await _wmsTaskRep.InsertAsync(takmodel);
+
+ // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+ var wmsContainerPlaceModel = new WmsContainerPlace()
+ {
+ PlaceId = wmsPlace.Id,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ ContainerPlaceStatus = CommonStatus.ENABLE
+ };
+ await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+ // 鏇存柊搴撳瓨
+ var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+ .Where(p => p.OrderNo == orderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+ foreach (var item in wmsMaterialContainerList)
+ {
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+ && p.MaterialBatch == item.MaterialBatch );
+ if (wmsMaterialStock != null)
+ {
+ wmsMaterialStock.Source = RuKuSourceEnum.WULIAO;
+ wmsMaterialStock.AreaId = wmsPlace.AreaId;
+ wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+ wmsMaterialStock.StockNumber += item.BindQuantity;
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+ else
+ {
+ wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = item.MaterialNo,
+ MaterialType = MaterialType.CHENGPING,
+ MaterialName = item.MaterialName,
+ MaterialSpec = item.MaterialSpec,
+ MaterialBatch = item.MaterialBatch,
+ MaterialDensity = item.MaterialDensity,
+ StockNumber = 1,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.WULIAO
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ }
+ // 绌烘枡绠卞叆搴�
+ if (orderNo == "N/A")
+ {
+ var wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = "N/A",
+ MaterialType = MaterialType.KONGTUO,
+ MaterialName = "N/A",
+ MaterialSpec = "N/A",
+ MaterialBatch = "N/A",
+ MaterialDensity = "N/A",
+ StockNumber = 0,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.KONGTUO
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs
new file mode 100644
index 0000000..390ded0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceInput.cs
@@ -0,0 +1,117 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class BindEntranceInput : PageInputBase
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+ }
+
+ /// <summary>
+ /// 缁勭洏杈撳叆鍙傛暟
+ /// </summary>
+ public class WarehousingInput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鍙�
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱璧峰浣嶇疆
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<WarehousingMaterialInput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 鐗╂枡鏄庣粏杈撳叆鍙傛暟
+ /// </summary>
+ public class WarehousingMaterialInput
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public long MaterialId { get; set; }
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡妫�楠�
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ public string MaterialUnit { get; set; }
+
+ /// <summary>
+ /// 宸ユ
+ /// </summary>
+ public LesWorkshopSection LesWorkshopSection { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐗╂枡杈撳叆鍙傛暟
+ /// </summary>
+ public class GetMaterialInput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs
new file mode 100644
index 0000000..5393a8a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/BindEntrance/Dto/BindEntranceOutput.cs
@@ -0,0 +1,124 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 缁勭洏鐗╂枡淇℃伅
+ /// </summary>
+ public class BindEntranceOutput
+ {
+
+ /// <summary>
+ /// 鍛ㄨ浆绠卞彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鏂欑鍙蜂俊鎭�
+ /// </summary>
+ public WmsContainerDto WmsContainer { get; set; }
+ /// <summary>
+ /// 搴撲綅缂栧彿
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鏄庣粏淇℃伅
+ /// </summary>
+ public List<GetMaterialContainerOutput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 鐗╂枡鏄庣粏淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class GetMaterialContainerOutput
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡妫�楠�
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+ }
+
+
+ public class MaterialOutput
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡ID
+ /// </summary>
+ public long MaterialId { get; set; }
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡妫�楠�
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ public string MaterialUnit { get; set; }
+
+ /// <summary>
+ /// 宸ユ
+ /// </summary>
+ public LesWorkshopSection LesWorkshopSection { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs
new file mode 100644
index 0000000..9330db4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWareHouseOutput.cs
@@ -0,0 +1,107 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄簱杈撳叆鍙傛暟
+ /// </summary>
+ public class ExWareHouseOutput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 瀹炵墿搴撳瓨鏁�
+ /// </summary>
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 璐﹂潰鏁伴噺
+ /// </summary>
+ public decimal QuantityOfBill { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs
new file mode 100644
index 0000000..fe42618
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/Dto/ExWarehouseInput.cs
@@ -0,0 +1,49 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡鍑哄簱鏌ヨ鍙傛暟
+ /// </summary>
+ public class ExWarehouseSearch: PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+ }
+
+ /// <summary>
+ /// 鍑哄簱杈撳叆鍙傛暟
+ /// </summary>
+ public class ExWarehouseInput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+ /// <summary>
+ /// 鍑哄簱浣嶇疆
+ /// </summary>
+ public string ToPlace { get; set; }
+ /// <summary>
+ /// 搴撲綅缂栧彿
+ /// </summary>
+ public string PlaceCode { get; set; }
+ }
+
+ /// <summary>
+ /// 鍛煎彨绌烘墭杈撳叆鍙傛暟
+ /// </summary>
+ public class CallAirflareInput
+ {
+ /// <summary>
+ /// 鍛煎彨绌烘墭鏁伴噺
+ /// </summary>
+ public int Quantity { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs
new file mode 100644
index 0000000..9eddb3e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/ExWarehouse/ExWarehouseService.cs
@@ -0,0 +1,323 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄簱绠$悊鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "ExWarehouse", Order = 100)]
+ [Route("api/[Controller]")]
+ public class ExWarehouseService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public ExWarehouseService(
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep
+ )
+ {
+ this._wmsAreaRep = wmsAreaRep;
+ this._wmsPlaceRep = wmsPlaceRep;
+ this._wmsTaskRep = wmsTaskRep;
+ this._wmsContainerRep = wmsContainerRep;
+ this._wmsContainerPlaceRep = wmsContainerPlaceRep;
+ this._wmsMaterialRep = wmsMaterialRep;
+ this._wmsMaterialStockRep = wmsMaterialStockRep;
+ this._wmsMaterialContainerRep = wmsMaterialContainerRep;
+ }
+
+
+
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鐗╂枡鍑哄簱绠$悊淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<ExWareHouseOutput>> Page([FromQuery] ExWarehouseSearch input)
+ {
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+ .Where (!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+ .ProjectToType<ExWareHouseOutput>()
+ .ToListAsync();
+ return wmsMaterialStocks.ToADPagedList(input.PageNo, input.PageSize);
+ }
+
+ /// <summary>
+ /// 鑷姩鍑哄簱
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ [HttpPost("AutoExWarehouse")]
+ [UnitOfWork]
+ public async Task AutoExWarehouse(List<ExWarehouseInput> inputs)
+ {
+ // 鏍规嵁鎵樼洏鍙枫�佸簱浣嶇紪鍙峰幓閲�
+ var containerCodeDistinct = inputs.Select(u => new { u.ContainerCode, u.PlaceCode }).Distinct().ToList();
+ if (containerCodeDistinct.Count <= 0) throw Oops.Oh("鏆傛棤搴撳瓨鍑哄簱");
+
+ // 鏌ヨ搴撳尯鍚嶇О
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+ if (wmsArea != null) throw Oops.Oh("搴撳尯涓嶅瓨鍦�");
+
+ foreach (var item in containerCodeDistinct)
+ {
+ var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+ // 鍒ゆ柇浠诲姟
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(p => p.ContainerCode == item.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (wmsTask != null) throw Oops.Oh("鍛ㄨ浆绠卞彿瀛樺湪鏈畬鎴愮殑浠诲姟!");
+
+ // 妫�鏌ュ懆杞鍙蜂俊鎭�
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == item.ContainerCode);
+ if (wmsContainer == null) throw Oops.Oh("搴撳瓨涓病鏈夎锛�" + wmsContainer.ContainerCode + "鎵樼洏!");
+
+ // 妫�鏌ュ簱浣嶄俊鎭�
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == item.PlaceCode);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+ // 鏇存柊鐘舵�佷负鈥滃緟鍑衡��
+ wmsPlace.PlaceStatus = PlaceStatus.DAICHU;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // 妫�鏌ュ簱瀛�
+ var wmsMaterialStockList = inputs.Where(u => u.ContainerCode == wmsContainer.ContainerCode && u.PlaceCode == wmsPlace.PlaceCode).ToList();
+ if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+ // 妫�鏌ュ簱浣嶄笌鍛ㄨ浆绠卞彿鍏崇郴
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.ContainerId == wmsContainer.Id
+ && p.PlaceCode == wmsPlace.PlaceCode && p.PlaceId == wmsPlace.Id && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (wmsContainerPlace == null) throw Oops.Oh("鎵樼洏鍙蜂笌搴撲綅鍏崇郴涓嶅瓨鍦�!");
+
+ // 涓嶆槸绌烘枡绠辨墠浼氭湁缁勭洏鍏崇郴
+ if (wmsPlace.EmptyContainer == YesOrNot.N)
+ {
+ // 妫�鏌ョ墿鏂欎笌鍛ㄨ浆绠卞彿鍏崇郴
+ wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鍛ㄨ浆绠卞彿涓庣墿鏂欏叧绯讳笉瀛樺湪!");
+ }
+ else
+ {
+ // 鏇存柊绌烘枡绠卞簱瀛�
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+ if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+ {
+ wmsMaterialStock.PlaceCode = "N/A";
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+ }
+ if (wmsTask == null)
+ {
+ string taskNo = "CHUKU" + DateTime.Today.ToString("yyyyMMdd");
+ var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+ if (wmsTaskModel == null)
+ {
+ taskNo = taskNo + "0001";
+ }
+ else
+ {
+ //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+ var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+ taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+ }
+
+ // 鏂板浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.CHUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.WEIZHIXING,
+ ContainerCode = wmsContainer.ContainerCode,
+ SourcePlace = wmsPlace.PlaceCode,
+ Aisle = wmsPlace.Aisle,
+ ToPlace = "鍑哄簱鍙�",
+ AreaName = wmsArea.AreaName,
+ Description = wmsPlace.EmptyContainer == YesOrNot.Y ? "绌烘墭" : "鐗╂枡",
+ OrderNo = wmsMaterialContainerList.Count <= 0 ? "N/A" : wmsMaterialContainerList.FirstOrDefault().OrderNo,
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+ IsRead = true
+ };
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+ }
+ }
+
+ /// <summary>
+ /// 浜哄伐鍑哄簱
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ [HttpPost("manualExWarehouse")]
+ [UnitOfWork]
+ public async Task ManualExWarehouse(List<ExWarehouseInput> inputs)
+ {
+ // 鏍规嵁鎵樼洏鍙枫�佸簱浣嶇紪鍙峰幓閲�
+ var containerCodeDistinct = inputs.Select(u => new { u.ContainerCode, u.PlaceCode }).Distinct().ToList();
+ if (containerCodeDistinct.Count <= 0) throw Oops.Oh("鏆傛棤搴撳瓨鍑哄簱");
+
+ // 鏌ヨ搴撳尯鍚嶇О
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+ if (wmsArea != null) throw Oops.Oh("搴撳尯涓嶅瓨鍦�");
+
+ foreach (var item in containerCodeDistinct)
+ {
+ var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+ // 鍒ゆ柇浠诲姟
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(p => p.ContainerCode == item.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG);
+ if (wmsTask != null) throw Oops.Oh("鎵樼洏鍙峰瓨鍦ㄦ湭瀹屾垚鐨勪换鍔�!");
+
+ // 妫�鏌ユ墭鐩樺彿淇℃伅
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == item.ContainerCode);
+ if (wmsContainer == null) throw Oops.Oh("鍛ㄨ浆绠卞彿涓嶅瓨鍦�!");
+
+ // 妫�鏌ュ簱浣嶄俊鎭�
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == item.PlaceCode);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+ // 妫�鏌ュ簱瀛�
+ var wmsMaterialStockList = inputs.Where(u => u.ContainerCode == wmsContainer.ContainerCode && u.PlaceCode == wmsPlace.PlaceCode).ToList();
+ if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+ // 妫�鏌ュ簱浣嶄笌鎵樼洏鍙峰叧绯�
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode && p.ContainerId == wmsContainer.Id
+ && p.PlaceCode == wmsPlace.PlaceCode && p.PlaceId == wmsPlace.Id && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (wmsContainerPlace == null) throw Oops.Oh("鎵樼洏鍙蜂笌搴撲綅鍏崇郴涓嶅瓨鍦�!");
+
+
+ // 涓嶆槸绌烘墭鎵嶄細鏈夌粍鐩樺叧绯�
+ if (wmsPlace.EmptyContainer == YesOrNot.N)
+ {
+ // 妫�鏌ョ墿鏂欎笌绌烘墭鍙峰叧绯�
+ wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鎵樼洏鍙蜂笌鐗╂枡鍏崇郴涓嶅瓨鍦�!");
+ }
+ else
+ {
+ // 鏇存柊绌烘枡绠卞簱瀛�
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+ if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+ {
+ await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+ }
+ }
+
+ if (wmsTask == null)
+ {
+ //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+ var orderNo = "N/A";
+ if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+
+ foreach (var wmsMaterialContaine in wmsMaterialContainerList)
+ {
+ //鏇存柊鐘舵�佷负鈥濆垹闄も��
+ wmsMaterialContaine.BindStatus = CommonStatus.DELETED;
+ await _wmsMaterialContainerRep.UpdateNowAsync(wmsMaterialContaine);
+
+ //鏂板缁勭洏缁戝畾璁板綍 姝e父
+ var addWmsMaterialContainer = wmsMaterialContaine;
+ addWmsMaterialContainer.Id = YitIdHelper.NextId();
+ addWmsMaterialContainer.OrderNo = orderNo;
+ addWmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+ await _wmsMaterialContainerRep.InsertNowAsync(addWmsMaterialContainer);
+ // 杩欓噷娌℃湁鍒嗘嫞鎿嶄綔鐩存帴鏇存柊搴撳瓨淇℃伅
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsMaterialContaine.ContainerCode);
+ wmsMaterialStock.PlaceCode = "N/A";
+ wmsMaterialStock.StockNumber -= wmsMaterialContaine.BindQuantity;
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+
+ string taskNo = "CHUKU" + DateTime.Today.ToString("yyyyMMdd");
+ var wmsTaskModel = await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => EF.Functions.Like(u.TaskNo, $"%{taskNo}%"));
+ if (wmsTaskModel == null)
+ {
+ taskNo = taskNo + "0001";
+ }
+ else
+ {
+ //鑾峰彇娴佹按鍙锋渶澶х殑鏁版嵁
+ var maxSerialNumber = await _wmsTaskRep.MaxAsync(t => t.TaskNo);
+ taskNo = Comm.GenerateNewInvoiceNumber(maxSerialNumber, 1);
+ }
+ // 鏂板浠诲姟
+ var addWmsTask = new WmsTask()
+ {
+ TaskNo = taskNo,//YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.SHOUDONG,
+ TaskType = TaskType.CHUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.WANCHENG,
+ ContainerCode = wmsContainer.ContainerCode,
+ SourcePlace = wmsPlace.PlaceCode,
+ Aisle = wmsPlace.Aisle,
+ ToPlace = "鍑哄簱鍙�",
+ AreaName = wmsArea.AreaName,
+ Description = wmsPlace.EmptyContainer == YesOrNot.Y ? "绌烘墭" : "鐗╂枡",
+ OrderNo = orderNo,
+ TaskDodeviceStatus=TaskDodeviceStatusEnum.W,
+ UpdatedTime = DateTime.Now,
+ };
+ await _wmsTaskRep.InsertAsync(addWmsTask);
+
+ // 鏇存柊搴撲綅涓庡懆杞鍙峰叧绯昏〃鐘舵�佷负鈥滃垹闄も��
+ wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+
+ // 鏇存柊搴撲綅涓衡�滅┖闂测��
+ wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ wmsPlace.Islock = YesOrNot.N;
+ wmsPlace.EmptyContainer = YesOrNot.N;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // 鏇存柊鍛ㄨ浆绠卞彿鐘舵�佷负鈥滅┖闂测��
+ wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 鍛煎彨绌烘墭
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("callairflare")]
+ [UnitOfWork]
+ public async Task CallAirflare(CallAirflareInput input)
+ {
+ //鑾峰彇搴撲綅涓瓨璐ф槸绌烘墭鐨勫簱浣�
+ var wmsPlace = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.EmptyContainer== YesOrNot.Y).ToListAsync();
+ if (wmsPlace.Count > 0)
+ {
+
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs
new file mode 100644
index 0000000..434e4c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaDto.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsAreaDto
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ public AreaType AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ public bool IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs
new file mode 100644
index 0000000..32d5fa7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaInput.cs
@@ -0,0 +1,163 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳尯淇℃伅鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsAreaSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public virtual string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ public virtual AreaType? AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ public virtual bool? IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState? IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳尯淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsAreaSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public virtual string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ public virtual AreaType? AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ public virtual bool? IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState? IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳尯淇℃伅杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsAreaInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public virtual string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ public virtual AreaType AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ public virtual bool IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState IssueState { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddWmsAreaInput : WmsAreaInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteWmsAreaInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateWmsAreaInput : WmsAreaInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeWmsAreaInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs
new file mode 100644
index 0000000..d2aaacc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/Dto/WmsAreaOutput.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsAreaOutput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被
+ /// </summary>
+ public AreaType AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ public bool IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs
new file mode 100644
index 0000000..9f665e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsArea/WmsAreaService.cs
@@ -0,0 +1,313 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳尯淇℃伅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsArea", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsAreaService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="wmsAreaRep"></param>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="sysExcelTemplateService"></param>
+ public WmsAreaService(
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsAreaRep = wmsAreaRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ搴撳尯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsAreaOutput>> Page([FromQuery] WmsAreaSearch input)
+ {
+ var wmsAreas = await _wmsAreaRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.AreaName), u => EF.Functions.Like(u.AreaName, $"%{input.AreaName.Trim()}%"))
+ .Where(input.AreaStatus != null, u => u.AreaStatus == input.AreaStatus)
+ .Where(input.AreaType != null, u => u.AreaType == input.AreaType)
+ .Where(input.IsSteel != null, u => u.IsSteel == input.IsSteel)
+ .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+
+ .OrderBy(PageInputOrder.OrderBuilder<WmsAreaSearch>(input))
+ .ProjectToType<WmsAreaOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsAreas;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠簱鍖轰俊鎭垪琛�
+ /// </summary>
+ /// <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+ /// <returns>(搴撳尯淇℃伅)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsAreaOutput>> ListNonPageAsync([FromQuery] WmsAreaSearchNonPage input)
+ {
+ var pAreaName = input.AreaName?.Trim() ?? "";
+ var pAreaStatus = input.AreaStatus;
+ var pAreaType = input.AreaType;
+ var pIsSteel = input.IsSteel;
+ var pWorkShopType = input.WorkShopType;
+ var pIssueState = input.IssueState;
+ var wmsAreas = await _wmsAreaRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pAreaName), u => EF.Functions.Like(u.AreaName, $"%{pAreaName}%"))
+ .Where(pAreaStatus != null, u => u.AreaStatus == pAreaStatus)
+ .Where(pAreaType != null, u => u.AreaType == pAreaType)
+ .Where(pIsSteel != null, u => u.IsSteel == pIsSteel)
+ .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsAreaOutput>()
+ .ToListAsync();
+ return wmsAreas;
+ }
+
+ /// <summary>
+ /// 澧炲姞搴撳尯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsAreaInput input)
+ {
+ var wmsArea = input.Adapt<WmsArea>();
+ await _wmsAreaRep.InsertAsync(wmsArea);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎搴撳尯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsAreaInput input)
+ {
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsAreaRep.DeleteAsync(wmsArea);
+ }
+
+ /// <summary>
+ /// 鏇存柊搴撳尯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsAreaInput input)
+ {
+ var isExist = await _wmsAreaRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsArea = input.Adapt<WmsArea>();
+ await _wmsAreaRep.UpdateAsync(wmsArea, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳尯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsAreaOutput> Get([FromQuery] QueryeWmsAreaInput input)
+ {
+ return (await _wmsAreaRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsAreaOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳尯淇℃伅鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsAreaOutput>> List([FromQuery] WmsAreaInput input)
+ {
+ return await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// 缁勮杞﹂棿鑾峰彇搴撳尯
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("TaskWmsArea")]
+ public async Task<dynamic> TaskWmsArea()
+ {
+ var list = await _wmsAreaRep.DetachedEntities.Where(x => x.WorkShopType == LesWorkShopType.JIAOHEBANCHEJIAN).ToListAsync();
+ return list.Select(e => new { Code = e.Id, AreaName = e.AreaName });
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠撳簱涓嬫媺妗�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetAreaEntranceList")]
+ public async Task<List<AreaEntranceListOutput>> GetAreaEntranceList()
+ {
+ var data = await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+ List<AreaEntranceListOutput> areaEntranceListOutputLists = new List<AreaEntranceListOutput>();
+ foreach (var item in data)
+ {
+ AreaEntranceListOutput areaEntranceListOutputList = new AreaEntranceListOutput();
+ areaEntranceListOutputList.AreaId = item.Id;
+ areaEntranceListOutputList.AreaName = item.AreaName;
+ areaEntranceListOutputLists.Add(areaEntranceListOutputList);
+ }
+ return areaEntranceListOutputLists;
+ }
+
+ ///// <summary>
+ ///// 鍑哄簱鍙d笅鎷夋
+ ///// </summary>
+ ///// <param name="input"></param>
+ ///// <returns></returns>
+ //[HttpGet("GetEntranceOutList")]
+ //public async Task<List<EntranceListOutput>> GetEntranceOutList([FromQuery] EntranceOutInput input)
+ //{
+ // var data = await _lesEntranceRep.DetachedEntities.Where(u => u.AreaId == input.Id && u.EntranceType == Core.LesEntranceType.CHUKU).ProjectToType<LesStationOutput>().ToListAsync();
+ // List<EntranceListOutput> entranceLists = new List<EntranceListOutput>();
+ // foreach (var item in data)
+ // {
+ // EntranceListOutput entranceList = new EntranceListOutput();
+ // entranceList.EntranceId = item.Id;
+ // entranceList.EntranceName = item.Name;
+ // entranceLists.Add(entranceList);
+ // }
+ // return entranceLists;
+ //}
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆搴撳尯淇℃伅鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName);
+ List<WmsAreaOutput> wmsAreaList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsAreaOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsAreaList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsArea>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsArea, WmsAreaOutput>(selectKeys);
+ List<WmsArea> updates = new();
+ List<WmsArea> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsAreaExistSubList = _wmsAreaRep.Where(filter).Select(selector).ToList();
+ wmsAreaExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+
+ foreach (var wmsArea in wmsAreaList)
+ {
+ if (wmsArea.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsArea.Adapt<WmsArea>());
+ }
+ else
+ {
+ adds.Add(wmsArea.Adapt<WmsArea>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsAreaRep.Update(x));
+
+ var maxId = _wmsAreaRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsArea>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇搴撳尯淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撳尯淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">搴撳尯淇℃伅鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsAreaSearchNonPage input)
+ {
+ var wmsAreaList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsAreaList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsArea", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs
new file mode 100644
index 0000000..83a3c37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerDto.cs
@@ -0,0 +1,102 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsContainerDto
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public Admin.NET.Core.ContainerType ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public decimal SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public decimal SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public decimal LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public decimal LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public decimal LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public decimal MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ public long ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ public string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ public string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙
+ /// </summary>
+ public Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs
new file mode 100644
index 0000000..aab8232
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerInput.cs
@@ -0,0 +1,311 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鎵樼洏淇℃伅鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsContainerSearch : PageInputBase
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerType? ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerStatus? ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public virtual decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public virtual decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public virtual decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public virtual decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public virtual decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public virtual decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public virtual decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ public virtual long? ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ public virtual string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerCategory? ContainerCategory { get; set; }
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ public virtual string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙
+ /// </summary>
+ public virtual Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鎵樼洏淇℃伅涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsContainerSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerType? ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerStatus? ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public virtual decimal? SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public virtual decimal? SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public virtual decimal? SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public virtual decimal? LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public virtual decimal? LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public virtual decimal? LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public virtual decimal? MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ public virtual long? ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ public virtual string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerCategory? ContainerCategory { get; set; }
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ public virtual string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙
+ /// </summary>
+ public virtual Admin.NET.Core.YesOrNot? IsVirtually { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鎵樼洏淇℃伅杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsContainerInput
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerType ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public virtual decimal SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public virtual decimal SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public virtual decimal SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public virtual decimal LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public virtual decimal LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public virtual decimal LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public virtual decimal MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ public virtual long ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ public virtual string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ public virtual string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙
+ /// </summary>
+ public virtual Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsContainerInput : WmsContainerInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "鏁伴噺涓嶈兘涓虹┖")]
+ public long Quantity { get; set; }
+ }
+
+ public class DeleteWmsContainerInput : BaseId
+ {
+ }
+
+ public class UpdateWmsContainerInput : WmsContainerInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsContainerInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs
new file mode 100644
index 0000000..87cbb47
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Dto/WmsContainerOutput.cs
@@ -0,0 +1,102 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎵樼洏淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsContainerOutput
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public Admin.NET.Core.ContainerType ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public Admin.NET.Core.ContainerStatus ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public decimal SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public decimal SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ public decimal LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ public decimal LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ public decimal LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ public decimal MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ public long ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ public string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public Admin.NET.Core.ContainerCategory ContainerCategory { get; set; }
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ public string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙
+ /// </summary>
+ public Admin.NET.Core.YesOrNot IsVirtually { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs
new file mode 100644
index 0000000..dd88e4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/IWmsContainerService.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface IWmsContainerService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Add(AddWmsContainerInput input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Delete(DeleteWmsContainerInput input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Update(UpdateWmsContainerInput input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+
+ Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="importExcelType"></param>
+ /// <returns></returns>
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="version"></param>
+ /// <returns></returns>
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs
new file mode 100644
index 0000000..ade3147
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/Map/WmsContainerMapper.cs
@@ -0,0 +1,25 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class WmsContainerMapper : IRegister
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="config"></param>
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsContainerInput, WmsContainer>()
+ ;
+ config.ForType<UpdateWmsContainerInput, WmsContainer>()
+ ;
+ config.ForType<WmsContainer, WmsContainerOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs
new file mode 100644
index 0000000..28707e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsContainer/WmsContainerService.cs
@@ -0,0 +1,303 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎵樼洏淇℃伅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsContainer", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsContainerService : IWmsContainerService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsContainer,MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsContainerService(
+ IRepository<WmsContainer,MasterDbContextLocator> wmsContainerRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsContainerRep = wmsContainerRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsContainerOutput>> Page([FromQuery] WmsContainerSearch input)
+ {
+ var wmsContainers = await _wmsContainerRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(input.ContainerType != null, u => u.ContainerType == input.ContainerType)
+ .Where(input.ContainerStatus != null, u => u.ContainerStatus == input.ContainerStatus)
+ .Where(input.SpecLength != null, u => u.SpecLength == input.SpecLength)
+ .Where(input.SpecWidth != null, u => u.SpecWidth == input.SpecWidth)
+ .Where(input.ContainerCategory != null, u => u.ContainerCategory == input.ContainerCategory)
+ .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsContainerSearch>(input))
+ .ProjectToType<WmsContainerOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsContainers;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡墭鐩樹俊鎭垪琛�
+ /// </summary>
+ /// <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+ /// <returns>(鎵樼洏淇℃伅)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsContainerOutput>> ListNonPageAsync([FromQuery] WmsContainerSearchNonPage input)
+ {
+ var pContainerCode = input.ContainerCode?.Trim() ?? "";
+ var pContainerType = input.ContainerType;
+ var pContainerStatus = input.ContainerStatus;
+ var pSpecLength = input.SpecLength;
+ var pSpecWidth = input.SpecWidth;
+ var pContainerCategory = input.ContainerCategory;
+ var pWorkShopType = input.WorkShopType;
+ var wmsContainers = await _wmsContainerRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+ .Where(pContainerType != null, u => u.ContainerType == pContainerType)
+ .Where(pContainerStatus != null, u => u.ContainerStatus == pContainerStatus)
+ .Where(pSpecLength != null, u => u.SpecLength == pSpecLength)
+ .Where(pSpecWidth != null, u => u.SpecWidth == pSpecWidth)
+ .Where(pContainerCategory != null, u => u.ContainerCategory == pContainerCategory)
+ .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsContainerOutput>()
+ .ToListAsync();
+ return wmsContainers;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsContainerInput input)
+ {
+ var isExist = await _wmsContainerRep.AnyAsync(u => u.ContainerCode == input.ContainerCode, false);
+ if (isExist) throw Oops.Oh($"褰撳墠鎵樼洏宸插瓨鍦紝鏂板澶辫触锛�");
+
+ var ContainerInfo = input.Adapt<WmsContainer>();
+ ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+ ContainerInfo.AssetNo = "N/A";
+ ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+ ContainerInfo.ErpNo = "N/A";
+ ContainerInfo.IsVirtually = YesOrNot.N;
+ ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+ await _wmsContainerRep.InsertAsync(ContainerInfo);
+ //string ContainerCode = "ZHONGTONG";
+ //if (input.SpecLength == 1250)
+ //{
+ // ContainerCode = "YKA";
+ //}
+ //else if (input.SpecLength == 1050)
+ //{
+ // ContainerCode = "YKB";
+ //}
+ //else if (input.SpecLength == 800)
+ //{
+ // ContainerCode = "YKC";
+ //}
+ //var wmsContainerModal = await _wmsContainerRep.DetachedEntities.Where(u => u.ContainerCode.Contains(input.ContainerCode))
+ // .ProjectToType<WmsContainerOutput>()
+ // .OrderByDescending(u => u.ContainerCode)
+ // .FirstOrDefaultAsync();
+ //int a = 0;
+ //if (wmsContainerModal != null)
+ //{
+ // a = Convert.ToInt32(wmsContainerModal.ContainerCode.Substring(wmsContainerModal.ContainerCode.Length - 5));
+ //}
+ //for (int i = a + 1; i <= a + input.Quantity; i++)
+ //{
+ // var wmsContainer = input.Adapt<WmsContainer>();
+ // wmsContainer.AssetNo = "N/A";
+ // wmsContainer.ErpNo = "N/A";
+ // wmsContainer.IsVirtually = YesOrNot.N;
+ // wmsContainer.IsDeleted = false;;
+ // wmsContainer.ContainerCode = ContainerCode + i.ToString("00000");
+ // await _wmsContainerRep.InsertAsync(wmsContainer);
+ //}
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsContainerInput input)
+ {
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsContainerRep.DeleteAsync(wmsContainer);
+ }
+
+ /// <summary>
+ /// 鏇存柊鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsContainerInput input)
+ {
+ var isExist = await _wmsContainerRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsContainer = input.Adapt<WmsContainer>();
+ await _wmsContainerRep.UpdateAsync(wmsContainer,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsContainerOutput> Get([FromQuery] QueryeWmsContainerInput input)
+ {
+ return (await _wmsContainerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsContainerOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏淇℃伅鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsContainerOutput>> List([FromQuery] WmsContainerInput input)
+ {
+ return await _wmsContainerRep.DetachedEntities.ProjectToType<WmsContainerOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鎵樼洏淇℃伅鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object>> data, out string sheetName);
+ List<WmsContainerOutput> wmsContainerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsContainerOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsContainerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsContainer>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsContainer, WmsContainerOutput>(selectKeys);
+ List<WmsContainer> updates = new();
+ List<WmsContainer> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsContainerExistSubList = _wmsContainerRep.Where(filter).Select(selector).ToList();
+ wmsContainerExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsContainer in wmsContainerList)
+ {
+ if (wmsContainer.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsContainer.Adapt<WmsContainer>());
+ }
+ else
+ {
+ adds.Add(wmsContainer.Adapt<WmsContainer>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsContainerRep.Update(x));
+
+
+ var maxId = _wmsContainerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsContainer>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鎵樼洏淇℃伅鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁鎵樼洏淇℃伅鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">鎵樼洏淇℃伅鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsContainerSearchNonPage input)
+ {
+ var wmsContainerList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsContainerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsContainer", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs
new file mode 100644
index 0000000..5e4efad
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialDto.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public class WmsMaterialDto
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆
+ /// </summary>
+ public MaterialType? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍙傛暟
+ /// </summary>
+ public string AreaNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖哄弬鏁�
+ /// </summary>
+ public string StationNameParameter { get; set; }
+
+ /// <summary>
+ /// 鐔熷寲鏃堕棿
+ /// </summary>
+ public int MaturationTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁闇�瑕佺啛鍖�
+ /// </summary>
+ public bool? IsMaturation { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs
new file mode 100644
index 0000000..0914106
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialInput.cs
@@ -0,0 +1,261 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡淇℃伅鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsMaterialSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public virtual string Description { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆
+ /// </summary>
+ public virtual MaterialType? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public virtual string MaterialDensity { get; set; }
+
+
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ ///
+ public string MaterialUnit { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍙傛暟
+ /// </summary>
+ public virtual string AreaNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖哄弬鏁�
+ /// </summary>
+ public virtual string StationNameParameter { get; set; }
+
+ /// <summary>
+ /// 鐔熷寲鏃堕棿
+ /// </summary>
+ public virtual int? MaturationTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁闇�瑕佺啛鍖�
+ /// </summary>
+ public virtual bool? IsMaturation { get; set; }
+
+
+ //1217
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+
+ public MaterialInspection InspectionMethod { get; set; }
+
+
+ /// <summary>
+ /// 瀹夊叏瀛橀噺
+ /// </summary>
+
+ public decimal Safeqty { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у瓨閲�
+ /// </summary>
+
+ public decimal MaxImumqty { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓簱榫�
+ /// </summary>
+
+ public decimal MinstorageAge { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у簱榫�
+ /// </summary>
+
+ public decimal MaxstorageAge { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsMaterialInput
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public virtual string Description { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆
+ /// </summary>
+ public virtual MaterialType? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public virtual string MaterialDensity { get; set; }
+
+
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ ///
+ public string MaterialUnit { get; set; }
+
+
+ /// <summary>
+ /// 搴撳尯Ids
+ /// </summary>
+
+ public string AreaIds { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍙傛暟
+ /// </summary>
+ public virtual string AreaNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖篒ds
+ /// </summary>
+
+ public string StationIds { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖哄弬鏁�
+ /// </summary>
+ public virtual string StationNameParameter { get; set; }
+
+ /// <summary>
+ /// 鐔熷寲鏃堕棿
+ /// </summary>
+ public virtual int MaturationTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁闇�瑕佺啛鍖�
+ /// </summary>
+ public virtual bool IsMaturation { get; set; }
+
+ /// <summary>
+ /// 宸ユ
+ /// </summary>
+ public LesWorkshopSection? LesWorkshopSection { get; set; }
+
+ //1217
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+
+ public MaterialInspection InspectionMethod { get; set; }
+ /// <summary>
+ /// 瀹夊叏瀛橀噺
+ /// </summary>
+ public decimal Safeqty { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у瓨閲�
+ /// </summary>
+
+ public decimal MaxImumqty { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓簱榫�
+ /// </summary>
+
+ public decimal MinstorageAge { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у簱榫�
+ /// </summary>
+
+ public decimal MaxstorageAge { get; set; }
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddWmsMaterialInput : WmsMaterialInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteWmsMaterialInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateWmsMaterialInput : WmsMaterialInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeWmsMaterialInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs
new file mode 100644
index 0000000..f93ade9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/Dto/WmsMaterialOutput.cs
@@ -0,0 +1,152 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsMaterialOutput
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ ///
+ public string MaterialUnit { get; set; }
+ /// <summary>
+ /// 搴撳尯Ids
+ /// </summary>
+ public string AreaIds { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍙傛暟
+ /// </summary>
+ public string AreaNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖篒ds
+ /// </summary>
+ public string StationIds { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖哄弬鏁�
+ /// </summary>
+ public string StationNameParameter { get; set; }
+
+ /// <summary>
+ /// 鐔熷寲鏃堕棿
+ /// </summary>
+ public int MaturationTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁闇�瑕佺啛鍖�
+ /// </summary>
+ public bool IsMaturation { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ //1217
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+
+ public MaterialInspection InspectionMethod { get; set; }
+ /// <summary>
+ /// 瀹夊叏瀛橀噺
+ /// </summary>
+ public decimal Safeqty { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у瓨閲�
+ /// </summary>
+
+ public decimal MaxImumqty { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓簱榫�
+ /// </summary>
+
+ public decimal MinstorageAge { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у簱榫�
+ /// </summary>
+
+ public decimal MaxstorageAge { get; set; }
+
+
+
+
+ }
+
+ /// <summary>
+ /// 搴撳尯涓嬫媺妗嗚緭鍑哄弬鏁�
+ /// </summary>
+ public class AreaListOutput
+ {
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖篒d
+ /// </summary>
+ public string AreaId { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+ }
+
+ /// <summary>
+ /// 宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋杈撳嚭鍙傛暟
+ /// </summary>
+ public class StationListOutput
+ {
+ /// <summary>
+ /// 绔欑偣Id
+ /// </summary>
+ public string StationId { get; set; }
+
+ /// <summary>
+ /// 绔欑偣鍚嶇О
+ /// </summary>
+ public string StationName { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs
new file mode 100644
index 0000000..0613d96
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMaterial/WmsMaterialService.cs
@@ -0,0 +1,157 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡淇℃伅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsMaterial", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsMaterialService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsMaterial, MasterDbContextLocator> _wmsMaterialRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<LesStation, MasterDbContextLocator> _lesStationRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsMaterialService(
+ IRepository<WmsMaterial, MasterDbContextLocator> wmsMaterialRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<LesStation, MasterDbContextLocator> lesStationRep
+ )
+ {
+ _wmsMaterialRep = wmsMaterialRep;
+ _wmsAreaRep = wmsAreaRep;
+ _lesStationRep = lesStationRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鐗╂枡淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsMaterialOutput>> Page([FromQuery] WmsMaterialSearch input)
+ {
+ var wmsMaterials = await _wmsMaterialRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+ .Where(input.MaterialType != null, u => u.MaterialType == input.MaterialType)
+ .Where(!string.IsNullOrEmpty(input.MaterialSpec), u => EF.Functions.Like(u.MaterialSpec, $"%{input.MaterialSpec.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialDensity), u => EF.Functions.Like(u.MaterialDensity, $"%{input.MaterialDensity.Trim()}%"))
+ //.Where(input.IsMaturation != null, u => u.IsMaturation == input.IsMaturation)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsMaterialSearch>(input))
+ .ProjectToType<WmsMaterialOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsMaterials;
+ }
+
+ /// <summary>
+ /// 澧炲姞鐗╂枡淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsMaterialInput input)
+ {
+ var wmsMaterial = input.Adapt<WmsMaterial>();
+ await _wmsMaterialRep.InsertAsync(wmsMaterial);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鐗╂枡淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsMaterialInput input)
+ {
+ var wmsMaterial = await _wmsMaterialRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsMaterialRep.DeleteAsync(wmsMaterial);
+ }
+
+ /// <summary>
+ /// 鏇存柊鐗╂枡淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsMaterialInput input)
+ {
+ var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsMaterial = input.Adapt<WmsMaterial>();
+ await _wmsMaterialRep.UpdateAsync(wmsMaterial, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐗╂枡淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsMaterialOutput> Get([FromQuery] QueryeWmsMaterialInput input)
+ {
+ return (await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMaterialOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐗╂枡淇℃伅鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsMaterialOutput>> List([FromQuery] WmsMaterialInput input)
+ {
+ return await _wmsMaterialRep.DetachedEntities.ProjectToType<WmsMaterialOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// 搴撳尯涓嬫媺妗�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetAreaList")]
+ public async Task<List<AreaListOutput>> GetAreaList()
+ {
+ var data = await _wmsAreaRep.DetachedEntities.ProjectToType<WmsAreaOutput>().ToListAsync();
+ List<AreaListOutput> areaListOutputLists = new List<AreaListOutput>();
+ foreach (var item in data)
+ {
+ AreaListOutput areaListOutputList = new AreaListOutput();
+ areaListOutputList.AreaId = item.Id.ToString();
+ areaListOutputList.AreaName = item.AreaName;
+ areaListOutputLists.Add(areaListOutputList);
+ }
+ return areaListOutputLists;
+ }
+
+ /// <summary>
+ /// 宸ヤ綔鍖猴紙宸ヤ綅锛変笅鎷夋
+ /// </summary>
+ /// <returns></returns>
+ //[HttpGet("GetStationList")]
+ //public async Task<List<StationListOutput>> GetStationList()
+ //{
+ // var data = await _lesStationRep.DetachedEntities.ProjectToType<LesStationOutput>().ToListAsync();
+ // List<StationListOutput> stationListOutputLists = new List<StationListOutput>();
+ // foreach (var item in data)
+ // {
+ // StationListOutput stationListOutputList = new StationListOutput();
+ // stationListOutputList.StationId = item.Id.ToString();
+ // stationListOutputList.StationName = item.Name;
+ // stationListOutputLists.Add(stationListOutputList);
+ // }
+ // return stationListOutputLists;
+ //}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs
new file mode 100644
index 0000000..518c683
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoDto.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsMerchantinfoDto
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ public string MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ public string MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ public Admin.NET.Core.MerchantType MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ public string MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ public Admin.NET.Core.MerchantGrade MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ public string MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ public string MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ public string MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ public string MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ public string MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ public string MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ public string MerchantAddress { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs
new file mode 100644
index 0000000..a7741f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoInput.cs
@@ -0,0 +1,246 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsMerchantinfoSearch : PageInputBase
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ public virtual string MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ public virtual string MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ public virtual string MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ public virtual string MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ public virtual string MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ public virtual string MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ public virtual string MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ public virtual string MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ public virtual string MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ public virtual string MerchantAddress { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsMerchantinfoSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ public virtual string? MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ public virtual string? MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ public virtual string? MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ public virtual string? MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ public virtual string? MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ public virtual string? MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ public virtual string? MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ public virtual string? MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ public virtual string? MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ public virtual string? MerchantAddress { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsMerchantinfoInput
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ public virtual string MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ public virtual string MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantType? MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ public virtual string MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ public virtual Admin.NET.Core.MerchantGrade? MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ public virtual string MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ public virtual string MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ public virtual string MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ public virtual string MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ public virtual string MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ public virtual string MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ public virtual string MerchantAddress { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsMerchantinfoInput : WmsMerchantinfoInput
+ {
+ }
+
+ public class DeleteWmsMerchantinfoInput : BaseId
+ {
+ }
+
+ public class UpdateWmsMerchantinfoInput : WmsMerchantinfoInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsMerchantinfoInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs
new file mode 100644
index 0000000..87de0cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Dto/WmsMerchantinfoOutput.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsMerchantinfoOutput
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ public string MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ public string MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ public Admin.NET.Core.MerchantType MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ public string MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ public Admin.NET.Core.MerchantGrade MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ public string MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ public string MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ public string MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ public string MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ public string MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ public string MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ public string MerchantAddress { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs
new file mode 100644
index 0000000..211264c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/IWmsMerchantinfoService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsMerchantinfoService
+ {
+ Task Add(AddWmsMerchantinfoInput input);
+ Task Delete(DeleteWmsMerchantinfoInput input);
+ Task<WmsMerchantinfoOutput> Get([FromQuery] QueryeWmsMerchantinfoInput input);
+ Task<List<WmsMerchantinfoOutput>> List([FromQuery] WmsMerchantinfoInput input);
+ Task<PageResult<WmsMerchantinfoOutput>> Page([FromQuery] WmsMerchantinfoSearch input);
+ Task Update(UpdateWmsMerchantinfoInput input);
+
+ Task<List<WmsMerchantinfoOutput>> ListNonPageAsync([FromQuery] WmsMerchantinfoSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs
new file mode 100644
index 0000000..fcab3d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/Map/WmsMerchantinfoMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsMerchantinfoMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsMerchantinfoInput, WmsMerchantinfo>()
+ ;
+ config.ForType<UpdateWmsMerchantinfoInput, WmsMerchantinfo>()
+ ;
+ config.ForType<WmsMerchantinfo, WmsMerchantinfoOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs
new file mode 100644
index 0000000..0e69257
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsMerchantinfo/WmsMerchantinfoService.cs
@@ -0,0 +1,253 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsMerchantinfo", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsMerchantinfoService : IWmsMerchantinfoService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsMerchantinfo,MasterDbContextLocator> _wmsMerchantinfoRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsMerchantinfoService(
+ IRepository<WmsMerchantinfo,MasterDbContextLocator> wmsMerchantinfoRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsMerchantinfoRep = wmsMerchantinfoRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀹㈠晢淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsMerchantinfoOutput>> Page([FromQuery] WmsMerchantinfoSearch input)
+ {
+ var wmsMerchantinfos = await _wmsMerchantinfoRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.MerchantNo), u => EF.Functions.Like(u.MerchantNo, $"%{input.MerchantNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MerchantName), u => EF.Functions.Like(u.MerchantName, $"%{input.MerchantName.Trim()}%"))
+ .Where(input.MerchantType != null, u => u.MerchantType == input.MerchantType)
+ .Where(input.MerchantGrade != null, u => u.MerchantGrade == input.MerchantGrade)
+ .Where(!string.IsNullOrEmpty(input.MerchantTmt), u => EF.Functions.Like(u.MerchantTmt, $"%{input.MerchantTmt.Trim()}%"))
+ .OrderBy(PageInputOrder.OrderBuilder<WmsMerchantinfoSearch>(input))
+ .ProjectToType<WmsMerchantinfoOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsMerchantinfos;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠鍟嗕俊鎭〃鍒楄〃
+ /// </summary>
+ /// <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(瀹㈠晢淇℃伅琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsMerchantinfoOutput>> ListNonPageAsync([FromQuery] WmsMerchantinfoSearchNonPage input)
+ {
+ var pMerchantNo = input.MerchantNo?.Trim() ?? "";
+ var pMerchantName = input.MerchantName?.Trim() ?? "";
+ var pMerchantType = input.MerchantType;
+ var pMerchantGrade = input.MerchantGrade;
+ var pMerchantTmt = input.MerchantTmt?.Trim() ?? "";
+ var wmsMerchantinfos = await _wmsMerchantinfoRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pMerchantNo), u => EF.Functions.Like(u.MerchantNo, $"%{pMerchantNo}%"))
+ .Where(!string.IsNullOrEmpty(pMerchantName), u => EF.Functions.Like(u.MerchantName, $"%{pMerchantName}%"))
+ .Where(pMerchantType != null, u => u.MerchantType == pMerchantType)
+ .Where(pMerchantGrade != null, u => u.MerchantGrade == pMerchantGrade)
+ .Where(!string.IsNullOrEmpty(pMerchantTmt), u => EF.Functions.Like(u.MerchantTmt, $"%{pMerchantTmt}%"))
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsMerchantinfoOutput>()
+ .ToListAsync();
+ return wmsMerchantinfos;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞瀹㈠晢淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsMerchantinfoInput input)
+ {
+ var wmsMerchantinfo = input.Adapt<WmsMerchantinfo>();
+ await _wmsMerchantinfoRep.InsertAsync(wmsMerchantinfo);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀹㈠晢淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsMerchantinfoInput input)
+ {
+ var wmsMerchantinfo = await _wmsMerchantinfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsMerchantinfoRep.DeleteAsync(wmsMerchantinfo);
+ }
+
+ /// <summary>
+ /// 鏇存柊瀹㈠晢淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsMerchantinfoInput input)
+ {
+ var isExist = await _wmsMerchantinfoRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsMerchantinfo = input.Adapt<WmsMerchantinfo>();
+ await _wmsMerchantinfoRep.UpdateAsync(wmsMerchantinfo,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹㈠晢淇℃伅琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsMerchantinfoOutput> Get([FromQuery] QueryeWmsMerchantinfoInput input)
+ {
+ return (await _wmsMerchantinfoRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsMerchantinfoOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹㈠晢淇℃伅琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsMerchantinfoOutput>> List([FromQuery] WmsMerchantinfoInput input)
+ {
+ return await _wmsMerchantinfoRep.DetachedEntities.ProjectToType<WmsMerchantinfoOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆瀹㈠晢淇℃伅琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsMerchantinfoOutput> wmsMerchantinfoList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsMerchantinfoOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsMerchantinfoList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsMerchantinfo>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsMerchantinfo, WmsMerchantinfoOutput>(selectKeys);
+ List<WmsMerchantinfo> updates = new();
+ List<WmsMerchantinfo> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsMerchantinfoExistSubList = _wmsMerchantinfoRep.Where(filter).Select(selector).ToList();
+ wmsMerchantinfoExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsMerchantinfo in wmsMerchantinfoList)
+ {
+ if (wmsMerchantinfo.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsMerchantinfo.Adapt<WmsMerchantinfo>());
+ }
+ else
+ {
+ adds.Add(wmsMerchantinfo.Adapt<WmsMerchantinfo>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsMerchantinfoRep.Update(x));
+
+
+ var maxId = _wmsMerchantinfoRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsMerchantinfo>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇瀹㈠晢淇℃伅琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">瀹㈠晢淇℃伅琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsMerchantinfoSearchNonPage input)
+ {
+ var wmsMerchantinfoList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsMerchantinfoList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsMerchantinfo", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs
new file mode 100644
index 0000000..07e74bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeDto.cs
@@ -0,0 +1,55 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsOrderTypeDto
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs
new file mode 100644
index 0000000..73599c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeInput.cs
@@ -0,0 +1,185 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WareOrderTypeSearch
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public virtual long? Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ public virtual string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int? Sort { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? Status { get; set; }
+ }
+
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WareOrderTypeSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public virtual long? Pid { get; set; }
+
+ ///// <summary>
+ ///// 鐖禝ds
+ ///// </summary>
+ //public virtual string? Pids { get; set; }
+
+ ///// <summary>
+ ///// 鍚嶇О
+ ///// </summary>
+ //public virtual string? Name { get; set; }
+
+ ///// <summary>
+ ///// 缂栫爜
+ ///// </summary>
+ //public virtual string? Code { get; set; }
+
+ ///// <summary>
+ ///// 鎺掑簭
+ ///// </summary>
+ //public virtual int? Sort { get; set; }
+
+ ///// <summary>
+ ///// 鎵�灞炶溅闂�
+ ///// </summary>
+ //public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+ ///// <summary>
+ ///// 澶囨敞
+ ///// </summary>
+ //public virtual string? Remark { get; set; }
+
+ ///// <summary>
+ ///// 鐘舵��
+ ///// </summary>
+ //public virtual CommonStatus? Status { get; set; }
+ }
+
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsOrderTypeInput
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public virtual long Pid { get; set; }
+
+ ///// <summary>
+ ///// 鐖禝ds
+ ///// </summary>
+ //public virtual string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public virtual int Sort { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType LesWorkShopType { get; set; }
+
+ ///// <summary>
+ ///// 澶囨敞
+ ///// </summary>
+ //public virtual string Remark { get; set; }
+
+ ///// <summary>
+ ///// 鐘舵��
+ ///// </summary>
+ //public virtual CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class AddWareOrderTypeInput : WmsOrderTypeInput
+ {
+ }
+
+ /// <summary>
+ /// 澧炲姞鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class AddWareOrderSubclassInput : WmsOrderTypeInput
+ {
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class DeleteWareOrderTypeInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 鏇存柊鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class UpdateWareOrderTypeInput : WmsOrderTypeInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鏌ヨ鍗曟嵁鏄庣粏缁存姢琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class QueryeWareOrderTypeInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs
new file mode 100644
index 0000000..2b74193
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/Dto/WmsOrderTypeOutput.cs
@@ -0,0 +1,53 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsOrderTypeOutput
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ ///// <summary>
+ ///// 鐖禝ds
+ ///// </summary>
+ //public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public Core.LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public Core.CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs
new file mode 100644
index 0000000..3e6e010
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/IWmsOrderTypeService.cs
@@ -0,0 +1,83 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+ /// </summary>
+ public interface IWmsOrderTypeService
+ {
+ /// <summary>
+ /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Add(AddWareOrderTypeInput input);
+
+ /// <summary>
+ /// 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Delete(DeleteWareOrderTypeInput input);
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<WmsOrderTypeOutput> Get([FromQuery] QueryeWareOrderTypeInput input);
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<WmsOrderTypeOutput>> List([FromQuery] WmsOrderTypeInput input);
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<WmsOrderTypeOutput>> Page([FromQuery] WareOrderTypeSearch input);
+
+ /// <summary>
+ /// 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Update(UpdateWareOrderTypeInput input);
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<WmsOrderTypeOutput>> ListNonPageAsync([FromQuery] WareOrderTypeSearchNonPage input);
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="importExcelType"></param>
+ /// <returns></returns>
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version"></param>
+ /// <returns></returns>
+ Task<IActionResult> DownloadExcelTemplate(string version);
+
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ Task<IActionResult> ToExcelAsync([FromQuery] WareOrderTypeSearchNonPage input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs
new file mode 100644
index 0000000..aada338
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsOrderType/WmsOrderTypeService.cs
@@ -0,0 +1,260 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WareOrderType", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsOrderTypeService : IWmsOrderTypeService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wareOrderTypeRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsOrderTypeService(
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wareOrderTypeRep,
+ ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _wareOrderTypeRep = wareOrderTypeRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ [NonAction]
+ public async Task<List<WmsOrderTypeOutput>> Page([FromQuery] WareOrderTypeSearch input)
+ {
+ var wareOrderTypes = await _wareOrderTypeRep.DetachedEntities.Where(u => u.Pid == input.Pid)
+ //.OrderBy(PageInputOrder.OrderBuilder<WareOrderTypeSearch>(input))
+ .OrderBy(u => u.Sort)
+ .ProjectToType<WmsOrderTypeOutput>()
+ .ToListAsync();
+ return wareOrderTypes;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠崟鎹被鍨嬬淮鎶よ〃鍒楄〃
+ /// </summary>
+ /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(鍗曟嵁绫诲瀷缁存姢琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsOrderTypeOutput>> ListNonPageAsync([FromQuery] WareOrderTypeSearchNonPage input)
+ {
+ var pPid = input.Pid;
+ var wareOrderTypes = await _wareOrderTypeRep.DetachedEntities.Where(u => u.Pid == pPid)
+ //.OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .OrderBy(u => u.Sort)
+ .ProjectToType<WmsOrderTypeOutput>()
+ .ToListAsync();
+ return wareOrderTypes;
+ }
+
+ /// <summary>
+ /// 澧炲姞鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWareOrderTypeInput input)
+ {
+ var wareOrderType = input.Adapt<WmsOrderType>();
+
+ // 鍒ゆ柇鍗曟嵁灏忕被鐨勬墍灞炶溅闂存槸鍚﹁窡鍗曟嵁澶х被鐨勬墍灞炶溅闂翠竴鏍凤紝娣诲姞灏忕被淇℃伅
+ //if (input.Pid > 0)
+ //{
+ // // 鏍规嵁Pid鏌ヨ鍗曟嵁澶х被鐨勬墍灞炶溅闂�
+ // var orderDaLei = await _wareOrderTypeRep.FirstOrDefaultAsync(z => z.Id == input.Pid);
+ // if (input.LesWorkShopType != orderDaLei.LesWorkShopType)
+ // throw Oops.Oh("灏忕被娣诲姞鐨勬墍灞炶溅闂磋涓庡ぇ绫荤殑鎵�灞炶溅闂翠竴鑷达紒");
+ //}
+
+ await _wareOrderTypeRep.InsertAsync(wareOrderType);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWareOrderTypeInput input)
+ {
+ var wareOrderType = await _wareOrderTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wareOrderTypeRep.DeleteAsync(wareOrderType);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWareOrderTypeInput input)
+ {
+ var isExist = await _wareOrderTypeRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wareOrderType = input.Adapt<WmsOrderType>();
+ await _wareOrderTypeRep.UpdateAsync(wareOrderType, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ [NonAction]
+ public async Task<WmsOrderTypeOutput> Get([FromQuery] QueryeWareOrderTypeInput input)
+ {
+ return (await _wareOrderTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsOrderTypeOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁绫诲瀷缁存姢琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ [NonAction]
+ public async Task<List<WmsOrderTypeOutput>> List([FromQuery] WmsOrderTypeInput input)
+ {
+ return await _wareOrderTypeRep.DetachedEntities.ProjectToType<WmsOrderTypeOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍗曟嵁绫诲瀷缁存姢琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ [NonAction]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsOrderTypeOutput> wareOrderTypeList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsOrderTypeOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wareOrderTypeList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsOrderType>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsOrderType, WmsOrderTypeOutput>(selectKeys);
+ List<WmsOrderType> updates = new();
+ List<WmsOrderType> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wareOrderTypeExistSubList = _wareOrderTypeRep.Where(filter).Select(selector).ToList();
+ wareOrderTypeExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+
+ foreach (var wareOrderType in wareOrderTypeList)
+ {
+ if (wareOrderType.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wareOrderType.Adapt<WmsOrderType>());
+ }
+ else
+ {
+ adds.Add(wareOrderType.Adapt<WmsOrderType>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wareOrderTypeRep.Update(x));
+
+ var maxId = _wareOrderTypeRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsOrderType>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁绫诲瀷缁存姢琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ [NonAction]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鍗曟嵁绫诲瀷缁存姢琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ [NonAction]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WareOrderTypeSearchNonPage input)
+ {
+ var wareOrderTypeList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wareOrderTypeList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareOrderType", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs
new file mode 100644
index 0000000..dace7b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerDto.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// PDA鑿滃崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsPdaPowerDto
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ public string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs
new file mode 100644
index 0000000..f224ecf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerInput.cs
@@ -0,0 +1,141 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// PDA鑿滃崟鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsPdaPowerSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public virtual string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ public virtual string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// PDA鑿滃崟涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsPdaPowerSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public virtual string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ public virtual string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// PDA鑿滃崟杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsPdaPowerInput
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public virtual string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ public virtual string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsPdaPowerInput : WmsPdaPowerInput
+ {
+ }
+
+ public class DeleteWmsPdaPowerInput : BaseId
+ {
+ }
+
+ public class UpdateWmsPdaPowerInput : WmsPdaPowerInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsPdaPowerInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs
new file mode 100644
index 0000000..a56da2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Dto/WmsPdaPowerOutput.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// PDA鑿滃崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsPdaPowerOutput
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ public string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public Admin.NET.Core.LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 鏄惁閫夋嫨
+ /// </summary>
+ public bool IsCheck { get; set; }
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class wmsPdaPowerMenuOutput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string WorkShopName { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ public List<WmsPdaPowerOutput> WmsPdaPowerOutput { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs
new file mode 100644
index 0000000..558a358
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/IWmsPdaPowerService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsPdaPowerService
+ {
+ Task Add(AddWmsPdaPowerInput input);
+ Task Delete(DeleteWmsPdaPowerInput input);
+ Task<WmsPdaPowerOutput> Get([FromQuery] QueryeWmsPdaPowerInput input);
+ Task<List<WmsPdaPowerOutput>> List([FromQuery] WmsPdaPowerInput input);
+ Task<PageResult<WmsPdaPowerOutput>> Page([FromQuery] WmsPdaPowerSearch input);
+ Task Update(UpdateWmsPdaPowerInput input);
+
+ Task<List<WmsPdaPowerOutput>> ListNonPageAsync([FromQuery] WmsPdaPowerSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs
new file mode 100644
index 0000000..410ac2e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/Map/WmsPdaPowerMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsPdaPowerMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsPdaPowerInput, WmsPdaPower>()
+ ;
+ config.ForType<UpdateWmsPdaPowerInput, WmsPdaPower>()
+ ;
+ config.ForType<WmsPdaPower, WmsPdaPowerOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs
new file mode 100644
index 0000000..fbf2ba5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPdaPower/WmsPdaPowerService.cs
@@ -0,0 +1,245 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// PDA鑿滃崟鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsPdaPower", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsPdaPowerService : IWmsPdaPowerService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsPdaPower,MasterDbContextLocator> _wmsPdaPowerRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsPdaPowerService(
+ IRepository<WmsPdaPower,MasterDbContextLocator> wmsPdaPowerRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsPdaPowerRep = wmsPdaPowerRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsPdaPowerOutput>> Page([FromQuery] WmsPdaPowerSearch input)
+ {
+ var wmsPdaPowers = await _wmsPdaPowerRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Code), u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Name), u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+ .Where(input.WorkShopType != null, u => u.WorkShopType == input.WorkShopType)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsPdaPowerSearch>(input))
+ .ProjectToType<WmsPdaPowerOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsPdaPowers;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇DA鑿滃崟鍒楄〃
+ /// </summary>
+ /// <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+ /// <returns>(PDA鑿滃崟)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsPdaPowerOutput>> ListNonPageAsync([FromQuery] WmsPdaPowerSearchNonPage input)
+ {
+ var pCode = input.Code?.Trim() ?? "";
+ var pName = input.Name?.Trim() ?? "";
+ var pWorkShopType = input.WorkShopType;
+ var wmsPdaPowers = await _wmsPdaPowerRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pCode), u => EF.Functions.Like(u.Code, $"%{pCode}%"))
+ .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+ .Where(pWorkShopType != null, u => u.WorkShopType == pWorkShopType)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsPdaPowerOutput>()
+ .ToListAsync();
+ return wmsPdaPowers;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞PDA鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsPdaPowerInput input)
+ {
+ var wmsPdaPower = input.Adapt<WmsPdaPower>();
+ await _wmsPdaPowerRep.InsertAsync(wmsPdaPower);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎PDA鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsPdaPowerInput input)
+ {
+ var wmsPdaPower = await _wmsPdaPowerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsPdaPowerRep.DeleteAsync(wmsPdaPower);
+ }
+
+ /// <summary>
+ /// 鏇存柊PDA鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsPdaPowerInput input)
+ {
+ var isExist = await _wmsPdaPowerRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsPdaPower = input.Adapt<WmsPdaPower>();
+ await _wmsPdaPowerRep.UpdateAsync(wmsPdaPower,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇PDA鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsPdaPowerOutput> Get([FromQuery] QueryeWmsPdaPowerInput input)
+ {
+ return (await _wmsPdaPowerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsPdaPowerOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇PDA鑿滃崟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsPdaPowerOutput>> List([FromQuery] WmsPdaPowerInput input)
+ {
+ return await _wmsPdaPowerRep.DetachedEntities.ProjectToType<WmsPdaPowerOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆PDA鑿滃崟鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsPdaPowerOutput> wmsPdaPowerList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsPdaPowerOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsPdaPowerList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsPdaPower>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsPdaPower, WmsPdaPowerOutput>(selectKeys);
+ List<WmsPdaPower> updates = new();
+ List<WmsPdaPower> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsPdaPowerExistSubList = _wmsPdaPowerRep.Where(filter).Select(selector).ToList();
+ wmsPdaPowerExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsPdaPower in wmsPdaPowerList)
+ {
+ if (wmsPdaPower.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsPdaPower.Adapt<WmsPdaPower>());
+ }
+ else
+ {
+ adds.Add(wmsPdaPower.Adapt<WmsPdaPower>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsPdaPowerRep.Update(x));
+
+
+ var maxId = _wmsPdaPowerRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsPdaPower>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇PDA鑿滃崟鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁PDA鑿滃崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">PDA鑿滃崟鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsPdaPowerSearchNonPage input)
+ {
+ var wmsPdaPowerList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsPdaPowerList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsPdaPower", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs
new file mode 100644
index 0000000..8682b03
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceDto.cs
@@ -0,0 +1,145 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撲綅淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsPlaceDto
+ {
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public string WmsAreaAreaname { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Placecode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public PlaceStatus Placestatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public long Areaid { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int Rowno { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int Columnno { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int Layerno { get; set; }
+
+ /// <summary>
+ /// 杩涙繁鍙�
+ /// </summary>
+ public int Deepcellno { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 绾垮彿
+ /// </summary>
+ public int Line { get; set; }
+
+ /// <summary>
+ /// 宸烽亾宸﹀彸
+ /// </summary>
+ //public string Aisleside { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesOrNot Islock { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ //public YesOrNot Isfull { get; set; }
+
+ /// <summary>
+ /// 鍚︽鍦ㄦ搷浣�
+ /// </summary>
+ //public YesOrNot Hastaskdoing { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public virtual YesOrNot EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ /// </summary>
+ public string PositionnoForSrm { get; set; }
+
+ /// <summary>
+ /// 搴撲綅X鍧愭爣
+ /// </summary>
+ public string Xzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Y鍧愭爣
+ /// </summary>
+ public string Yzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Z鍧愭爣
+ /// </summary>
+ public string Zzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀹藉害
+ /// </summary>
+ public decimal Width { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public decimal Height { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ф壙閲�
+ /// </summary>
+ public decimal Maxweight { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public Heightlevel Heightlevel { get; set; }
+
+ /// <summary>
+ /// 浼樺厛绾�
+ /// </summary>
+ public int Priority { get; set; }
+
+ /// <summary>
+ /// 閫昏緫鍖哄煙
+ /// </summary>
+ public int LogicalName { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs
new file mode 100644
index 0000000..5c9e5e2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceInput.cs
@@ -0,0 +1,310 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撲綅淇℃伅鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsPlaceSearch : PageInputBase
+ {
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Placecode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public virtual PlaceStatus? Placestatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public virtual long? Areaid { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public virtual int? Rowno { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public virtual int? Columnno { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public virtual int? Layerno { get; set; }
+
+ /// <summary>
+ /// 杩涙繁鍙�
+ /// </summary>
+ public virtual int? Deepcellno { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public virtual int? Aisle { get; set; }
+
+ /// <summary>
+ /// 绾垮彿
+ /// </summary>
+ public virtual int? Line { get; set; }
+
+ /// <summary>
+ /// 宸烽亾宸﹀彸
+ /// </summary>
+ //public virtual string Aisleside { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public virtual YesOrNot? Islock { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ //public virtual YesOrNot? Isfull { get; set; }
+
+ /// <summary>
+ /// 鍚︽鍦ㄦ搷浣�
+ /// </summary>
+ //public virtual YesOrNot? Hastaskdoing { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public virtual YesOrNot EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ /// </summary>
+ public virtual string PositionnoForSrm { get; set; }
+
+ /// <summary>
+ /// 搴撲綅X鍧愭爣
+ /// </summary>
+ public virtual string Xzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Y鍧愭爣
+ /// </summary>
+ public virtual string Yzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Z鍧愭爣
+ /// </summary>
+ public virtual string Zzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅闀垮害
+ /// </summary>
+ public virtual decimal? Length { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀹藉害
+ /// </summary>
+ public virtual decimal? Width { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public virtual decimal? Height { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ф壙閲�
+ /// </summary>
+ public virtual decimal? Maxweight { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public virtual Heightlevel? Heightlevel { get; set; }
+
+ /// <summary>
+ /// 浼樺厛绾�
+ /// </summary>
+ public virtual int? Priority { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撲綅淇℃伅杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsPlaceInput
+ {
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Placecode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public virtual PlaceStatus Placestatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public virtual long Areaid { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public virtual int Rowno { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public virtual int Columnno { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public virtual int Layerno { get; set; }
+
+ /// <summary>
+ /// 浣�
+ /// </summary>
+ public virtual int Deepcellno { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public virtual int Aisle { get; set; }
+
+ /// <summary>
+ /// 绾垮彿
+ /// </summary>
+ public virtual int Line { get; set; }
+
+ /// <summary>
+ /// 宸烽亾宸﹀彸
+ /// </summary>
+ //public virtual string Aisleside { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public virtual YesOrNot Islock { get; set; }
+
+ /// <summary>
+ /// 鏄惁
+ /// </summary>
+ //public virtual YesOrNot Isfull { get; set; }
+
+ /// <summary>
+ /// 鍚︽鍦ㄦ搷浣�
+ /// </summary>
+ //public virtual YesOrNot Hastaskdoing { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public virtual YesOrNot EmptyContainer { get; set; }
+
+
+ /// <summary>
+ /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ /// </summary>
+ public virtual string PositionnoForSrm { get; set; }
+
+ /// <summary>
+ /// 搴撲綅X鍧愭爣
+ /// </summary>
+ public virtual string Xzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Y鍧愭爣
+ /// </summary>
+ public virtual string Yzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Z鍧愭爣
+ /// </summary>
+ public virtual string Zzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅闀垮害
+ /// </summary>
+ public virtual decimal Length { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀹藉害
+ /// </summary>
+ public virtual decimal Width { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public virtual decimal Height { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ф壙閲�
+ /// </summary>
+ public virtual decimal Maxweight { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public virtual Heightlevel Heightlevel { get; set; }
+
+ /// <summary>
+ /// 浼樺厛绾�
+ /// </summary>
+ public virtual int Priority { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddWmsPlaceInput : WmsPlaceInput
+ {
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ [Required(ErrorMessage = "鎵�鍦ㄥ簱鍖轰笉鑳戒负绌�")]
+ public override long Areaid { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteWmsPlaceInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateWmsPlaceInput : WmsPlaceInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeWmsPlaceInput : BaseId
+ {
+
+ }
+ /// <summary>
+ /// 鎵归噺閿佸畾鍙傛暟
+ /// </summary>
+ public class MoreLockInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public List<long> Id { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs
new file mode 100644
index 0000000..2246990
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/Dto/WmsPlaceOutput.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撲綅淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsPlaceOutput
+ {
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Placecode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public PlaceStatus Placestatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ public long Areaid { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int Rowno { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int Columnno { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int Layerno { get; set; }
+
+ /// <summary>
+ /// 杩涙繁鍙�
+ /// </summary>
+ public int Deepcellno { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 绾垮彿
+ /// </summary>
+ public int Line { get; set; }
+
+ /// <summary>
+ /// 宸烽亾宸﹀彸
+ /// </summary>
+ //public string Aisleside { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesOrNot Islock { get; set; }
+
+ //public YesOrNot Isfull { get; set; }
+
+ /// <summary>
+ /// 鍚︽鍦ㄦ搷浣�
+ /// </summary>
+ //public YesOrNot Hastaskdoing { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ public virtual YesOrNot EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ /// </summary>
+ public string PositionnoForSrm { get; set; }
+
+ /// <summary>
+ /// 搴撲綅X鍧愭爣
+ /// </summary>
+ public string Xzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Y鍧愭爣
+ /// </summary>
+ public string Yzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Z鍧愭爣
+ /// </summary>
+ public string Zzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀹藉害
+ /// </summary>
+ public decimal Width { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public decimal Height { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ф壙閲�
+ /// </summary>
+ public decimal Maxweight { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ public Heightlevel Heightlevel { get; set; }
+
+ /// <summary>
+ /// 浼樺厛绾�
+ /// </summary>
+ public int Priority { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 搴撳尯淇℃伅杈撳嚭鍙傛暟
+ /// </summary>
+ public WmsAreaOutput WmsArea { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs
new file mode 100644
index 0000000..872fe09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsPlace/WmsPlaceService.cs
@@ -0,0 +1,282 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撲綅淇℃伅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsPlace", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsPlaceService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea> _wmsAreaRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsPlaceService(
+ IRepository<WmsArea> wmsAreaRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ )
+ {
+ _wmsAreaRep = wmsAreaRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsPlaceOutput>> Page([FromQuery] WmsPlaceSearch input)
+ {
+ var wmsPlaces = await _wmsPlaceRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Placecode), u => EF.Functions.Like(u.PlaceCode, $"%{input.Placecode.Trim()}%"))
+ .Where(input.Placestatus != null, u => u.PlaceStatus == input.Placestatus)
+ .Where(input.Areaid > 0, u => u.AreaId == input.Areaid)
+ .Where(input.Rowno != null, u => u.RowNo == input.Rowno)
+ .Where(input.Columnno != null, u => u.ColumnNo == input.Columnno)
+ .Where(input.Layerno != null, u => u.LayerNo == input.Layerno)
+ .Where(input.Aisle != null, u => u.Aisle == input.Aisle)
+ .Where(input.Islock != null, u => u.Islock == input.Islock)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsPlaceSearch>(input))
+ .ProjectToType<WmsPlaceOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsPlaces;
+ }
+
+ /// <summary>
+ /// 澧炲姞搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ //[HttpPost("add")]
+ //public async Task Add(AddWmsPlaceInput input)
+ //{
+ // //鑾峰彇搴撳尯淇℃伅
+ // var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.Id == input.Areaid);
+ // if (wmsArea.AreaType == AreaType.LITIKU)
+ // {
+ // var wmsPlace = input.Adapt<WmsPlace>();
+ // for (int a = 1; a == 1; a++)
+ // {
+ // for (int t = 1; t <= wmsPlace.RowNo; t++) //寰幆鎺�
+ // {
+ // for (int i = 1; i <= wmsPlace.ColumnNo; i++) //寰幆鍒�
+ // {
+ // for (int j = 1; j <= wmsPlace.LayerNo; j++) //寰幆灞�
+ // {
+ // var model = new WmsPlace();
+ // model.PlaceStatus = PlaceStatus.KONGXIAN;
+ // model.AreaId = wmsPlace.AreaId;
+ // model.RowNo = t;
+ // model.ColumnNo = i;
+ // model.LayerNo = j;
+ // model.DeepcellNo = 1;
+ // model.Aisle = a;
+ // model.Islock = YesOrNot.N;
+ // model.Length = new decimal(1.2);
+ // model.Width = new decimal(1.5);
+ // model.Height = new decimal(1.8);
+ // model.MaxWeight = new decimal(2.8);
+ // model.HeightLevel = Heightlevel.DI;
+ // model.Priority = 0;
+ // model.AgvCode = "";
+ // model.PlaceCode = String.Format("{0}{1}{2}{3}{4}", wmsArea.AreaDesc, a.ToString("00"), t.ToString("00"), i.ToString("00"), j.ToString("00"));
+ // var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == model.PlaceCode);
+ // if (!isExit) await _wmsPlaceRep.InsertAsync(model);
+ // }
+ // }
+ // }
+ // }
+ // }
+ // else
+ // {
+ // var wmsPlace = input.Adapt<WmsPlace>();
+ // for (int t = 1; t <= wmsPlace.RowNo; t++) //寰幆鎺�
+ // {
+ // for (int i = 1; i <= wmsPlace.ColumnNo; i++) //寰幆鍒�
+ // {
+ // for (int j = 1; j <= wmsPlace.LayerNo; j++) //寰幆灞�
+ // {
+ // var model = new WmsPlace();
+ // model.PlaceStatus = PlaceStatus.KONGXIAN;
+ // model.AreaId = wmsPlace.AreaId;
+ // model.RowNo = t;
+ // model.ColumnNo = i;
+ // model.LayerNo = j;
+ // model.DeepcellNo = 1;
+ // model.Aisle = wmsPlace.Aisle;
+ // model.Islock = YesOrNot.N;
+ // model.Length = new decimal(1.2);
+ // model.Width = new decimal(1.5);
+ // model.Height = new decimal(1.8);
+ // model.MaxWeight = new decimal(2.8);
+ // model.HeightLevel = Heightlevel.DI;
+ // model.Priority = 0;
+ // model.AgvCode = "";
+ // model.PlaceCode = String.Format("{0}{1}{2}{3}", wmsArea.AreaDesc, t.ToString("00"), i.ToString("00"), j.ToString("00"));
+ // var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == model.PlaceCode);
+ // if (!isExit) await _wmsPlaceRep.InsertAsync(model);
+ // }
+ // }
+ // }
+ // }
+
+ //}
+
+ /// <summary>
+ /// 澧炲姞搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task AddNew(AddWmsPlaceInput input)
+ {
+ var isExit = await _wmsPlaceRep.AnyAsync(n => n.PlaceCode == input.Placecode);
+ if (isExit) throw Oops.Oh("瀛樺湪鐨勭浉鍚岀殑搴撲綅缂栫爜锛�");
+ var wmsPlace = input.Adapt<WmsPlace>();
+ wmsPlace.AgvCode = "Y/N";
+ wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ wmsPlace.Islock = YesOrNot.N;
+ wmsPlace.EmptyContainer = YesOrNot.N;
+ if (input.Heightlevel==0) {
+ wmsPlace.HeightLevel = Heightlevel.DI;
+ }
+ await _wmsPlaceRep.InsertAsync(wmsPlace);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsPlaceInput input)
+ {
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsPlaceRep.DeleteAsync(wmsPlace);
+ }
+
+ /// <summary>
+ /// 鎵归噺閿佸畾
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("MoreLock")]
+ public async Task MoreLock(MoreLockInput input)
+ {
+ if (input.Id.Count <= 0) throw Oops.Oh("id涓嶈兘涓虹┖锛�");
+ foreach (var item in input.Id)
+ {
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == item);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ wmsPlace.Islock = YesOrNot.Y;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺瑙i攣
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("MoreUnlock")]
+ public async Task MoreUnlock(MoreLockInput input)
+ {
+ if (input.Id.Count <= 0) throw Oops.Oh("id涓嶈兘涓虹┖锛�");
+ foreach (var item in input.Id)
+ {
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.Id == item);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ wmsPlace.Islock = YesOrNot.N;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+ }
+ }
+
+ /// <summary>
+ /// 鏇存柊搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsPlaceInput input)
+ {
+ var isExist = await _wmsPlaceRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsPlace = input.Adapt<WmsPlace>();
+ await _wmsPlaceRep.UpdateAsync(wmsPlace, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsPlaceOutput> Get([FromQuery] QueryeWmsPlaceInput input)
+ {
+ return (await _wmsPlaceRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsPlaceOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅淇℃伅鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsPlaceOutput>> List([FromQuery] WmsPlaceInput input)
+ {
+ return await _wmsPlaceRep.DetachedEntities.ProjectToType<WmsPlaceOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇WmsArea鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("fkWmsArea")]
+ public async Task<dynamic> FkWmsAreaList()
+ {
+ var list = await _wmsAreaRep.DetachedEntities.ToListAsync();
+ return list.Select(e => new { Code = e.Id, Name = e.AreaName });
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐔熷寲搴撳贩閬�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetFAisle")]
+ public async Task<object> GetFAisle()
+ {
+ var area = await _wmsAreaRep.FirstOrDefaultAsync(n => n.AreaStatus == CommonStatus.ENABLE && n.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && n.AreaType == AreaType.LITIKU);
+ var objList = await _wmsPlaceRep.Where(n => n.AreaId == area.Id).OrderBy(n => n.Aisle).Select(n => n.Aisle).Distinct().ToArrayAsync();
+ for (int i = 0; i < objList.Length - 1; i++)
+ {
+ for (int j = 0; j < objList.Length - 1; j++)
+ {
+ int k = j + 1;
+ if (objList[j] > objList[k])
+ {
+ var temp = objList[k];
+ objList[k] = objList[j];
+ objList[j] = temp;
+ }
+ }
+ }
+ return objList;
+ }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs
new file mode 100644
index 0000000..2b878ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceDto.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳彛琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsWarehouseEntranceDto
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ /// </summary>
+ public WarehouseEntranceEnum Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ public int AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs
new file mode 100644
index 0000000..7e42d74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceInput.cs
@@ -0,0 +1,163 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳彛琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WareWarehouseEntranceSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ /// </summary>
+ public virtual WarehouseEntranceEnum? Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ public virtual int? AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? Status { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳彛琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WareWarehouseEntranceSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ /// </summary>
+ public virtual WarehouseEntranceEnum? Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ public virtual int? AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string? Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? Status { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳彛琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsWarehouseEntranceInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ /// </summary>
+ public virtual WarehouseEntranceEnum Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ public virtual int AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddWareWarehouseEntranceInput : WmsWarehouseEntranceInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteWareWarehouseEntranceInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateWareWarehouseEntranceInput : WmsWarehouseEntranceInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeWareWarehouseEntranceInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs
new file mode 100644
index 0000000..d546f99
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/Dto/WmsWarehouseEntranceOutput.cs
@@ -0,0 +1,50 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳彛琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsWarehouseEntranceOutput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�
+ /// </summary>
+ public WarehouseEntranceEnum Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ public int AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs
new file mode 100644
index 0000000..125e6bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/Common/WmsWarehouseEntrance/WmsWarehouseEntranceService.cs
@@ -0,0 +1,258 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳彛琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsWarehouseEntrance", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsWarehouseEntranceService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wareWarehouseEntranceRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="wareWarehouseEntranceRep"></param>
+
+ /// <param name="sysExcelTemplateService"></param>
+ public WmsWarehouseEntranceService(
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wareWarehouseEntranceRep,
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _wareWarehouseEntranceRep = wareWarehouseEntranceRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ搴撳彛琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsWarehouseEntranceOutput>> Page([FromQuery] WareWarehouseEntranceSearch input)
+ {
+ var wareWarehouseEntrances = await _wareWarehouseEntranceRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Name), u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Code), u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+ .Where(input.Type != null, u => u.Type == input.Type)
+ .Where(input.LesWorkShopType != null, u => u.LesWorkShopType == input.LesWorkShopType)
+ .OrderBy(PageInputOrder.OrderBuilder<WareWarehouseEntranceSearch>(input))
+ .ProjectToType<WmsWarehouseEntranceOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wareWarehouseEntrances;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠簱鍙h〃鍒楄〃
+ /// </summary>
+ /// <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(搴撳彛琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsWarehouseEntranceOutput>> ListNonPageAsync([FromQuery] WareWarehouseEntranceSearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pCode = input.Code?.Trim() ?? "";
+ var pType = input.Type;
+ var pLesWorkShopType = input.LesWorkShopType;
+ var wareWarehouseEntrances = await _wareWarehouseEntranceRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+ .Where(!string.IsNullOrEmpty(pCode), u => EF.Functions.Like(u.Code, $"%{pCode}%"))
+ .Where(pType != null, u => u.Type == pType)
+ .Where(pLesWorkShopType != null, u => u.LesWorkShopType == pLesWorkShopType)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsWarehouseEntranceOutput>()
+ .ToListAsync();
+ return wareWarehouseEntrances;
+ }
+
+ /// <summary>
+ /// 澧炲姞搴撳彛琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWareWarehouseEntranceInput input)
+ {
+ var wareWarehouseEntrance = input.Adapt<WmsWarehouseEntrance>();
+ await _wareWarehouseEntranceRep.InsertAsync(wareWarehouseEntrance);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎搴撳彛琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWareWarehouseEntranceInput input)
+ {
+ var wareWarehouseEntrance = await _wareWarehouseEntranceRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wareWarehouseEntranceRep.DeleteAsync(wareWarehouseEntrance);
+ }
+
+ /// <summary>
+ /// 鏇存柊搴撳彛琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWareWarehouseEntranceInput input)
+ {
+ var isExist = await _wareWarehouseEntranceRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wareWarehouseEntrance = input.Adapt<WmsWarehouseEntrance>();
+ await _wareWarehouseEntranceRep.UpdateAsync(wareWarehouseEntrance, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳彛琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsWarehouseEntranceOutput> Get([FromQuery] QueryeWareWarehouseEntranceInput input)
+ {
+ return (await _wareWarehouseEntranceRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsWarehouseEntranceOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳彛琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsWarehouseEntranceOutput>> List([FromQuery] WmsWarehouseEntranceInput input)
+ {
+ return await _wareWarehouseEntranceRep.DetachedEntities.ProjectToType<WmsWarehouseEntranceOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆搴撳彛琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsWarehouseEntranceOutput> wareWarehouseEntranceList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsWarehouseEntranceOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wareWarehouseEntranceList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsWarehouseEntrance>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsWarehouseEntrance, WmsWarehouseEntranceOutput>(selectKeys);
+ List<WmsWarehouseEntrance> updates = new();
+ List<WmsWarehouseEntrance> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wareWarehouseEntranceExistSubList = _wareWarehouseEntranceRep.Where(filter).Select(selector).ToList();
+ wareWarehouseEntranceExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+
+ foreach (var wareWarehouseEntrance in wareWarehouseEntranceList)
+ {
+ if (wareWarehouseEntrance.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wareWarehouseEntrance.Adapt<WmsWarehouseEntrance>());
+ }
+ else
+ {
+ adds.Add(wareWarehouseEntrance.Adapt<WmsWarehouseEntrance>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wareWarehouseEntranceRep.Update(x));
+
+ var maxId = _wareWarehouseEntranceRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsWarehouseEntrance>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇搴撳彛琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撳彛琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">搴撳彛琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WareWarehouseEntranceSearchNonPage input)
+ {
+ var wareWarehouseEntranceList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wareWarehouseEntranceList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WareWarehouseEntrance", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs
new file mode 100644
index 0000000..f2b55bf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppInput.cs
@@ -0,0 +1,119 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class AppPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddAppInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "搴旂敤鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "搴旂敤缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+ /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+ /// </summary>
+ public string Active { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateAppInput
+ {
+ /// <summary>
+ /// 搴旂敤Id
+ /// </summary>
+ [Required(ErrorMessage = "搴旂敤Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+ /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+ /// </summary>
+ public string Active { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChangeUserAppStatusInput : BaseId
+ {
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryAppInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class SetDefaultAppInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs
new file mode 100644
index 0000000..796fdfc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/Dto/AppOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺搴旂敤鍙傛暟
+ /// </summary>
+ public class AppOutput
+ {
+ /// <summary>
+ /// 搴旂敤Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鏄惁榛樿
+ /// </summary>
+ public string Active { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs
new file mode 100644
index 0000000..0230171
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/ISysAppService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysAppService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddApp(AddAppInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteApp(BaseId input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysApp> GetApp([FromQuery] QueryAppInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<SysApp>> GetAppList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<AppOutput>> GetLoginApps(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysApp>> QueryAppPageList([FromQuery] AppPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task SetAsDefault(SetDefaultAppInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateApp(UpdateAppInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ChangeUserAppStatus(ChangeUserAppStatusInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs
new file mode 100644
index 0000000..b8184d5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/App/SysAppService.cs
@@ -0,0 +1,191 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺搴旂敤鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "App", Order = 100)]
+ [Route("api")]
+ public class SysAppService : ISysAppService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysApp> _sysAppRep; // 搴旂敤琛ㄤ粨鍌�
+ private readonly ISysMenuService _sysMenuService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysAppRep"></param>
+ /// <param name="sysMenuService"></param>
+ public SysAppService(IRepository<SysApp> sysAppRep,
+ ISysMenuService sysMenuService)
+ {
+ _sysAppRep = sysAppRep;
+ _sysMenuService = sysMenuService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛搴旂敤鐩稿叧淇℃伅
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<AppOutput>> GetLoginApps(long userId)
+ {
+ var apps = _sysAppRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE);
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var appCodeList = await _sysMenuService.GetUserMenuAppCodeList(userId);
+ apps = apps.Where(u => appCodeList.Contains(u.Code));
+ }
+ var appList = await apps.OrderBy(u => u.Sort).ProjectToType<AppOutput>().ToListAsync();
+
+ return appList;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ绯荤粺搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysApp/page")]
+ public async Task<PageResult<SysApp>> QueryAppPageList([FromQuery] AppPageInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var apps = await _sysAppRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+ (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+ //.Where(u => u.Status == CommonStatus.ENABLE)
+ .OrderBy(u => u.Sort)
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return apps;
+ }
+
+ /// <summary>
+ /// 澧炲姞绯荤粺搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysApp/add")]
+ public async Task AddApp(AddAppInput input)
+ {
+ var isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D5000);
+
+ if (input.Active == YesOrNot.Y.ToString())
+ {
+ isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Active == input.Active);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D5001);
+ }
+
+ var app = input.Adapt<SysApp>();
+ await app.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎绯荤粺搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysApp/delete")]
+ public async Task DeleteApp(BaseId input)
+ {
+ var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ // 璇ュ簲鐢ㄤ笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+ var hasMenu = await _sysMenuService.HasMenu(app.Code);
+ if (hasMenu)
+ throw Oops.Oh(ErrorCode.D5002);
+
+ await app.DeleteAsync();
+ }
+
+ /// <summary>
+ /// 鏇存柊绯荤粺搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysApp/edit")]
+ public async Task UpdateApp(UpdateAppInput input)
+ {
+ var isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D5000);
+
+ if (input.Active == YesOrNot.Y.ToString())
+ {
+ isExist = await _sysAppRep.DetachedEntities.AnyAsync(u => u.Active == input.Active && u.Id != input.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D5001);
+ }
+
+ var app = input.Adapt<SysApp>();
+ await app.UpdateExcludeAsync(new[] { nameof(SysApp.Status) }, true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysApp/detail")]
+ public async Task<SysApp> GetApp([FromQuery] QueryAppInput input)
+ {
+ return await _sysAppRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺搴旂敤鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysApp/list")]
+ public async Task<List<SysApp>> GetAppList()
+ {
+ return await _sysAppRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort).ToListAsync();
+ }
+
+ /// <summary>
+ /// 璁句负榛樿搴旂敤
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysApp/setAsDefault")]
+ public async Task SetAsDefault(SetDefaultAppInput input)
+ {
+ var apps = await _sysAppRep.Where(u => u.Status == CommonStatus.ENABLE).ToListAsync();
+ apps.ForEach(u =>
+ {
+ u.Active = YesOrNot.N.ToString();
+ });
+
+ var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ app.Active = YesOrNot.Y.ToString();
+ }
+
+ /// <summary>
+ /// 淇敼鐢ㄦ埛鐘舵��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysApp/changeStatus")]
+ public async Task ChangeUserAppStatus(ChangeUserAppStatusInput input)
+ {
+ if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+ throw Oops.Oh(ErrorCode.D3005);
+
+ var app = await _sysAppRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ app.Status = input.Status;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs
new file mode 100644
index 0000000..4441399
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/AuthService.cs
@@ -0,0 +1,347 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Options;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DataEncryption;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.ComponentModel.DataAnnotations;
+using UAParser;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐧诲綍鎺堟潈鐩稿叧鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Auth", Order = 160)]
+ [Route("api")]
+ public class AuthService : IAuthService, IDynamicApiController, ITransient
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ private readonly IRepository<SysUser> _sysUserRep; // 鐢ㄦ埛琛ㄤ粨鍌�
+ private readonly IRepository<WmsPdaPower> _wmsPdaPower;
+ private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu;
+ private readonly IRepository<SysDictData> _sysDictData;
+ private readonly ISysUserService _sysUserService; // 绯荤粺鐢ㄦ埛鏈嶅姟
+ private readonly ISysEmpService _sysEmpService; // 绯荤粺鍛樺伐鏈嶅姟
+ private readonly ISysRoleService _sysRoleService; // 绯荤粺瑙掕壊鏈嶅姟
+ private readonly ISysMenuService _sysMenuService; // 绯荤粺鑿滃崟鏈嶅姟
+ private readonly ISysAppService _sysAppService; // 绯荤粺搴旂敤鏈嶅姟
+ private readonly IClickWordCaptcha _captchaHandle; // 楠岃瘉鐮佹湇鍔�
+ private readonly ISysConfigService _sysConfigService; // 楠岃瘉鐮佹湇鍔�
+ private readonly IEventPublisher _eventPublisher;
+ private readonly ISysCacheService _cache;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public AuthService(IRepository<SysUser> sysUserRep, IRepository<WmsPdaPower> wmsPdaPower, IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+ IRepository<SysDictData> sysDictData, IHttpContextAccessor httpContextAccessor,
+ ISysUserService sysUserService, ISysEmpService sysEmpService, ISysRoleService sysRoleService,
+ ISysMenuService sysMenuService, ISysAppService sysAppService, IClickWordCaptcha captchaHandle,
+ ISysConfigService sysConfigService, IEventPublisher eventPublisher, ISysCacheService cache)
+ {
+ _sysUserRep = sysUserRep;
+ _wmsPdaPower = wmsPdaPower;
+ _wmsRolePdaMenu = wmsRolePdaMenu;
+ _sysDictData = sysDictData;
+ _httpContextAccessor = httpContextAccessor;
+ _sysUserService = sysUserService;
+ _sysEmpService = sysEmpService;
+ _sysRoleService = sysRoleService;
+ _sysMenuService = sysMenuService;
+ _sysAppService = sysAppService;
+ _captchaHandle = captchaHandle;
+ _sysConfigService = sysConfigService;
+ _eventPublisher = eventPublisher;
+ _cache = cache;
+ }
+
+ /// <summary>
+ /// 鐢ㄦ埛鐧诲綍
+ /// </summary>
+ /// <param name="input"></param>
+ /// <remarks>榛樿鐢ㄦ埛鍚�/瀵嗙爜锛歛dmin/admin</remarks>
+ /// <returns></returns>
+ [HttpPost("login")]
+ [AllowAnonymous]
+ public string LoginAsync([Required] LoginInput input)
+ {
+ // 鑾峰彇鍔犲瘑鍚庣殑瀵嗙爜
+ var encryptPasswod = MD5Encryption.Encrypt(input.Password);
+
+ // 鍒ゆ柇鐢ㄦ埛鍚嶅拰瀵嗙爜鏄惁姝g‘ 蹇界暐鍏ㄥ眬杩囨护鍣�
+ var user = _sysUserRep
+ .Where(u => u.Account.Equals(input.Account) && u.Password.Equals(encryptPasswod) && u.IsDeleted == false, false, true)
+ .FirstOrDefault();
+ _ = user ?? throw Oops.Oh(ErrorCode.D1000);
+
+ // 楠岃瘉璐﹀彿鏄惁琚喕缁�
+ if (user.Status == CommonStatus.DISABLE)
+ throw Oops.Oh(ErrorCode.D1017);
+
+ //楠岃瘉鏄惁鍗曠敤鎴风櫥褰曪紝濡傛灉鏄墧闄ゅ凡缁忕櫥褰曠殑鐢ㄦ埛
+ if (_sysConfigService.GetEnableSingleLoginFlag().Result)
+ {
+ var onlineUsers = _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER).Result;
+ if (onlineUsers != null)
+ {
+ var loginuser = onlineUsers.FirstOrDefault(u => u.UserId == user.Id);
+ if (loginuser != null)
+ {
+ App.GetService<ISysOnlineUserService>().SingleLoginForceExist(loginuser);
+ }
+ }
+ }
+
+ // 鍛樺伐淇℃伅
+ var empInfo = _sysEmpService.GetEmpInfo(user.Id).Result;
+
+ // 鑾峰彇鏁版嵁鏉冮檺
+ var dataScopes = JsonUtil.ToJson(_sysUserService.GetUserDataScopeIdList(user.Id).Result);
+
+ // 鐢熸垚Token浠ょ墝
+ //var accessToken = await _jwtBearerManager.CreateTokenAdmin(user);
+ var accessToken = JWTEncryption.Encrypt(new Dictionary<string, object>
+ {
+ {ClaimConst.CLAINM_USERID, user.Id},
+ //{ClaimConst.TENANT_ID, user.TenantId},
+ {ClaimConst.CLAINM_ACCOUNT, user.Account},
+ {ClaimConst.CLAINM_NAME, user.Name},
+ {ClaimConst.CLAINM_SUPERADMIN, user.AdminType},
+ {ClaimConst.CLAINM_ORGID, empInfo.OrgId},
+ {ClaimConst.CLAINM_ORGNAME, empInfo.OrgName},
+ {ClaimConst.DATA_SCOPES, dataScopes}
+ });
+
+ // 璁剧疆Swagger鑷姩鐧诲綍
+ _httpContextAccessor.HttpContext.SigninToSwagger(accessToken);
+
+ var tokenData = JWTEncryption.ReadJwtToken(accessToken); // 瑙e瘑
+
+ //var (isValid, tokenData, validationResult) = JWTEncryption.Validate(accessToken); // 楠岃瘉token鏈夋晥鏈�
+
+ // 鐢熸垚鍒锋柊Token浠ょ墝
+ var refreshToken =
+ JWTEncryption.GenerateRefreshToken(accessToken, App.GetOptions<RefreshTokenSettingOptions>().ExpiredTime);
+
+ // 璁剧疆鍒锋柊Token浠ょ墝
+ _httpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;
+
+ return accessToken;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠PC鐧诲綍鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("getLoginUser")]
+ public async Task<LoginOutput> GetLoginUserAsync()
+ {
+ var user = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+ if (user == null)
+ throw Oops.Oh(ErrorCode.D1011);
+ var userId = user.Id;
+
+ var httpContext = _httpContextAccessor.HttpContext;
+ var loginOutput = user.Adapt<LoginOutput>();
+
+ loginOutput.LastLoginTime = user.LastLoginTime = DateTimeOffset.Now;
+ loginOutput.LastLoginIp = user.LastLoginIp = httpContext.GetRequestIPv4();
+
+ //var ipInfo = IpTool.Search(loginOutput.LastLoginIp);
+ //loginOutput.LastLoginAddress = ipInfo.Country + ipInfo.Province + ipInfo.City + "[" + ipInfo.NetworkOperator + "][" + ipInfo.Latitude + ipInfo.Longitude + "]";
+
+ var client = Parser.GetDefault().Parse(httpContext.Request.Headers["User-Agent"]);
+ loginOutput.LastLoginBrowser = client.UA.Family + client.UA.Major;
+ loginOutput.LastLoginOs = client.OS.Family + client.OS.Major;
+
+ // 鍛樺伐淇℃伅
+ loginOutput.LoginEmpInfo = await _sysEmpService.GetEmpInfo(userId);
+
+ // 瑙掕壊淇℃伅
+ loginOutput.Roles = await _sysRoleService.GetUserRoleList(userId);
+
+ // 鏉冮檺淇℃伅
+ loginOutput.Permissions = await _sysMenuService.GetLoginPermissionList(userId);
+
+ // 绯荤粺鎵�鏈夋潈闄愪俊鎭�
+ loginOutput.AllPermissions = await _sysMenuService.GetAllPermissionList();
+
+ // 鏁版嵁鑼冨洿淇℃伅(鏈烘瀯Id闆嗗悎)
+ loginOutput.DataScopes = await _sysUserService.GetUserDataScopeIdList(userId);
+
+ // 鍏峰搴旂敤淇℃伅锛堝绯荤粺锛岄粯璁ゆ縺娲讳竴涓紝鍙牴鎹郴缁熷垏鎹㈣彍鍗曪級,杩斿洖鐨勭粨鏋滀腑绗竴涓负婵�娲荤殑绯荤粺
+ loginOutput.Apps = await _sysAppService.GetLoginApps(userId);
+
+ // 鑿滃崟淇℃伅
+ if (loginOutput.Apps.Count > 0)
+ {
+ var activeApp = loginOutput.Apps.FirstOrDefault(u => u.Active == YesOrNot.Y.ToString());
+ var defaultActiveAppCode = activeApp != null ? activeApp.Code : loginOutput.Apps.FirstOrDefault().Code;
+ loginOutput.Menus = await _sysMenuService.GetLoginMenusAntDesign(userId, defaultActiveAppCode);
+ }
+
+ // 鏇存柊鐢ㄦ埛鏈�鍚庣櫥褰旾p鍜屾椂闂�
+ await _sysUserRep.UpdateIncludeAsync(user, new[] { nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+
+ // 澧炲姞鐧诲綍鏃ュ織
+ await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+ new SysLogVis
+ {
+ Name = loginOutput.Name,
+ Success = YesOrNot.Y,
+ Message = "鐧诲綍鎴愬姛",
+ Ip = loginOutput.LastLoginIp,
+ Browser = loginOutput.LastLoginBrowser,
+ Os = loginOutput.LastLoginOs,
+ VisType = LoginType.LOGIN,
+ VisTime = loginOutput.LastLoginTime,
+ Account = loginOutput.Account
+ }));
+ return loginOutput;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠PDA鐧诲綍鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("getPdaLoginUser")]
+ public async Task<LoginPdaOutput> GetPdaLoginUserAsync()
+ {
+ var user = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+ if (user == null)
+ throw Oops.Oh(ErrorCode.D1011);
+ var userId = user.Id;
+
+ var httpContext = _httpContextAccessor.HttpContext;
+ var loginOutput = user.Adapt<LoginPdaOutput>();
+
+ loginOutput.LastLoginTime = user.LastLoginTime = DateTimeOffset.Now;
+ loginOutput.LastLoginIp = user.LastLoginIp = httpContext.GetRequestIPv4();
+
+ //var ipInfo = IpTool.Search(loginOutput.LastLoginIp);
+ //loginOutput.LastLoginAddress = ipInfo.Country + ipInfo.Province + ipInfo.City + "[" + ipInfo.NetworkOperator + "][" + ipInfo.Latitude + ipInfo.Longitude + "]";
+
+ var client = Parser.GetDefault().Parse(httpContext.Request.Headers["User-Agent"]);
+ loginOutput.LastLoginBrowser = client.UA.Family + client.UA.Major;
+ loginOutput.LastLoginOs = client.OS.Family + client.OS.Major;
+ // 瑙掕壊淇℃伅
+ var roleList = await _sysRoleService.GetUserRoleList(userId);
+
+ var meunIdList = _wmsRolePdaMenu.Where(n => roleList.Select(u => u.Id).Contains(n.SysRoleId)).Select(n => n.PdaMenuId).ToList();
+ var wmspdaPowerList = _wmsPdaPower.Where(n => meunIdList.Contains(n.Id)).Adapt<List<WmsPdaPowerOutput>>();
+
+ var dicDataList = _sysDictData.Where(p => p.TypeId == 383290718294085).ToList();
+ var listData = new List<wmsPdaPowerMenuOutput>();
+ foreach (var item in dicDataList)
+ {
+ var enumValue = LesWorkShopType.FAPAOCHEJIAN;
+ if (item.Code == "1") enumValue = LesWorkShopType.FAPAOCHEJIAN;
+ else if (item.Code == "2") enumValue = LesWorkShopType.JIAOHEBANCHEJIAN;
+ else if (item.Code == "3") enumValue = LesWorkShopType.JHBCJ;
+ else if (item.Code == "4") enumValue = LesWorkShopType.RSBCJ;
+ else if (item.Code == "5") enumValue = LesWorkShopType.YLKCJ;
+ else enumValue = LesWorkShopType.TY;
+ if (wmspdaPowerList.Where(n => n.WorkShopType == enumValue).ToList().Count() != 0)
+ {
+ listData.Add(new wmsPdaPowerMenuOutput()
+ {
+ WorkShopName = item.Value,
+ WmsPdaPowerOutput = wmspdaPowerList.Where(n => n.WorkShopType == enumValue).ToList()
+ });
+ }
+ }
+ loginOutput.WmsPdaPowerOutputs = listData;
+ // 鏇存柊鐢ㄦ埛鏈�鍚庣櫥褰旾p鍜屾椂闂�
+ await _sysUserRep.UpdateIncludeAsync(user, new[] { nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+
+ // 澧炲姞鐧诲綍鏃ュ織
+ await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+ new SysLogVis
+ {
+ Name = loginOutput.Name,
+ Success = YesOrNot.Y,
+ Message = "鐧诲綍鎴愬姛",
+ Ip = loginOutput.LastLoginIp,
+ Browser = loginOutput.LastLoginBrowser,
+ Os = loginOutput.LastLoginOs,
+ VisType = LoginType.LOGIN,
+ VisTime = loginOutput.LastLoginTime,
+ Account = loginOutput.Account
+ }));
+ return loginOutput;
+ }
+
+ /// <summary>
+ /// 閫�鍑�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("logout")]
+ [AllowAnonymous]
+ public async Task LogoutAsync()
+ {
+ var ip = _httpContextAccessor.HttpContext.GetRequestIPv4();
+ _httpContextAccessor.HttpContext.SignoutToSwagger();
+ //_httpContextAccessor.HttpContext.Response.Headers["access-token"] = "invalid token";
+
+ // 澧炲姞閫�鍑烘棩蹇�
+ await _eventPublisher.PublishAsync(new ChannelEventSource("Create:VisLog",
+ new SysLogVis
+ {
+ Name = CurrentUserInfo.Name,
+ Success = YesOrNot.Y,
+ Message = "閫�鍑烘垚鍔�",
+ VisType = LoginType.LOGOUT,
+ VisTime = DateTimeOffset.Now,
+ Account = CurrentUserInfo.Account,
+ Ip = ip
+ }));
+ }
+
+ /// <summary>
+ /// 鑾峰彇楠岃瘉鐮佸紑鍏�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("getCaptchaOpen")]
+ [AllowAnonymous]
+ public async Task<bool> GetCaptchaOpen()
+ {
+ return await _sysConfigService.GetCaptchaOpenFlag();
+ }
+
+ /// <summary>
+ /// 鑾峰彇楠岃瘉鐮侊紙榛樿鐐归�夋ā寮忥級
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("captcha/get")]
+ [AllowAnonymous]
+ [NonUnify]
+ public async Task<ClickWordCaptchaResult> GetCaptcha()
+ {
+ // 鍥剧墖澶у皬瑕佷笌鍓嶇淇濇寔涓�鑷达紙鍧愭爣鑼冨洿锛�
+ return await _captchaHandle.CreateCaptchaImage(_captchaHandle.RandomCode(4), 310, 155);
+ }
+
+ /// <summary>
+ /// 鏍¢獙楠岃瘉鐮�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("captcha/check")]
+ [AllowAnonymous]
+ [NonUnify]
+ public async Task<ClickWordCaptchaResult> VerificationCode(ClickWordCaptchaInput input)
+ {
+ return await _captchaHandle.CheckCode(input);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs
new file mode 100644
index 0000000..bff90cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginInput.cs
@@ -0,0 +1,24 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐧诲綍杈撳叆鍙傛暟
+ /// </summary>
+ public class LoginInput
+ {
+ /// <summary>
+ /// 鐢ㄦ埛鍚�
+ /// </summary>
+ /// <example>superAdmin</example>
+ [Required(ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳戒负绌�"), MinLength(5, ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳藉皯浜�5浣嶅瓧绗�")]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ /// <example>123456</example>
+ [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖"), MinLength(5, ErrorMessage = "瀵嗙爜涓嶈兘灏戜簬5浣嶅瓧绗�")]
+ public string Password { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs
new file mode 100644
index 0000000..f5c7b52
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/LoginOutput.cs
@@ -0,0 +1,275 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛鐧诲綍杈撳嚭鍙傛暟
+ /// </summary>
+ public class LoginOutput
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTimeOffset? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆(瀛楀吀 1鐢� 2濂�)
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public String Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public String Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public String Tel { get; set; }
+
+ /// <summary>
+ /// 浜х嚎id
+ /// </summary>
+ public long ProductionlineId { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+ /// </summary>
+ public int AdminType { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄咺P
+ /// </summary>
+ public string LastLoginIp { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘椂闂�
+ /// </summary>
+ public DateTimeOffset? LastLoginTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗗湴鍧�
+ /// </summary>
+ public string LastLoginAddress { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+ /// </summary>
+ public string LastLoginBrowser { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+ /// </summary>
+ public string LastLoginOs { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput LoginEmpInfo { get; set; } = new EmpOutput();
+
+ /// <summary>
+ /// 鍏峰搴旂敤淇℃伅
+ /// </summary>
+ public List<AppOutput> Apps { get; set; } = new List<AppOutput>();
+
+ /// <summary>
+ /// 瑙掕壊淇℃伅
+ /// </summary>
+ public List<RoleOutput> Roles { get; set; } = new List<RoleOutput>();
+
+ /// <summary>
+ /// 鏉冮檺淇℃伅
+ /// </summary>
+ public List<string> Permissions { get; set; } = new List<string>();
+
+ /// <summary>
+ /// 绯荤粺鎵�鏈夋潈闄愪俊鎭�
+ /// </summary>
+ public List<string> AllPermissions { get; set; } = new List<string>();
+
+ /// <summary>
+ /// 鐧诲綍鑿滃崟淇℃伅---AntDesign鐗堟湰鑿滃崟
+ /// </summary>
+ public List<AntDesignTreeNode> Menus { get; set; } = new List<AntDesignTreeNode>();
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿锛堟満鏋勶級淇℃伅
+ /// </summary>
+ public List<long> DataScopes { get; set; } = new List<long>();
+
+ ///// <summary>
+ ///// 绉熸埛淇℃伅
+ ///// </summary>
+ //public List<long> Tenants { get; set; }
+
+ ///// <summary>
+ ///// 瀵嗙爜
+ ///// </summary>
+ //public string Password { get; set; }
+
+ ///// <summary>
+ ///// 璐︽埛杩囨湡
+ ///// </summary>
+ //public string AccountNonExpired { get; set; }
+
+ ///// <summary>
+ ///// 鍑瘉杩囨湡
+ ///// </summary>
+ //public string CredentialsNonExpired { get; set; }
+
+ ///// <summary>
+ ///// 璐︽埛閿佸畾
+ ///// </summary>
+ //public bool AccountNonLocked { get; set; }
+
+ ///// <summary>
+ ///// 鐢ㄦ埛鍚嶇О
+ ///// </summary>
+ //public string UserName { get; set; }
+
+ ///// <summary>
+ ///// 鏉冮檺
+ ///// </summary>
+ //public List<long> Authorities { get; set; } = new List<long>();
+
+ ///// <summary>
+ ///// 鏄惁鍚姩
+ ///// </summary>
+ //public bool Enabled { get; set; }
+ }
+
+ public class LoginPdaOutput
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTimeOffset? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆(瀛楀吀 1鐢� 2濂�)
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public String Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public String Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public String Tel { get; set; }
+
+ /// <summary>
+ /// 浜х嚎id
+ /// </summary>
+ public long ProductionlineId { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绠$悊鍛樼被鍨嬶紙1瓒呯骇绠$悊鍛� 2绠$悊鍛� 3鏅�氳处鍙凤級
+ /// </summary>
+ public int AdminType { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄咺P
+ /// </summary>
+ public string LastLoginIp { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘椂闂�
+ /// </summary>
+ public DateTimeOffset? LastLoginTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗗湴鍧�
+ /// </summary>
+ public string LastLoginAddress { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘墍鐢ㄦ祻瑙堝櫒
+ /// </summary>
+ public string LastLoginBrowser { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥闄嗘墍鐢ㄧ郴缁�
+ /// </summary>
+ public string LastLoginOs { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public List<wmsPdaPowerMenuOutput> WmsPdaPowerOutputs { get; set; }
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs
new file mode 100644
index 0000000..5798f0c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/Dto/RegistInput.cs
@@ -0,0 +1,31 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application.Auth.Dto
+{
+ /// <summary>
+ /// 娉ㄥ唽杈撳叆鍙傛暟
+ /// </summary>
+ public class RegistInput
+ {
+ /// <summary>
+ /// 鐢ㄦ埛鍚�
+ /// </summary>
+ /// <example>superAdmin</example>
+ [Required(ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳戒负绌�"), MinLength(3, ErrorMessage = "鐢ㄦ埛鍚嶄笉鑳藉皯浜�3浣嶅瓧绗�")]
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚�
+ /// </summary>
+ /// <example>superAdmin</example>
+ [Required(ErrorMessage = "鍏徃涓嶈兘涓虹┖"), MinLength(3, ErrorMessage = "鍏徃涓嶈兘灏戜簬3浣嶅瓧绗�")]
+ public string CompanyName { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ /// <example>123456</example>
+ [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖"), MinLength(5, ErrorMessage = "瀵嗙爜涓嶈兘灏戜簬5浣嶅瓧绗�")]
+ public string Password { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs
new file mode 100644
index 0000000..13c0ff0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Auth/IAuthService.cs
@@ -0,0 +1,48 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface IAuthService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<ClickWordCaptchaResult> GetCaptcha();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<bool> GetCaptchaOpen();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<LoginOutput> GetLoginUserAsync();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ string LoginAsync([FromBody] LoginInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task LogoutAsync();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<ClickWordCaptchaResult> VerificationCode(ClickWordCaptchaInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs
new file mode 100644
index 0000000..2296663
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/BaseService.cs
@@ -0,0 +1,405 @@
+using Admin.NET.Core;
+using Furion.ClayObject.Extensions;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Expressions;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫氱敤鏂规硶
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <typeparam name="TSearchDto"></typeparam>
+ /// <typeparam name="TAddDto"></typeparam>
+ /// <typeparam name="TUpdateDto"></typeparam>
+ /// <typeparam name="TImportDto"></typeparam>
+ /// <typeparam name="TDetailDto"></typeparam>
+ /// <typeparam name="TPageListDto"></typeparam>
+ /// <typeparam name="TExportDto"></typeparam>
+ /// <typeparam name="TPrintDto"></typeparam>
+ public class BaseService<TEntity, TSearchDto, TAddDto, TUpdateDto, TImportDto, TDetailDto, TPageListDto, TExportDto, TPrintDto>
+ where TEntity : DEntityBase, new()
+ where TUpdateDto : BaseDto
+ where TSearchDto : PageInputBase
+ where TPageListDto : new()
+ where TExportDto : class, new()
+ where TImportDto : class, new()
+ {
+ /// <summary>
+ /// 鏁版嵁浠撳偍
+ /// </summary>
+ protected readonly IRepository<TEntity> Repository;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="repository"></param>
+ public BaseService(IRepository<TEntity> repository)
+ {
+ Repository = repository;
+ }
+
+ #region 鏌ヨ/鍒嗛〉鏌ヨ
+
+ /// <summary>
+ /// 涓婚敭鏌ヨ
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public virtual async Task<TDetailDto> Get(long id)
+ {
+ var entity = await Repository.DetachedEntities.FirstOrDefaultAsync(e => e.Id == id);
+ return entity.Adapt<TDetailDto>();
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鎼滅储鍓�
+ /// </summary>
+ protected Func<TSearchDto, Expression<Func<TEntity, bool>>> SearchExpression = null;
+
+ /// <summary>
+ /// 鑷畾涔夊垎椤垫悳绱紙澶嶆潅鏌ヨ锛�
+ /// </summary>
+ protected Func<TSearchDto, IQueryable<TEntity>> SearchQueryable = null;
+
+ /// <summary>
+ /// 鍒嗛〉鏁版嵁杩斿洖鍓嶅鐞�
+ /// </summary>
+ /// <returns></returns>
+ protected Action<PageResult<TEntity>> PageListHandle = null;
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ
+ /// </summary>
+ /// <param name="searchDto"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ [HttpPost("page")]
+ public virtual async Task<PageResult<TEntity>> PageList(TSearchDto searchDto)
+ {
+ IQueryable<TEntity> queryable;
+ if (SearchQueryable != null)
+ {
+ // 閫氳繃娲剧敓绫讳腑瀹氫箟鐨勫鎵樻柟娉曡嚜瀹氫箟鏌ヨ鏉′欢
+ queryable = SearchQueryable(searchDto);
+ }
+ else
+ {
+ // 鍔ㄦ�佹瀯寤烘煡璇㈡潯浠�
+ GetSearchParameters(searchDto);
+ queryable = Repository.DetachedEntities.Search(searchDto);
+
+ // 鏈夎嚜瀹氫箟鐨勬煡璇㈡潯浠�
+ if (SearchExpression != null)
+ queryable = queryable.Where(SearchExpression(searchDto));
+ }
+
+ var pageList = await queryable.ToADPagedListAsync(searchDto.PageNo, searchDto.PageSize);
+
+ PageListHandle?.Invoke(pageList);
+
+ return pageList;
+ }
+
+ #endregion 鏌ヨ/鍒嗛〉鏌ヨ
+
+ #region 鏂板
+
+ /// <summary>
+ /// 鏂板鍓嶉獙璇佹垨澶勭悊
+ /// </summary>
+ protected Action<TAddDto> BeforeAddAction = null;
+
+ /// <summary>
+ /// 鏂板鍚庡鐞�
+ /// </summary>
+ protected Action<TEntity> AfterAddAction = null;
+
+ /// <summary>
+ /// 鏂板
+ /// </summary>
+ /// <param name="addDto"></param>
+ public virtual async Task Add(TAddDto addDto)
+ {
+ // 鏂板鍓嶆搷浣�
+ BeforeAddAction?.Invoke(addDto);
+
+ // 鍐欐暟鎹�
+ var entity = await addDto.Adapt<TEntity>().InsertAsync();
+
+ // 鏂板鍚庢搷浣�
+ AfterAddAction?.Invoke(entity.Entity);
+ }
+
+ #endregion 鏂板
+
+ #region 鍒犻櫎/鍋囧垹闄�
+
+ /// <summary>
+ /// 鍒犻櫎鍓嶉獙璇佹垨澶勭悊
+ /// </summary>
+ protected Action<List<long>> BeforeDeleteAction = null;
+
+ /// <summary>
+ /// 鍒犻櫎鍚庡鐞�
+ /// </summary>
+ protected Action<List<long>, int> AfterDeleteAction = null;
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="ids"></param>
+ public virtual async Task Delete(List<long> ids)
+ {
+ BeforeDeleteAction?.Invoke(ids);
+ var count = await Repository.Context.DeleteRangeAsync<TEntity>(x => ids.Contains(x.Id));
+
+ AfterDeleteAction?.Invoke(ids, count);
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄ゅ墠楠岃瘉鎴栧鐞�
+ /// </summary>
+ protected Action<List<long>> BeforeFakeDeleteAction = null;
+
+ /// <summary>
+ /// 鍋囧垹闄ゅ悗澶勭悊
+ /// </summary>
+ protected Action<List<long>, int> AfterFakeDeleteAction = null;
+
+ /// <summary>
+ /// 鍋囧垹闄�
+ /// </summary>
+ /// <param name="ids"></param>
+ [HttpDelete("fakeDelete")]
+ public virtual async Task FakeDelete(List<long> ids)
+ {
+ BeforeFakeDeleteAction?.Invoke(ids);
+
+ var count = await Repository.Context.BatchUpdate<TEntity>()
+ .Set(x => x.IsDeleted, x => false)
+ .Where(x => ids.Contains(x.Id))
+ .ExecuteAsync();
+
+ AfterFakeDeleteAction?.Invoke(ids, count);
+ }
+
+ #endregion 鍒犻櫎/鍋囧垹闄�
+
+ #region 淇敼
+
+ /// <summary>
+ /// 鏇存柊鍓嶉獙璇佹垨澶勭悊
+ /// </summary>
+ protected Action<TUpdateDto> BeforeUpdateAction = null;
+
+ /// <summary>
+ /// 鏇存柊鍚庡鐞�
+ /// </summary>
+ protected Action<TEntity> AfterUpdateAction = null;
+
+ /// <summary>
+ /// 淇敼
+ /// </summary>
+ /// <param name="updateDto"></param>
+ [HttpPut("edit")]
+ public virtual async Task Update(TUpdateDto updateDto)
+ {
+ BeforeUpdateAction?.Invoke(updateDto);
+ var entity = await updateDto.Adapt<TEntity>().UpdateAsync(true);
+ AfterUpdateAction?.Invoke(entity.Entity);
+ }
+
+ #endregion 淇敼
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// 瀵煎叆妯$増涓嬭浇
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("importTemplate")]
+ public virtual async Task<FileContentResult> ImportTemplate()
+ {
+ // 鍒涘缓Excel瀵煎叆瀵硅薄
+ IImporter importer = new ExcelImporter();
+ var byteArray = await importer.GenerateTemplateBytes<TImportDto>();
+
+ // 鏂囦欢鍚嶇О
+ var fileName = typeof(TEntity).GetDescriptionValue<CommentAttribute>().Comment + "瀵煎叆妯$増.xlsx";
+
+ return await Task.FromResult(
+ new FileContentResult(byteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ {
+ FileDownloadName = fileName
+ });
+ }
+
+ /// <summary>
+ /// 瀵煎叆鍓嶉獙璇佹垨澶勭悊
+ /// </summary>
+ protected Action<IEnumerable<TImportDto>> BeforeImportAction = null;
+
+ /// <summary>
+ /// 瀵煎叆鍚庡鐞�
+ /// </summary>
+ protected Action<IEnumerable<TImportDto>> AfterImportAction = null;
+
+ /// <summary>
+ /// 瀵煎叆
+ /// </summary>
+ /// <param name="file"></param>
+ /// <exception cref="Exception"></exception>
+ [UnitOfWork]
+ public virtual async Task Import(IFormFile file)
+ {
+ var path = Path.Combine(Path.GetTempPath(), $"{YitIdHelper.NextId()}.xlsx");
+ await using (var stream = File.Create(path))
+ {
+ await file.CopyToAsync(stream);
+ }
+
+ // 鍒涘缓Excel瀵煎叆瀵硅薄
+ IImporter importer = new ExcelImporter();
+ var import = await importer.Import<TImportDto>(path);
+
+ if (import == null)
+ throw Oops.Oh("瀵煎叆妯$増瑙f瀽寮傚父");
+ if (import.Exception != null)
+ throw Oops.Oh("瀵煎叆寮傚父:" + import.Exception);
+ if (import.RowErrors.Count > 0)
+ throw Oops.Oh("鏁版嵁鏍¢獙:" + JSON.Serialize(import.RowErrors));
+
+ BeforeImportAction?.Invoke(import.Data);
+
+ await Repository.InsertAsync(import.Data.Adapt<ICollection<TEntity>>());
+
+ AfterImportAction?.Invoke(import.Data);
+ }
+
+ #endregion 瀵煎叆
+
+ #region 瀵煎嚭
+
+ /// <summary>
+ /// 瀵煎嚭鎼滅储鍓�
+ /// </summary>
+ protected Func<TSearchDto, Expression<Func<TEntity, bool>>> ExportSearchExpression = null;
+
+ /// <summary>
+ /// 鑷畾涔夊鍑烘悳绱紙澶嶆潅鏌ヨ锛�
+ /// </summary>
+ protected Func<TSearchDto, IQueryable<TEntity>> ExportSearchQueryable = null;
+
+ /// <summary>
+ /// 瀵煎嚭鏁版嵁杩斿洖鍓嶅鐞�
+ /// </summary>
+ /// <returns></returns>
+ protected Action<PagedList<TEntity>> ExportHandle = null;
+
+ /// <summary>
+ /// 瀵煎嚭
+ /// </summary>
+ /// <param name="searchDto"></param>
+ /// <returns></returns>
+ [HttpGet("export")]
+ public virtual async Task<FileContentResult> Export(TSearchDto searchDto)
+ {
+ IQueryable<TEntity> queryable;
+ if (ExportSearchQueryable != null)
+ {
+ // 閫氳繃娲剧敓绫讳腑瀹氫箟鐨勫鎵樻柟娉曡嚜瀹氫箟鏌ヨ鏉′欢
+ queryable = ExportSearchQueryable(searchDto);
+ }
+ else
+ {
+ // 鍔ㄦ�佹瀯寤烘煡璇㈡潯浠�
+ GetSearchParameters(searchDto);
+ queryable = Repository.DetachedEntities.Search(searchDto);
+
+ // 鏈夎嚜瀹氫箟鐨勬煡璇㈡潯浠�
+ if (ExportSearchExpression != null)
+ queryable = queryable.Where(ExportSearchExpression(searchDto));
+ }
+
+ var entitys = await queryable.ToListAsync();
+
+ // 鍒涘缓Excel瀵煎嚭瀵硅薄
+ IExporter exporter = new ExcelExporter();
+
+ // 瀵煎嚭鏂囦欢
+ var byteArray = await exporter.ExportAsByteArray(entitys.Adapt<List<TExportDto>>());
+
+ // 鏂囦欢鍚嶇О
+ var fileName = typeof(TEntity).GetDescriptionValue<CommentAttribute>() + DateTime.Now.ToString("yyyyMMddHHssmm") + ".xlsx";
+
+ return await Task.FromResult(
+ new FileContentResult(byteArray, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ {
+ FileDownloadName = fileName
+ });
+ }
+
+ #endregion 瀵煎嚭
+
+ #region 鎵撳嵃
+
+ /// <summary>
+ /// 鑾峰彇鎵撳嵃鏁版嵁 todo: 鏈�绠�鍗曠殑涓婚敭鏌ヨ鍗曟潯鏁版嵁锛屽悗缁疄鐜板崟鎹墦鍗版ā鐗堟ā鍧�
+ /// </summary>
+ /// <param name="id"></param>
+ [HttpGet("print")]
+ public virtual async Task<TPrintDto> Print(long id)
+ {
+ var entity = await Repository.DetachedEntities.FirstOrDefaultAsync(e => e.Id == id);
+ return entity.Adapt<TPrintDto>();
+ }
+
+ #endregion 鎵撳嵃
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 灏嗘煡璇to缁勮鎴愭悳绱㈠弬鏁�
+ /// </summary>
+ /// <param name="searchDto"></param>
+ /// <returns></returns>
+ private void GetSearchParameters(TSearchDto searchDto)
+ {
+ // 濡傛灉娌℃湁澶嶆潅鏌ヨ鏉′欢锛屾妸鑷畾涔夋煡璇to涓湁鍐呭鐨勯」鍔犲叆鏌ヨ鏉′欢
+ if (searchDto.SearchParameters != null && searchDto.SearchParameters.Any()) return;
+
+ // 鏌ヨdto杞负瀛楀吀
+ var searchDictionary = searchDto.ToDictionary();
+
+ // 鍙栧疄浣撲腑鐨勫瓧娈靛悕绉�
+ var entityPropertieNames =
+ typeof(TEntity).GetProperties().Select(x => x.Name).ToList();
+
+ // 灏唖earchDto涓湁鍊肩殑灞炴�у姞鍏ュ鏉傛煡璇㈡潯浠�
+ foreach (var keyValuePair in searchDictionary)
+ {
+ // 璺宠繃鑷畾涔夊睘鎬у拰绌哄�煎睘鎬э紝鑷畾涔夊睘鎬у彲鍦ㄦ煡璇㈠墠濮旀墭涓畾涔夋煡璇㈡潯浠�
+ if (!entityPropertieNames.Contains(keyValuePair.Key) || keyValuePair.Value == null) continue;
+ searchDto.SearchParameters.Add(new Condition()
+ {
+ Field = keyValuePair.Key,
+ Op = QueryTypeEnum.Equals,
+ Value = keyValuePair.Value
+ });
+ }
+ }
+
+ #endregion 绉佹湁鏂规硶
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs
new file mode 100644
index 0000000..59be149
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Base/Dto/BaseDto.cs
@@ -0,0 +1,52 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class BaseDto
+ {
+ /// <summary>
+ /// 涓婚敭Id
+ /// </summary>
+ public virtual long Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰匢d
+ /// </summary>
+ public virtual long? CreatedUserId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ [MaxLength(20)]
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰匢d
+ /// </summary>
+ public virtual long? UpdatedUserId { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ [MaxLength(20)]
+ public virtual string UpdatedUserName { get; set; }
+
+ /// <summary>
+ /// 杞垹闄�
+ /// </summary>
+ public virtual bool IsDeleted { get; set; } = false;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs
new file mode 100644
index 0000000..6bd5d49
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/ISysCacheService.cs
@@ -0,0 +1,134 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysCacheService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ Task AddCacheKey(string cacheKey);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ Task DelByPatternAsync(string key);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ Task DelCacheKey(string cacheKey);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ bool Exists(string cacheKey);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<string>> GetAllCacheKeys();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ Task<T> GetAsync<T>(string cacheKey);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetDataScope(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<string>> GetPermission(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task RemovePermission(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ Task<string> GetStringAsync(string cacheKey);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ Task RemoveAsync(string key);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ Task SetAsync(string cacheKey, object value);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="dataScopes"></param>
+ /// <returns></returns>
+ Task SetDataScope(long userId, List<long> dataScopes);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <param name="menus"></param>
+ /// <returns></returns>
+ Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="permissions"></param>
+ /// <returns></returns>
+ Task SetPermission(long userId, List<string> permissions);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ Task SetStringAsync(string cacheKey, string value);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs
new file mode 100644
index 0000000..40104cf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Cache/SysCacheService.cs
@@ -0,0 +1,272 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.JsonSerialization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Caching.Distributed;
+using System.Text;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺缂撳瓨鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Cache", Order = 100)]
+ [Route("api")]
+ public class SysCacheService : ISysCacheService, IDynamicApiController, ISingleton
+ {
+ private readonly IDistributedCache _cache;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="cache"></param>
+ public SysCacheService(IDistributedCache cache)
+ {
+ _cache = cache;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏁版嵁鑼冨洿缂撳瓨锛堟満鏋処d闆嗗悎锛�
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetDataScope(long userId)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + userId;
+ var res = await _cache.GetStringAsync(cacheKey);
+ return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<long>>(res);
+ }
+
+ /// <summary>
+ /// 缂撳瓨鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="dataScopes"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SetDataScope(long userId, List<long> dataScopes)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_DATASCOPE + userId;
+ await _cache.SetStringAsync(cacheKey, JSON.Serialize(dataScopes));
+
+ await AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鑿滃崟缂撳瓨
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<AntDesignTreeNode>> GetMenu(long userId, string appCode)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
+ var res = await _cache.GetStringAsync(cacheKey);
+ return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<AntDesignTreeNode>>(res);
+ }
+
+ /// <summary>
+ /// 缂撳瓨鑿滃崟
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <param name="menus"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SetMenu(long userId, string appCode, List<AntDesignTreeNode> menus)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_MENU + $"{userId}-{appCode}";
+ await _cache.SetStringAsync(cacheKey, JSON.Serialize(menus));
+
+ await AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏉冮檺缂撳瓨锛堟寜閽級
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<string>> GetPermission(long userId)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+ var res = await _cache.GetStringAsync(cacheKey);
+ return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<string>>(res);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏉冮檺缂撳瓨
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task RemovePermission(long userId)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+ await RemoveAsync(cacheKey);
+ }
+
+ /// <summary>
+ /// 缂撳瓨鏉冮檺
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="permissions"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SetPermission(long userId, List<string> permissions)
+ {
+ var cacheKey = CommonConst.CACHE_KEY_PERMISSION + userId;
+ await _cache.SetStringAsync(cacheKey, JSON.Serialize(permissions));
+
+ await AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夌紦瀛樺叧閿瓧
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysCache/keyList")]
+ public async Task<List<string>> GetAllCacheKeys()
+ {
+ var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+ return string.IsNullOrWhiteSpace(res) ? null : JSON.Deserialize<List<string>>(res);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鎸囧畾鍏抽敭瀛楃紦瀛�
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ [HttpGet("sysCache/remove")]
+ public async Task RemoveAsync(string key)
+ {
+ await _cache.RemoveAsync(key);
+
+ await DelCacheKey(key);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+ /// </summary>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task DelByPatternAsync(string key)
+ {
+ var allkeys = await GetAllCacheKeys();
+ 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(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+ }
+
+ /// <summary>
+ /// 璁剧疆缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SetAsync(string cacheKey, object value)
+ {
+ await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JSON.Serialize(value)));
+
+ await AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 璁剧疆缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SetStringAsync(string cacheKey, string value)
+ {
+ await _cache.SetStringAsync(cacheKey, value);
+
+ await AddCacheKey(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂撳瓨
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ [HttpGet("sysCache/detail")]
+ public async Task<string> GetStringAsync(string cacheKey)
+ {
+ return await _cache.GetStringAsync(cacheKey);
+ }
+
+ /// <summary>
+ /// 鑾峰彇缂撳瓨
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<T> GetAsync<T>(string cacheKey)
+ {
+ var res = await _cache.GetAsync(cacheKey);
+ return res == null ? default : JSON.Deserialize<T>(Encoding.UTF8.GetString(res));
+ }
+
+ /// <summary>
+ /// 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+ /// </summary>
+ /// <param name="cacheKey">閿�</param>
+ /// <returns></returns>
+ [NonAction]
+ public bool Exists(string cacheKey)
+ {
+ var res = _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL).GetAwaiter().GetResult();
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+ return allkeys.Any(_ => _ == cacheKey);
+ }
+
+ /// <summary>
+ /// 澧炲姞缂撳瓨Key
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task AddCacheKey(string cacheKey)
+ {
+ var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+ if (!allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Add(cacheKey);
+ await _cache.SetStringAsync(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+ }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="cacheKey"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task DelCacheKey(string cacheKey)
+ {
+ var res = await _cache.GetStringAsync(CommonConst.CACHE_KEY_ALL);
+ var allkeys = string.IsNullOrWhiteSpace(res) ? new HashSet<string>() : JSON.Deserialize<HashSet<string>>(res);
+ if (allkeys.Any(m => m == cacheKey))
+ {
+ allkeys.Remove(cacheKey);
+ await _cache.SetStringAsync(CommonConst.CACHE_KEY_ALL, JSON.Serialize(allkeys));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs
new file mode 100644
index 0000000..1be52e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptcha.cs
@@ -0,0 +1,232 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DependencyInjection;
+using Furion.JsonSerialization;
+using Microsoft.Extensions.Caching.Memory;
+using SixLabors.Fonts;
+using SixLabors.ImageSharp;
+using SixLabors.ImageSharp.Drawing.Processing;
+using SixLabors.ImageSharp.Processing;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐐归�夐獙璇佺爜
+ /// </summary>
+ public class ClickWordCaptcha : IClickWordCaptcha, ITransient
+ {
+ private readonly IMemoryCache _memoryCache;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="memoryCache"></param>
+ public ClickWordCaptcha(IMemoryCache memoryCache)
+ {
+ _memoryCache = memoryCache;
+ }
+
+ /// <summary>
+ /// 鐢熸垚楠岃瘉鐮佸浘鐗�
+ /// </summary>
+ /// <param name="code">鏂囧瓧</param>
+ /// <param name="width">鍥剧墖瀹藉害</param>
+ /// <param name="height">鍥剧墖楂樺害</param>
+ /// <param name="point">楠岃瘉鐐规暟閲忥紝涓嶈兘瓒呰繃鏂囧瓧鐨勯暱搴�</param>
+ /// <returns></returns>
+ public async Task<ClickWordCaptchaResult> CreateCaptchaImage(string code, int width, int height, int point = 3)
+ {
+ var rtnResult = new ClickWordCaptchaResult();
+
+ Random random = new();
+ //鑳屾櫙
+ string bgImagesDir = Path.Combine(App.WebHostEnvironment.WebRootPath, "Captcha/Image");//鑳屾櫙鍥剧墖璺緞
+ string[] bgImagesFiles = Directory.GetFiles(bgImagesDir);//鑳屾櫙鍥剧墖鍒楄〃
+ int imgIndex = random.Next(1, bgImagesFiles.Length);//闅忔満涓�涓儗鏅浘鐗�
+ string randomImgFilePath = bgImagesFiles[imgIndex];//寰楀埌鑳屾櫙鍥剧墖璺緞
+
+ // 瀛椾綋鏉ヨ嚜锛歨ttps://www.zcool.com.cn/special/zcoolfonts/
+ string fontsDir = Path.Combine(App.WebHostEnvironment.WebRootPath, "Captcha/Font");//瀛椾綋璺緞
+ //鎵�鏈夊瓧浣擄紝濡傛灉鏈夊涓瓧浣撴枃浠剁殑璇�
+ string[] fontFiles = new DirectoryInfo(fontsDir)?.GetFiles()
+ ?.Where(m => m.Extension.ToLower() == ".ttf")
+ ?.Select(m => m.FullName).ToArray();
+
+ using Image image = await Image.LoadAsync(randomImgFilePath);
+
+ if (image.Width != width || image.Height != height)
+ {
+ image.Mutate(x => x.Resize(width, height));
+ }
+ //瀛椾綋
+ var fontPath = fontFiles[random.Next(fontFiles.Length)];
+ var collection = new FontCollection();
+ var fontFamily = collection.Add(fontPath);
+ //collection.Install("path/to/emojiFont.ttf");//鍙互瀹夎澶氫釜
+ //collection.InstallCollection("path/to/font.ttc");
+ //
+ List<string> words = new();
+ //寰幆鎵�鏈夋枃瀛�
+ for (int i = 0; i < code.Length; i++)
+ {
+ //鏂囧瓧
+ var word = code[i].ToString();
+ var font = fontFamily.CreateFont(random.Next(14, 30)); //瀛椾綋
+ //棰滆壊
+ Color[] colorList = { Color.Black, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple };
+ var colorIndex = random.Next(colorList.Length);
+ var color = colorList[colorIndex];
+ //鍧愭爣
+ int _x = random.Next(30, width - 30);//闅忔満涓�涓搴�
+ int _y = random.Next(30, height - 30);//闅忔満涓�涓珮搴�
+
+ //鍐欏叆鏂囧瓧
+ image.Mutate(x => x.DrawText(
+ word, //鏂囧瓧鍐呭
+ font, //瀛椾綋
+ color, //棰滆壊
+ new PointF(_x, _y)) //鍧愭爣
+ );
+
+ if (rtnResult.RepData.Point.Count < point)
+ {
+ //璁板綍鍧愭爣
+ rtnResult.RepData.Point.Add(new PointPosModel() { X = _x, Y = _y });
+ //璁板綍鏂囧瓧
+ words.Add(word);
+ }
+ }
+
+ //璁板綍鏂囧瓧
+ rtnResult.RepData.WordList = words;
+
+ MemoryStream ms = new MemoryStream();
+ await image.SaveAsJpegAsync(ms);//浣嶅浘淇濆瓨鎴恓peg
+ //杞垚base64
+ rtnResult.RepData.OriginalImageBase64 = Convert.ToBase64String(ms.GetBuffer());
+ ms.Dispose();
+ rtnResult.RepData.Token = YitIdHelper.NextId().ToString();
+
+ // 缂撳瓨楠岃瘉鐮佹纭綅缃泦鍚�
+ var cacheOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(30));
+ _memoryCache.Set(CommonConst.CACHE_KEY_CODE + rtnResult.RepData.Token, rtnResult.RepData.Point, cacheOptions);
+
+ rtnResult.RepData.Point = null; // 娓呯┖浣嶇疆淇℃伅
+ return rtnResult;
+ }
+
+ /// <summary>
+ /// 闅忔満缁樺埗瀛楃涓�
+ /// </summary>
+ /// <param name="number"></param>
+ /// <returns></returns>
+ public string RandomCode(int number)
+ {
+ char[] str_char_arrary = { '璧�', '閽�', '瀛�', '鏉�', '鍛�', '鍚�', '閮�', '鐜�', '鍐�', '闄�', '瑜�', '鍗�', '钂�', '娌�', '闊�', '鏉�',
+ '鏈�', '绉�', '灏�', '璁�', '浣�', '鍚�', '鏂�', '寮�', '瀛�', '鏇�', '涓�', '鍗�', '閲�', '榄�', '闄�', '濮�', '鎴�', '璋�', '閭�', '鍠�', '鏌�', '姘�',
+ '绐�', '绔�', '浜�', '鑻�', '娼�', '钁�', '濂�', '鑼�', '褰�', '閮�', '椴�', '闊�', '鏄�', '椹�', '鑻�', '鍑�', '鑺�', '鏂�', '浠�', '琚�', '鏌�', '椴�',
+ '鍙�', '鍞�', '璐�', '钖�', '闆�', '璐�', '鍊�', '姹�', '婊�', '娈�', '缃�', '姣�', '閮�', '瀹�', '甯�', '鍌�', '鍗�', '榻�', '鍏�', '椤�', '瀛�', '骞�',
+ '榛�', '绌�', '钀�', '灏�', '濮�', '閭�', '婀�', '姹�', '绁�', '姣�', '鐙�', '绫�', '浼�', '鎴�', '鎴�', '璋�', '瀹�', '鑼�', '搴�', '鐔�', '绾�', '鑸�',
+ '灞�', '椤�', '绁�', '钁�', '姊�', '鏉�', '闃�', '钃�', '闂�', '瀛�', '璐�', '璺�', '濞�', '姹�', '绔�', '棰�', '閮�', '姊�', '鐩�', '鏋�', '閽�', '寰�',
+ '閭�', '楠�', '楂�', '澶�', '钄�', '鐢�', '妯�', '鑳�', '鍑�', '闇�', '铏�', '涓�', '鏀�', '鏌�', '绠�', '鍗�', '鑾�', '鏌�', '鎴�', '瑁�', '缂�', '瑙�',
+ '搴�', '瀹�', '涓�', '瀹�', '閭�', '鍗�', '鏉�', '娲�', '鍖�', '璇�', '宸�', '鐭�', '宕�', '鍚�', '榫�', '绋�', '宓�', '閭�', '瑁�', '闄�', '鑽�', '缈�',
+ '鑽�', '浜�', '鎯�', '鐢�', '鏇�', '灏�', '鍌�', '浠�', '浼�', '瀹�', '浠�', '鐢�', '姝�', '绗�', '鍒�', '鏅�', '瑭�', '榫�', '鍙�', '骞�', '鍙�', '榛�',
+ '婧�', '鍗�', '鎬�', '钂�', '閭�', '浠�', '绱�', '璧�', '鍗�', '灞�', '姹�', '涔�', '鑳�', '闂�', '鑾�', '鍏�', '缈�', '璋�', '璐�', '鍔�', '閫�', '濮�',
+ '鐢�', '鎵�', '鍫�', '鍐�', '瀹�', '闆�', '妗�', '瀵�', '閫�', '鐕�', '娴�', '灏�', '鍐�', '娓�', '鍒�', '搴�', '鏅�', '鏌�', '鐬�', '闃�', '杩�', '涔�',
+ '瀹�', '鍚�', '鍙�', '鏄�', '寤�', '搴�', '缁�', '姝�', '閮�', '鑰�', '婊�', '寮�', '鍖�', '鍥�', '鏂�', '瀵�', '骞�', '绂�', '闃�', '涓�', '娆�', '鍒�',
+ '甯�', '宸�', '鑱�', '鍏�', '鑽�',
+ '浼�', '鍒�', '鍕�', '姣�', '淇�', '宄�', '寮�', '鍐�', '骞�', '淇�', '涓�', '鏂�', '杈�', '鍔�', '鏄�', '姘�', '鍋�', '涓�', '骞�', '蹇�', '涔�', '鍏�',
+ '鑹�', '娴�', '灞�', '浠�', '娉�', '瀹�', '璐�', '绂�', '鐢�', '榫�', '鍏�', '鍏�', '鍥�', '鑳�', '瀛�', '绁�', '鎵�', '鍙�', '姝�', '鏂�', '鍒�', '娓�',
+ '椋�', '褰�', '瀵�', '椤�', '淇�', '瀛�', '鏉�', '娑�', '鏄�', '鎴�', '搴�', '鏄�', '鍏�', '澶�', '杈�', '瀹�', '宀�', '涓�', '鑼�', '杩�', '鏋�', '鏈�',
+ '鍧�', '鍜�', '褰�', '鍗�', '璇�', '鍏�', '鏁�', '闇�', '鎸�', '澹�', '浼�', '鎬�', '缇�', '璞�', '蹇�', '閭�', '鎵�', '涔�', '缁�', '鍔�', '鏉�', '鍠�',
+ '鍘�', '搴�', '纾�', '姘�', '鍙�', '瑁�', '娌�', '鍝�', '姹�', '瓒�', '娴�', '浜�', '鏀�', '璋�', '浜�', '濂�', '鍥�', '涔�', '杞�', '缈�', '鏈�', '浼�',
+ '瀹�', '瑷�', '鑻�', '楦�', '鏈�', '鏂�', '姊�', '鏍�', '缁�', '鍚�', '鍏�', '浼�', '缈�', '鏃�', '楣�', '娉�', '鏅�', '杈�', '澹�', '浠�', '寤�', '瀹�',
+ '鑷�', '鏍�', '鐐�', '寰�', '琛�', '鏃�', '娉�', '鐩�', '闆�', '鐞�', '閽�', '鍐�', '绛�', '鑵�', '妤�', '姒�', '椋�', '鑸�', '寮�', '绉�', '濞�', '鑻�',
+ '鍗�', '鎱�', '宸�', '缇�', '濞�', '闈�', '娣�', '鎯�', '鐝�', '缈�', '闆�', '鑺�', '鐜�', '钀�', '绾�', '濞�', '鐜�', '鑺�', '鑺�', '鐕�', '褰�', '鏄�',
+ '鑿�', '鍏�', '鍑�', '娲�', '姊�', '鐞�', '绱�', '浜�', '鑾�', '鐪�', '鐜�', '闆�', '鑽�', '鐖�', '濡�', '闇�', '棣�', '鏈�', '鑾�', '濯�', '鑹�', '鐟�',
+ '鍑�', '浣�', '鍢�', '鐞�', '鍕�', '鐝�', '璐�', '鑾�', '妗�', '濞�', '鍙�', '鐠�', '鐠�', '濞�', '鐞�', '鏅�', '濡�', '鑼�', '绉�', '鐝�', '鑾�', '閿�',
+ '榛�', '闈�', '鍊�', '濠�', '濮�', '濠�', '濞�', '鐟�', '棰�', '闇�', '鐟�', '鎬�', '濠�', '闆�', '钃�', '绾�', '浠�', '鑽�', '涓�', '钃�', '鐪�', '鍚�',
+ '鐞�', '钑�', '钖�', '鑿�', '姊�', '宀�', '鑻�', '濠�', '棣�', '鐟�', '鐞�', '闊�', '铻�', '鍥�', '鑹�', '鍜�', '鍗�', '鑱�', '婢�', '绾�', '姣�', '鎮�',
+ '鏄�', '鍐�', '鐖�', '鐞�', '鑼�', '缇�', '甯�', '娆�', '椋�', '鑲�', '婊�', '棣�', '绛�', '鏌�', '绔�', '闇�', '鍑�', '鏅�', '娆�', '闇�', '鏋�', '鑺�',
+ '鑿�', '瀵�', '浼�', '浜�', '瀹�', '鍙�', '濮�', '鑸�', '褰�', '鑽�', '鏋�', '涓�', '闃�', '濡�', '瀹�', '璐�', '鍒�', '绋�', '姊�', '缃�', '鎭�', '楦�',
+ '妗�', '楠�', '鍓�', '濞�', '绾�', '瀹�', '鑻�', '鐏�', '鐜�', '濯�', '鐞�', '鏅�', '瀹�', '鐫�', '鐑�', '鍫�', '鍞�', '濞�', '闊�', '闆�', '鑻�', '钀�',
+ '闃�', '褰�', '瀹�', '闆�', '娲�', '蹇�', '瀹�', '鏇�', '绱�', '閫�', '璐�', '铦�', '鑿�', '缁�', '钃�', '鍎�', '缈�', '鐑�' };
+
+ var rand = new Random();
+ var hs = new HashSet<char>();
+ var randomBool = true;
+ while (randomBool)
+ {
+ if (hs.Count == number)
+ break;
+ var rand_number = rand.Next(str_char_arrary.Length);
+ hs.Add(str_char_arrary[rand_number]);
+ }
+ return string.Join("", hs);
+ }
+
+ /// <summary>
+ /// 楠岃瘉鐮侀獙璇�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public Task<ClickWordCaptchaResult> CheckCode(ClickWordCaptchaInput input)
+ {
+ var res = new ClickWordCaptchaResult();
+
+ var rightVCodePos = _memoryCache.Get(CommonConst.CACHE_KEY_CODE + input.Token) as List<PointPosModel>;
+ if (rightVCodePos == null)
+ {
+ res.RepCode = "6110";
+ res.RepMsg = "楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鑾峰彇";
+ return Task.FromResult(res);
+ }
+
+ var userVCodePos = JSON.Deserialize<List<PointPosModel>>(input.PointJson);
+ if (userVCodePos == null || userVCodePos.Count < rightVCodePos.Count)
+ {
+ res.RepCode = "6111";
+ res.RepMsg = "楠岃瘉鐮佹棤鏁�";
+ return Task.FromResult(res);
+ }
+
+ int allowOffset = 25; // 鍏佽鐨勫亸绉婚噺(鐐硅Е瀹归敊)
+ for (int i = 0; i < userVCodePos.Count; i++)
+ {
+ var xOffset = userVCodePos[i].X - rightVCodePos[i].X;
+ var yOffset = userVCodePos[i].Y - rightVCodePos[i].Y;
+ xOffset = Math.Abs(xOffset); // x杞村亸绉婚噺
+ yOffset = Math.Abs(yOffset); // y杞村亸绉婚噺
+ // 鍙鏈変竴涓偣鐨勪换鎰忎竴涓酱鍋忕Щ閲忓ぇ浜巃llowOffset锛屽垯楠岃瘉涓嶉�氳繃
+ if (xOffset > allowOffset || yOffset > allowOffset)
+ {
+ res.RepCode = "6112";
+ res.RepMsg = "楠岃瘉鐮侀敊璇�";
+ return Task.FromResult(res);
+ }
+ }
+
+ _memoryCache.Remove(CommonConst.CACHE_KEY_CODE + input.Token);
+ res.RepCode = "0000";
+ res.RepMsg = "楠岃瘉鎴愬姛";
+ return Task.FromResult(res);
+ }
+ }
+
+ /// <summary>
+ /// 璁板綍姝g‘浣嶇疆
+ /// </summary>
+ public class PointPosModel
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public int X { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int Y { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs
new file mode 100644
index 0000000..3c09053
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaInput.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐐瑰嚮楠岃瘉鐮佽緭鍏ュ弬鏁�
+ /// </summary>
+ public class ClickWordCaptchaInput
+ {
+ /// <summary>
+ /// 楠岃瘉鐮佺被鍨�
+ /// </summary>
+ [Required(ErrorMessage = "楠岃瘉鐮佺被鍨�")]
+ public string CaptchaType { get; set; }
+
+ /// <summary>
+ /// 鍧愭爣鐐归泦鍚�
+ /// </summary>
+ [Required(ErrorMessage = "鍧愭爣鐐归泦鍚堜笉鑳戒负绌�")]
+ public string PointJson { get; set; }
+
+ /// <summary>
+ /// Token
+ /// </summary>
+ public string Token { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs
new file mode 100644
index 0000000..03b9320
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/ClickWordCaptchaResult.cs
@@ -0,0 +1,119 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 楠岃瘉鐮佽緭鍑哄弬鏁�
+ /// </summary>
+ public class ClickWordCaptchaResult
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string RepCode { get; set; } = "0000";
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string RepMsg { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public RepData RepData { get; set; } = new RepData();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool Error { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool Success { get; set; } = true;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class RepData
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaType { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaOriginalPath { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaFontType { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaFontSize { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string SecretKey { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string OriginalImageBase64 { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<PointPosModel> Point { get; set; } = new List<PointPosModel>();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string JigsawImageBase64 { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<string> WordList { get; set; } = new List<string>();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string PointList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string PointJson { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Token { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool Result { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CaptchaVerification { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs
new file mode 100644
index 0000000..d6e36f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/ClickWord/IClickWordCaptcha.cs
@@ -0,0 +1,32 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface IClickWordCaptcha
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<ClickWordCaptchaResult> CheckCode(ClickWordCaptchaInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="code"></param>
+ /// <param name="width"></param>
+ /// <param name="height"></param>
+ /// <param name="point"></param>
+ /// <returns></returns>
+ Task<ClickWordCaptchaResult> CreateCaptchaImage(string code, int width, int height, int point = 3);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="number"></param>
+ /// <returns></returns>
+ string RandomCode(int number);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs
new file mode 100644
index 0000000..5596437
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptcha.cs
@@ -0,0 +1,136 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Microsoft.Extensions.Caching.Memory;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Text;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 甯歌楠岃瘉鐮�
+ /// </summary>
+ public class GeneralCaptcha : IGeneralCaptcha, ITransient
+ {
+ private readonly IMemoryCache _memoryCache;
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="memoryCache"></param>
+ public GeneralCaptcha(IMemoryCache memoryCache)
+ {
+ _memoryCache = memoryCache;
+ }
+
+ /// <summary>
+ /// 鐢熸垚楠岃瘉鐮佸浘鐗�
+ /// </summary>
+ /// <param name="length"></param>
+ /// <returns></returns>
+ public ClickWordCaptchaResult CreateCaptchaImage(int length = 4)
+ {
+ var rtnResult = new ClickWordCaptchaResult();
+
+ var code = GenerateRandom(length); // 闅忔満瀛楃涓查泦鍚�
+ rtnResult.RepData.OriginalImageBase64 = Convert.ToBase64String(Draw(code)); //"data:image/jpg;base64," +
+ rtnResult.RepData.Token = YitIdHelper.NextId().ToString();
+
+ // 缂撳瓨楠岃瘉鐮佹纭綅缃泦鍚�
+ var cacheOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(30));
+ _memoryCache.Set(CommonConst.CACHE_KEY_CODE + rtnResult.RepData.Token, code, cacheOptions);
+
+ rtnResult.RepData.Point = null; // 娓呯┖浣嶇疆淇℃伅
+ return rtnResult;
+ }
+
+ private static byte[] Draw(string code)
+ {
+ int codeW = 110;
+ int codeH = 36;
+ int fontSize = 22;
+
+ // 棰滆壊鍒楄〃锛岀敤浜庨獙璇佺爜銆佸櫔绾裤�佸櫔鐐�
+ Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };
+ // 瀛椾綋鍒楄〃锛岀敤浜庨獙璇佺爜
+ string[] fonts = new[] { "Times New Roman", "Verdana", "Arial", "Gungsuh", "Impact" };
+
+ using (var bmp = new Bitmap(codeW, codeH))
+ using (var g = Graphics.FromImage(bmp))
+ using (var ms = new MemoryStream())
+ {
+ g.Clear(Color.White);
+ var rnd = new Random();
+ // 鐢诲櫔绾�
+ for (int i = 0; i < 1; i++)
+ {
+ int x1 = rnd.Next(codeW);
+ int y1 = rnd.Next(codeH);
+ int x2 = rnd.Next(codeW);
+ int y2 = rnd.Next(codeH);
+ var clr = color[rnd.Next(color.Length)];
+ g.DrawLine(new Pen(clr), x1, y1, x2, y2);
+ }
+
+ // 鐢婚獙璇佺爜瀛楃涓�
+ string fnt;
+ Font ft;
+ for (int i = 0; i < code.Length; i++)
+ {
+ fnt = fonts[rnd.Next(fonts.Length)];
+ ft = new Font(fnt, fontSize);
+ var clr = color[rnd.Next(color.Length)];
+ g.DrawString(code[i].ToString(), ft, new SolidBrush(clr), (float)i * 24 + 2, (float)0);
+ }
+
+ // 灏嗛獙璇佺爜鍥剧墖鍐欏叆鍐呭瓨娴�
+ bmp.Save(ms, ImageFormat.Png);
+ return ms.ToArray();
+ }
+ }
+
+ private static string GenerateRandom(int length)
+ {
+ var chars = new StringBuilder();
+ // 楠岃瘉鐮佺殑瀛楃闆嗭紝鍘绘帀浜嗕竴浜涘鏄撴贩娣嗙殑瀛楃
+ char[] character = { '2', '3', '4', '5', '6', '8', '9', 'a', 'b', 'd', 'e', 'f', 'h', 'k', 'm', 'n', 'r', 'x', 'y', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' };
+ Random rnd = new();
+ // 鐢熸垚楠岃瘉鐮佸瓧绗︿覆
+ for (int i = 0; i < length; i++)
+ {
+ chars.Append(character[rnd.Next(character.Length)]);
+ }
+ return chars.ToString();
+ }
+
+ /// <summary>
+ /// 楠岃瘉鐮侀獙璇�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ public ClickWordCaptchaResult CheckCode(GeneralCaptchaInput input)
+ {
+ var res = new ClickWordCaptchaResult();
+
+ var code = _memoryCache.Get(CommonConst.CACHE_KEY_CODE + input.Token);
+ if (code == null)
+ {
+ res.RepCode = "6110";
+ res.RepMsg = "楠岃瘉鐮佸凡澶辨晥锛岃閲嶆柊鑾峰彇";
+ return res;
+ }
+ if (string.Compare(input.CaptchaCode, (string)code, true) != 0)
+ {
+ res.RepCode = "6112";
+ res.RepMsg = "楠岃瘉鐮侀敊璇�";
+ return res;
+ }
+
+ _memoryCache.Remove(CommonConst.CACHE_KEY_CODE + input.Token);
+ res.RepCode = "0000";
+ res.RepMsg = "楠岃瘉鎴愬姛";
+ return res;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs
new file mode 100644
index 0000000..e490075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/GeneralCaptchaInput.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 甯歌楠岃瘉鐮佽緭鍏�
+ /// </summary>
+ public class GeneralCaptchaInput
+ {
+ /// <summary>
+ /// 楠岃瘉鐮佺被鍨�
+ /// </summary>
+ [Required(ErrorMessage = "楠岃瘉鐮佺被鍨�")]
+ public string CaptchaType { get; set; }
+
+ /// <summary>
+ /// 楠岃瘉鐮佸瓧绗�
+ /// </summary>
+ [Required(ErrorMessage = "楠岃瘉鐮佸瓧绗︿笉鑳戒负绌�")]
+ public string CaptchaCode { get; set; }
+
+ /// <summary>
+ /// Token
+ /// </summary>
+ public string Token { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs
new file mode 100644
index 0000000..f063525
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Captcha/General/IGeneralCaptcha.cs
@@ -0,0 +1,22 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface IGeneralCaptcha
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ ClickWordCaptchaResult CheckCode(GeneralCaptchaInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="length"></param>
+ /// <returns></returns>
+ ClickWordCaptchaResult CreateCaptchaImage(int length = 4);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs
new file mode 100644
index 0000000..3b5aef6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenConfigService.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Entity;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http.Metadata;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚璇︾粏閰嶇疆鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "CodeGenConfig", Order = 100)]
+ [Route("api")]
+ public class SysCodeGenerateConfigService : ICodeGenConfigService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysLowCodeDataBase> _sysLowCodeRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+ private readonly IRepository<SysCodeGen> _sysCodeGenRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+ private readonly IRepository<SysCodeGenConfig> _sysCodeGenConfigRep; // 浠g爜鐢熸垚璇︾粏閰嶇疆浠撳偍
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysCodeGenConfigRep"></param>
+ /// <param name="sysCodeGenRep"></param>
+ /// <param name="sysLowCodeRep"></param>
+ public SysCodeGenerateConfigService(IRepository<SysCodeGenConfig> sysCodeGenConfigRep, IRepository<SysCodeGen> sysCodeGenRep
+ , IRepository<SysLowCodeDataBase> sysLowCodeRep
+ )
+ {
+ _sysLowCodeRep = sysLowCodeRep;
+ _sysCodeGenConfigRep = sysCodeGenConfigRep;
+ _sysCodeGenRep = sysCodeGenRep;
+ }
+
+ /// <summary>
+ /// 浠g爜鐢熸垚璇︾粏閰嶇疆鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysCodeGenerateConfig/list")]
+ public async Task<List<CodeGenConfig>> List([FromQuery] CodeGenConfig input)
+ {
+ var result = await _sysCodeGenConfigRep.DetachedEntities
+ .Where(u => u.CodeGenId == input.CodeGenId && u.WhetherCommon != YesOrNot.Y.ToString())
+ .ProjectToType<CodeGenConfig>()
+ .Distinct()
+ .ToListAsync();
+
+ var codeGen = await _sysCodeGenRep.FirstOrDefaultAsync(x => x.Id == input.CodeGenId);
+ var codeGenOutput = codeGen.Adapt<CodeGenOutput>();
+ result.ForEach(x => x.CodeGen = codeGenOutput);
+ return result;
+ }
+
+ /// <summary>
+ /// 鏇存柊
+ /// </summary>
+ /// <param name="inputList"></param>
+ /// <returns></returns>
+ [HttpPost("sysCodeGenerateConfig/edit")]
+ public async Task Update(List<CodeGenConfig> inputList)
+ {
+ if (inputList == null || inputList.Count < 1) return;
+ var list = inputList.Adapt<List<SysCodeGenConfig>>();
+
+ CodeGenHelper.ValidateCodeGenConfig(list);
+
+ await _sysCodeGenConfigRep.UpdateAsync(list);
+ }
+
+ /// <summary>
+ /// 璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("路/detail")]
+ public async Task<SysCodeGenConfig> Detail([FromQuery] CodeGenConfig input)
+ {
+ return await _sysCodeGenConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鎵归噺澧炲姞
+ /// </summary>
+ /// <param name="tableColumnOuputList"></param>
+ /// <param name="codeGenerate"></param>
+ [NonAction]
+ public async Task DelAndAddList(List<TableColumnOuput> tableColumnOuputList, SysCodeGen codeGenerate)
+ {
+ if (tableColumnOuputList == null) return;
+ var list = new List<SysCodeGenConfig>();
+
+ List<SysLowCodeDataBase> list_LowCode = new List<SysLowCodeDataBase>();
+
+ if (codeGenerate != null && codeGenerate.LowCodeId > 0 && _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).Any())
+ {
+ list_LowCode = _sysLowCodeRep.Where(x => x.SysLowCodeId == codeGenerate.LowCodeId).ToList();
+ }
+
+ foreach (var tableColumn in tableColumnOuputList)
+ {
+ var codeGenConfig = new SysCodeGenConfig();
+
+ var YesOrNo = YesOrNot.Y.ToString();
+ if (Convert.ToBoolean(tableColumn.ColumnKey))
+ {
+ YesOrNo = YesOrNot.N.ToString();
+ }
+
+ if (CodeGenUtil.IsCommonColumn(tableColumn.ColumnName))
+ {
+ codeGenConfig.WhetherCommon = YesOrNot.Y.ToString();
+ YesOrNo = YesOrNot.N.ToString();
+ }
+ else
+ {
+ codeGenConfig.WhetherCommon = YesOrNot.N.ToString();
+ }
+
+ codeGenConfig.CodeGenId = codeGenerate.Id;
+ codeGenConfig.ColumnName = tableColumn.ColumnName;
+ codeGenConfig.ColumnComment = tableColumn.ColumnComment;
+ codeGenConfig.NetType = CodeGenUtil.ConvertDataType(tableColumn.DataType);
+ codeGenConfig.DtoNetType = list_LowCode.Where(x => x.FieldName == tableColumn.ColumnName).Select(x => x.DtoTypeName).FirstOrDefault();
+ if (string.IsNullOrEmpty(codeGenConfig.DtoNetType)) codeGenConfig.DtoNetType = codeGenConfig.NetType;
+ codeGenConfig.WhetherRetract = YesOrNot.N.ToString();
+
+ codeGenConfig.WhetherRequired = tableColumn.IsNullable ? YesOrNot.N.ToString() : YesOrNot.Y.ToString();
+ codeGenConfig.QueryWhether = YesOrNo;
+ //ly-0419 鐢熸垚鏂板缓 缂栬緫椤甸潰 鍒涘缓浜� 淇敼浜哄垱寤烘椂闂� 淇敼鏃堕棿 涔熻嚜鍔ㄧ敓鎴愶紝闇�瑕佸幓鎺�
+ if (codeGenConfig.ColumnName == "CreatedTime" || codeGenConfig.ColumnName == "UpdatedTime"
+ || codeGenConfig.ColumnName == "CreatedUserName" || codeGenConfig.ColumnName == "UpdatedUserName")
+ {
+ codeGenConfig.WhetherAddUpdate = YesOrNot.N.ToString();
+ }
+ else
+ {
+ codeGenConfig.WhetherAddUpdate = YesOrNo;
+ }
+ if (codeGenConfig.WhetherRequired == YesOrNot.Y.ToString())
+ {//蹇呭~瀛楁蹇呴』閰嶇疆澧炴敼銆�
+ codeGenConfig.WhetherAddUpdate = YesOrNot.Y.ToString();
+ }
+
+ codeGenConfig.WhetherTable = YesOrNo;
+ codeGenConfig.WhetherOrderBy = YesOrNo;
+ //鏄惁鑱斿悎涓婚敭 update by liuwq 20240418
+ codeGenConfig.WhetherRequired = YesOrNot.N.ToString();
+ codeGenConfig.ColumnKey = tableColumn.ColumnKey;
+
+ codeGenConfig.DataType = tableColumn.DataType;
+ codeGenConfig.EffectType = CodeGenUtil.DataTypeToEff(codeGenConfig.NetType);
+ codeGenConfig.QueryType = QueryTypeConst.绛変簬; // QueryTypeEnum.eq.ToString();
+ if (codeGenConfig.DtoNetType.ToLower() == "datetime".ToLower() || codeGenConfig.DtoNetType.ToLower() == "DateTimeOffset".ToLower())
+ {
+ codeGenConfig.QueryType = QueryTypeConst.浠嬩簬;
+ }
+ codeGenConfig.ShowTitleMinWidth = tableColumn.ShowTitleMinWidth;
+ list.Add(codeGenConfig);
+ }
+
+ _sysCodeGenConfigRep.Context.DeleteRange<SysCodeGenConfig>(x => x.CodeGenId == codeGenerate.Id);
+
+ await _sysCodeGenConfigRep.InsertAsync(list);
+ }
+
+ /// <summary>
+ /// 澧炲姞
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task Add(CodeGenConfig input)
+ {
+ var codeGenConfig = input.Adapt<SysCodeGenConfig>();
+ await codeGenConfig.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="codeGenId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task Delete(long codeGenId)
+ {
+ var codeGenConfigList = await _sysCodeGenConfigRep.Where(u => u.CodeGenId == codeGenId).ToListAsync();
+ await _sysCodeGenConfigRep.DeleteAsync(codeGenConfigList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs
new file mode 100644
index 0000000..f1aa40d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/CodeGenService.cs
@@ -0,0 +1,1167 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Util.LowCode.Front.Code;
+using Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Entity;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.FriendlyException;
+using Furion.ViewEngine;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Newtonsoft.Json;
+using OfficeOpenXml.Drawing;
+using OfficeOpenXml;
+using System;
+using System.Text;
+using System.Web;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.Style;
+using System.Net.WebSockets;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System.Reflection;
+using NetTopologySuite.Noding;
+using System.Xml.Linq;
+using static Npgsql.Replication.PgOutput.Messages.RelationMessage;
+using StackExchange.Profiling.Internal;
+using System.Collections.Generic;
+using System.Data.SqlTypes;
+
+namespace Admin.NET.Application.CodeGen
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚鍣ㄦ湇鍔�
+ /// </summary>
+ [Route("api/[Controller]")]
+ [ApiDescriptionSettings(Name = "CodeGenerate", Order = 100)]
+ public class CodeGenerateService : ICodeGenService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysCodeGen> _sysCodeGenRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+ private readonly IRepository<SysLowCode> _sysLowCodeRep; // 浠g爜鐢熸垚鍣ㄤ粨鍌�
+ private readonly ICodeGenConfigService _codeGenConfigService;
+ private readonly IViewEngine _viewEngine;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysCodeGenRep"></param>
+ /// <param name="sysLowCodeRep"></param>
+ /// <param name="codeGenConfigService"></param>
+ /// <param name="viewEngine"></param>
+ /// <param name="sysMenuRep"></param>
+ public CodeGenerateService(IRepository<SysCodeGen> sysCodeGenRep,
+ IRepository<SysLowCode> sysLowCodeRep,
+ ICodeGenConfigService codeGenConfigService,
+ IViewEngine viewEngine,
+ IRepository<SysMenu> sysMenuRep,
+ ISysExcelTemplateService sysExcelTemplateService)
+ {
+ _sysCodeGenRep = sysCodeGenRep;
+ _sysLowCodeRep = sysLowCodeRep;
+ _codeGenConfigService = codeGenConfigService;
+ _viewEngine = viewEngine;
+ _sysMenuRep = sysMenuRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<SysCodeGen>> QueryCodeGenPageList([FromQuery] CodeGenPageInput input)
+ {
+ //if(input.)
+ //// 鍔犲叆閰嶇疆琛ㄤ腑
+ //_codeGenConfigService.AddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+
+ var tableName = !string.IsNullOrEmpty(input.TableName?.Trim());
+ var busName = !string.IsNullOrEmpty(input.BusName?.Trim());
+ var codeGens = await _sysCodeGenRep.DetachedEntities
+ .Where((tableName, u => EF.Functions.Like(u.TableName, $"%{input.TableName.Trim()}%")))
+ .Where((busName, u => EF.Functions.Like(u.BusName, $"%{input.BusName.Trim()}%")))
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return codeGens;
+ }
+
+ /// <summary>
+ /// 澧炲姞
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task AddCodeGen(AddCodeGenInput input)
+ {
+ var isExist = await _sysCodeGenRep.DetachedEntities.AnyAsync(u => u.TableName == input.TableName);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D1400);
+
+ if (input.LowCodeId != null && input.LowCodeId > 0)
+ {
+ isExist = await _sysCodeGenRep.DetachedEntities.AnyAsync(u => u.LowCodeId == input.LowCodeId);
+ }
+
+ if (!isExist)
+ {
+ var codeGen = input.Adapt<SysCodeGen>();
+ var newCodeGen = await codeGen.InsertNowAsync();
+
+ // 鍔犲叆閰嶇疆琛ㄤ腑
+ await _codeGenConfigService.DelAndAddList(GetColumnList(input), newCodeGen.Entity);
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public Task DeleteCodeGen(List<DeleteCodeGenInput> inputs)
+ {
+ if (inputs == null || inputs.Count < 1) return Task.Run(() => { });
+
+ var taskList = new List<Task>();
+
+ inputs.ForEach(u =>
+ {
+ taskList.Add(_sysCodeGenRep.DeleteAsync(u.Id));
+ // 鍒犻櫎閰嶇疆琛ㄤ腑
+ taskList.Add(_codeGenConfigService.Delete(u.Id));
+ });
+ return Task.WhenAll(taskList);//绛夊緟鎵�鏈変换鍔″畬鎴�
+ }
+
+ /// <summary>
+ /// 鏇存柊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task UpdateCodeGen(UpdateCodeGenInput input)
+ {
+ var isExistObjOther = await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.TableName == input.TableName && u.Id != input.Id);
+ if (isExistObjOther != null)
+ throw Oops.Oh(ErrorCode.D1400);
+
+ var isExistObj = await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (isExistObj == null)
+ throw Oops.Oh(ErrorCode.D1002);
+
+ //鍒ゆ柇濡傛灉鐢熸垚琛ㄥ彉鍖栦簡锛屽氨闇�瑕侀噸缃厤缃〃 銆怑ditby shaocx,2024-04-13銆�
+ var isChangeTableName = false;
+ if (input.TableName != isExistObj.TableName)
+ {
+ isChangeTableName = true;
+ }
+
+ var codeGen = input.Adapt<SysCodeGen>();
+ await codeGen.UpdateAsync();
+
+
+ if (isChangeTableName)
+ {
+ // 鍔犲叆閰嶇疆琛ㄤ腑
+ await _codeGenConfigService.DelAndAddList(GetColumnList(input.Adapt<AddCodeGenInput>()), codeGen);
+ }
+ }
+
+ /// <summary>
+ /// 鍒锋柊閰嶇疆琛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("refresh/{id}")]
+ public void Refresh(long id)
+ {
+ var item = _sysCodeGenRep.Where(x => x.Id == id).FirstOrDefault();
+ // 鍔犲叆閰嶇疆琛ㄤ腑
+ _codeGenConfigService.DelAndAddList(GetColumnList(item.Adapt<AddCodeGenInput>()), item);
+ }
+
+ /// <summary>
+ /// 璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<SysCodeGen> GetCodeGen([FromQuery] QueryCodeGenInput input)
+ {
+ return await _sysCodeGenRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏁版嵁搴撳簱闆嗗悎
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("DatabaseList")]
+ public List<DatabaseOutput> GetDatabaseList()
+ {
+ var DbContextLocators = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(
+ a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))
+ )
+ .Select(x => new DatabaseOutput { DatabaseName = x.Name, DatabaseComment = x.FullName })
+ .ToList();
+
+ return DbContextLocators;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏁版嵁搴撹〃(瀹炰綋)闆嗗悎
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("InformationList")]
+ public List<TableOutput> GetTableList(string dbContextLocatorName)
+ {
+ var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+ if (!string.IsNullOrEmpty(dbContextLocatorName))
+ {
+ var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == dbContextLocatorName).FirstOrDefault();
+
+ dbContext = Db.GetDbContext(dbContentLocator);
+ }
+ // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+ //var entityType = dbContext.Model.GetEntityTypes()瑕佹敼鎴� var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+
+ return dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes().Select(u => new TableOutput
+ {
+ DatabaseName = dbContextLocatorName,
+ TableName = u.GetDefaultTableName(),
+ TableComment = u.GetComment()
+ }).ToList();
+ }
+
+ /// <summary>
+ /// 鏍规嵁琛ㄥ悕鑾峰彇鍒�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("ColumnList/{databaseName}/{tableName}")]
+ public List<TableColumnOuput> GetColumnListByTableName(string databaseName, string tableName)
+ {
+ var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+ if (!string.IsNullOrEmpty(databaseName))
+ {
+ var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == databaseName).FirstOrDefault();
+
+ dbContext = Db.GetDbContext(dbContentLocator);
+ }
+ // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+ var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == tableName);
+ if (entityType == null) return null;
+
+ // 鑾峰彇鍘熷绫诲瀷灞炴��
+ var type = entityType.ClrType;
+ if (type == null) return null;
+
+ // 鎸夊師濮嬬被鍨嬬殑椤哄簭鑾峰彇鎵�鏈夊疄浣撶被鍨嬪睘鎬э紙涓嶅寘鍚鑸睘鎬э紝浼氳繑鍥瀗ull锛�
+ return type.GetProperties().Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+ .Where(p => p != null).Select(p => new TableColumnOuput
+ {
+ ColumnName = p.Name,
+ ColumnKey = p.IsKey().ToString(),
+ DataType = p.PropertyInfo.PropertyType.ToString(),
+ NetType = CodeGenUtil.ConvertDataType(p.PropertyInfo.PropertyType.ToString()),
+ ColumnComment = p.GetComment()
+ }).ToList();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏁版嵁琛ㄥ垪锛堝疄浣撳睘鎬э級闆嗗悎
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public List<TableColumnOuput> GetColumnList([FromQuery] AddCodeGenInput input)
+ {
+ var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+ if (!string.IsNullOrEmpty(input.DatabaseName))
+ {
+ var dbContentLocator = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbContextLocator)))).Where(x => x.Name == input.DatabaseName).FirstOrDefault();
+
+ dbContext = Db.GetDbContext(dbContentLocator);
+ }
+ // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+ var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+ .FirstOrDefault(u => u.ClrType.Name == input.TableName);
+ if (entityType == null) return null;
+
+ // 鑾峰彇鍘熷绫诲瀷灞炴��
+ var type = entityType.ClrType;
+ if (type == null) return null;
+
+ // 鎸夊師濮嬬被鍨嬬殑椤哄簭鑾峰彇鎵�鏈夊疄浣撶被鍨嬪睘鎬э紙涓嶅寘鍚鑸睘鎬э紝浼氳繑鍥瀗ull锛�
+ return type.GetProperties().Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+ .Where(p => p != null)
+ .Select(p => new TableColumnOuput
+ {
+ ColumnName = p.Name,
+ IsNullable = p.IsNullable,
+ ColumnKey = p.IsKey().ToString(),
+ DataType = p.PropertyInfo.PropertyType.ToString(),
+ ColumnComment = p.GetComment()
+ }).ToList();
+ }
+
+ /// <summary>
+ /// 浠g爜鐢熸垚_鏈湴椤圭洰
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("runLocal")]
+ public async Task<dynamic> RunLocal(SysCodeGen input)
+ {
+ return await CommonRun(input, "200");
+ }
+
+ /// <summary>
+ /// 浠g爜鐢熸垚_鍘嬬缉鍖呮柟寮忎笅杞�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("runDown")]
+ public async Task<IActionResult> RunDown(long id)
+ {
+ SysCodeGen input = await _sysCodeGenRep.Where(x => x.Id == id).FirstOrDefaultAsync();
+ var ret = await CommonRun(input, "100");
+ var _path = App.WebHostEnvironment.WebRootPath + @"\" + ret.url;
+
+ var fileName = HttpUtility.UrlEncode($"浠g爜鐢熸垚({ret.fileName}).zip", Encoding.GetEncoding("UTF-8"));
+
+ var path = Path.Combine(_path, "");
+ return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+
+ /// <summary>
+ /// 浠g爜鐢熸垚
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="curGenerateType">200:鐢熸垚鏈湴锛�100锛氱敓鎴愭湰鍦板帇缂╁寘</param>
+ /// <returns></returns>
+ private async Task<dynamic> CommonRun(SysCodeGen input, string curGenerateType)
+ {
+
+
+
+ var templatePathList = GetTemplatePathList();
+ var targetPathList = new List<string>();
+ var zipPath = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "CodeGen", input.TableName);
+ if (curGenerateType.StartsWith('1'))
+ {
+ targetPathList = GetZipPathList(input);
+ if (Directory.Exists(zipPath))
+ Directory.Delete(zipPath, true);
+ }
+ else
+ targetPathList = GetTargetPathList(input);
+
+ var tableFieldList = await _codeGenConfigService.List(new CodeGenConfig() { CodeGenId = input.Id }); // 瀛楁闆嗗悎
+ if (curGenerateType.StartsWith('2'))
+ {
+ CodeGenHelper.ValidateCodeGenConfig(tableFieldList);
+ }
+ for (var i = 0; i < templatePathList.Count; i++)
+ {
+ var tContent = System.IO.File.ReadAllText(templatePathList[i]);
+
+ tableFieldList.ForEach(u =>
+ {
+ u.NetTypeIsNullLableForQueryInput = "?";
+ u.NetTypeIsNullLableForAddEditOutParam = "";
+ switch (u.NetType.ToLower())
+ {
+ case "int":
+ case "int32":
+ case "long":
+ case "guid":
+ case "decimal":
+ case "datetime":
+ case "datetimeoffset":
+ case "bool": //澧炲姞甯冨皵绫诲瀷鐨勬潯浠� 銆怑ditby shaocx,2024-04-07銆�
+ u.NetTypeIsNullLable = "?";
+ if (u.WhetherRequired != "Y")
+ {
+ u.NetTypeIsNullLableForAddEditOutParam = "?";
+ }
+ break;
+ case "string":
+ u.NetTypeIsNullLableForQueryInput = "";
+ break;
+ default://鍏朵粬锛屾瘮濡傛灇涓� 銆怑ditby shaocx,2024-04-07銆�
+ if (u.WhetherRequired != "Y")
+ {
+ u.NetTypeIsNullLableForAddEditOutParam = "?";
+ }
+ break;
+ }
+ u.OriginalColumnName = u.ColumnName;
+ });
+
+ if (i >= 6) // 閫傚簲鍓嶇棣栧瓧姣嶅皬鍐�
+ {
+ tableFieldList.ForEach(u =>
+ {
+ u.ColumnName = u.ColumnName.Substring(0, 1).ToLower() + u.ColumnName[1..];
+ });
+ }
+
+ var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ闆嗗悎
+
+ string FormDesign = "";
+
+ if (input.LowCodeId != null && input.LowCodeId > 0)
+ {
+ FormDesign = _sysLowCodeRep.Where(x => x.Id == input.LowCodeId).Select(x => x.FormDesign).FirstOrDefault();
+ }
+
+ List<Front_Dynamic> dynamicLoad_dict = new List<Front_Dynamic>();
+ Dictionary<string, List<string>> dynamicData = new Dictionary<string, List<string>>();
+
+ if (!string.IsNullOrEmpty(FormDesign))
+ {
+ try
+ {
+ var AllDynamic = FormDesign.ConvertToFront().AllFront().AllDynamic();
+
+ AllDynamic.Where(x => x.Dynamic).Select(x => x.DynamicKey).ToList().ForEach(item =>
+ {
+ dynamicData.Add(item, new List<string>());
+ var d = item.GetDynamic();
+ if (d != null)
+ {
+ if (d.Head == "dict")
+ {
+ dynamicLoad_dict.Add(d);
+ }
+ }
+ });
+ }
+ catch { }
+ }
+
+ try
+ {
+ //鑾峰彇瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+ StringBuilder templateContent = null;
+ //Service鎺у埗鍣ㄧ敓鎴愬鍏ュ姛鑳借嚜瀹氫箟浠g爜 updare by liuwq
+ if (templatePathList[i].IndexOf("Service.cs.vm") >= 0)
+ {
+ templateContent = CreateImportExcelTemplteCode(input, tableFieldList);
+ }
+ var tResult = _viewEngine.RunCompileFromCached(tContent, new
+ {
+
+ input.AuthorName,
+ input.BusName,
+ input.NameSpace,
+ input.ModuleName,//澧炲姞妯″潡鍦板潃 銆怑ditby shaocx,2024-04-07銆�
+ input.ProName,
+ input.DatabaseName,
+ input.IsOnlyQuery,
+ input.IsWhetherImport,
+ ClassName = input.TableName,
+ CamelizeClassName = input.TableName.Substring(0, 1).ToLower() + input.TableName[1..], //棣栧瓧姣嶅皬鍐�
+ QueryWhetherList = queryWhetherList,
+ TableField = tableFieldList,
+ input.LowCodeId,
+ FormDesign,
+ DynamicData = JsonConvert.SerializeObject(dynamicData),
+ DynamicLoad_Dict = dynamicLoad_dict,
+ IsFile = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).Any(),
+ FileTableField = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).ToList(),
+
+ ImportExcelCustomizationContent = templateContent?.ToString()//瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+ }); ;
+
+ var dirPath = new DirectoryInfo(targetPathList[i]).Parent.FullName;
+ if (!Directory.Exists(dirPath))
+ Directory.CreateDirectory(dirPath);
+ System.IO.File.WriteAllText(targetPathList[i], tResult, Encoding.UTF8);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh($"閿欒妯℃澘锛歿templatePathList[i]}銆傞敊璇俊鎭細{ex.Message}銆�");
+ }
+
+
+
+
+
+
+ }
+
+ await AddMenu(input, input.DatabaseName.Substring(0, 5), input.TableName, input.BusName, input.MenuApplication, input.MenuPid, input.ModuleName);
+
+ if (input.IsWhetherImport == true)
+ {
+ //鍒涘缓瀵煎叆妯$増
+ await CreateImportTemplte(input);
+ }
+
+
+
+ // 闈瀂IP鍘嬬缉杩斿洖绌�
+ if (!curGenerateType.StartsWith('1'))
+ return null;
+ else
+ {
+ string downloadPath = zipPath + ".zip";
+ // 鍒ゆ柇鏄惁瀛樺湪鍚屽悕绉版枃浠�
+ if (System.IO.File.Exists(downloadPath))
+ System.IO.File.Delete(downloadPath);
+ System.IO.Compression.ZipFile.CreateFromDirectory(zipPath, downloadPath);
+ //return new { url = $"{App.HttpContext.Request.Scheme}://{App.HttpContext.Request.Host.Value}/CodeGen/{input.TableName}.zip" };
+ return new { url = $@"CodeGen\{input.TableName}.zip", fileName = input.TableName };
+ }
+ }
+
+ //update by liuwq 20240418
+ /// <summary>
+ /// 鍒涘缓瀵煎叆鍔熻兘鑷畾涔夋ā鏉夸唬鐮�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="tableFieldList"></param>
+ /// <returns></returns>
+ private static StringBuilder CreateImportExcelTemplteCode(SysCodeGen input, List<CodeGenConfig> tableFieldList)
+ {
+ StringBuilder templateContent = new StringBuilder();
+ var whetherAddUpdate = tableFieldList.Where(u => u.WhetherAddUpdate == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ澧炴敼闆嗗悎
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine($" var addItem = new {input.TableName}()");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine(" CreatedTime = SysHelper.GetNowTime(),");
+ templateContent.AppendLine(" CreatedUserId = SysHelper.GetUserId(),");
+ templateContent.AppendLine(" CreatedUserName = SysHelper.GetUserName(),");
+ templateContent.AppendLine(" UpdatedTime = SysHelper.GetNowTime(),");
+ templateContent.AppendLine(" UpdatedUserId = SysHelper.GetUserId(),");
+ templateContent.AppendLine(" UpdatedUserName = SysHelper.GetUserName()");
+ templateContent.AppendLine(" };");
+
+
+ templateContent.AppendLine(" #region 瀹氫箟鍙橀噺");
+ foreach (var item in whetherAddUpdate)
+ {
+ templateContent.AppendLine($" var _{item.ColumnName} = \"\";//{item.ColumnComment}");
+ }
+
+ templateContent.AppendLine(" #endregion");
+ templateContent.AppendLine(" ");
+
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine(" #region 鍙栧��");
+ foreach (var item in whetherAddUpdate)
+ {
+ templateContent.AppendLine($" _{item.ColumnName} = row[\"{item.ColumnComment}\"]?.ToString() ;");
+ }
+
+ templateContent.AppendLine(" #endregion");
+ templateContent.AppendLine(" ");
+
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine(" #region 楠岃瘉");
+
+ //鏁板�肩被鍨嬮獙璇�
+ List<string> numericalTypeList = new List<string>()
+ {
+ "int",
+ "long",
+ "decimal"
+ };
+
+
+
+ foreach (var item in whetherAddUpdate)
+ {
+
+
+ //蹇呭~瀛楁楠岃瘉鏄惁涓虹┖
+ if (item.WhetherRequired.Equals("Y"))
+ {
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine($" if (string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}涓嶈兘涓虹┖锛乗");");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" ");
+
+
+ }
+
+
+
+
+ //楠岃瘉鍊兼槸鍚︽湁鏁�
+
+ //楠岃瘉bool鍊�
+ if (item.DtoNetType.Equals("bool"))
+ {
+ templateContent.AppendLine($" if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" if(!_{item.ColumnName}.Equals(\"鏄痋") && !_{item.ColumnName}.Equals(\"鍚"))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" else");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" bool out{item.ColumnName} = _{item.ColumnName}.Equals(\"鏄痋") ? true : false;");
+ templateContent.AppendLine($" addItem.{item.ColumnName} = out{item.ColumnName};");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" ");
+
+ }
+ //楠岃瘉鏋氫妇鍊兼槸鍚︽湁鏁�
+ else if (!string.IsNullOrWhiteSpace(item.DictTypeCode))//瀛楀吀code涓嶄负绌� 鏄娇鐢ㄦ灇涓惧��
+ {
+ templateContent.AppendLine($" if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" {item.DataType} enum{item.ColumnName} = default({item.DataType});");
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine($" if(!Enum.TryParse<{item.DataType}>(_{item.ColumnName}, out enum{item.ColumnName})&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" else");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" addItem.{item.ColumnName} = enum{item.ColumnName};");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine(" }");
+
+ }//楠岃瘉鏁板�兼槸鍚︽湁鏁�
+ else if (numericalTypeList.Any(a => a == item.DtoNetType))
+ {
+
+
+ templateContent.AppendLine($" if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" if (!{item.DtoNetType}.TryParse(_{item.ColumnName}, out {item.DtoNetType} out{item.ColumnName})&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉姝g‘锛乗");");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine($" if (out{item.ColumnName} <= 0&&!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" throw Oops.Oh($\"绗瑊{index}}琛孾{item.ColumnComment}]{{_{item.ColumnName}}}鍊间笉鑳藉皬浜庣瓑浜�0锛乗");");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" else");
+ templateContent.AppendLine(" {");
+ templateContent.AppendLine($" addItem.{item.ColumnName} = out{item.ColumnName};");
+ templateContent.AppendLine(" }");
+ templateContent.AppendLine(" ");
+ templateContent.AppendLine(" }");
+
+ }
+ else
+ {
+ templateContent.AppendLine($" if(!string.IsNullOrEmpty(_{item.ColumnName}))");
+ templateContent.AppendLine(" {");
+
+ //鏃ユ湡鎺т欢
+ if (item.EffectType == "datepicker")
+ {
+ templateContent.AppendLine($" addItem.{item.ColumnName} = Convert.ToDateTime(Convert.ToDateTime(_{item.ColumnName}).ToShortDateString());");
+ }//鏃ユ湡鏃堕棿鎺т欢
+ else if (item.EffectType == "datetimepicker")
+ {
+ templateContent.AppendLine($" addItem.{item.ColumnName} = Convert.ToDateTime(_{item.ColumnName});");
+ }
+ else
+ {
+ templateContent.AppendLine($" addItem.{item.ColumnName} = ({item.DtoNetType})_{item.ColumnName};");
+ }
+ templateContent.AppendLine(" }");
+ }
+
+
+
+
+
+
+
+ }
+
+ templateContent.AppendLine(" #endregion");
+ templateContent.AppendLine(" ");
+
+
+
+ return templateContent;
+ }
+
+ private async Task AddMenu(SysCodeGen input, string menucodePre, string className, string busName, string application, long pid, string _ModuleName)
+ {
+ // 瀹氫箟鑿滃崟缂栫爜鍓嶇紑
+ var codePrefix = menucodePre + "_" + className.ToLower();//鏀逛负鍙栨暟鎹簱瀹氫綅鍣ㄧ殑鍓嶄簲涓瓧姣嶆柟渚垮尯鍒嗕笟鍔� //"dilon_" + className.ToLower();
+
+ // 鍏堝垹闄よ琛ㄥ凡鐢熸垚鐨勮彍鍗曞垪琛�
+ var menus = await _sysMenuRep.DetachedEntities.Where(u => u.Code == codePrefix || u.Code.StartsWith(codePrefix + "_")).ToListAsync();
+ await _sysMenuRep.DeleteAsync(menus);
+
+ // 濡傛灉 pid 涓� 0 璇存槑涓洪《绾ц彍鍗�, 闇�瑕佸垱寤洪《绾х洰褰�
+ if (pid == 0)
+ {
+ //瑙e喅 閫夋嫨鐖剁骇鑿滃崟鈥滈《绾р�濅細澶氱敓鎴愪竴绾ц彍鍗曠殑闂 銆怑ditby shaocx,2024-04-13銆�
+ /*
+ // 鐩綍
+ var menuType0 = new SysMenu
+ {
+ Pid = 0,
+ Pids = "[0],",
+ Name = busName + "绠$悊",
+ Code = codePrefix,
+ Type = MenuType.DIR,
+ Icon = "robot",
+ Router = "/" + className.ToLower(),
+ Component = "PageView",
+ Application = application
+ };
+ pid = _sysMenuRep.InsertNowAsync(menuType0).GetAwaiter().GetResult().Entity.Id;
+ //*/
+ }
+ // 鐢变簬鍚庣画鑿滃崟浼氭湁淇敼, 闇�瑕佸垽鏂笅 pid 鏄惁瀛樺湪, 涓嶅瓨鍦ㄦ姤閿�
+ else if (!await _sysMenuRep.DetachedEntities.AnyAsync(e => e.Id == pid))
+ throw Oops.Oh(ErrorCode.D1505);
+
+ // 鑿滃崟
+ string _pids = "";
+ if (pid == 0)
+ {
+ _pids = "[0],";
+ }
+ else
+ {
+ _pids = "[0],[" + pid + "],";
+ }
+ var menuType1 = new SysMenu
+ {
+ Pid = pid,
+ Pids = _pids,
+ Name = busName,
+ Code = codePrefix + "_mgr",
+ Type = MenuType.MENU,
+ Router = "/" + className.ToLower(),
+ Component = "main/" + _ModuleName + "/" + className + "/index",//澧炲姞 妯″潡鍦板潃鐨勯厤缃�怑ditby shaocx,2024-04-07銆�
+ Application = application,
+ OpenType = MenuOpenType.COMPONENT
+ };
+ var pid1 = _sysMenuRep.InsertNowAsync(menuType1).GetAwaiter().GetResult().Entity.Id;
+
+ // 鎸夐挳-page
+ var menuType2 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "鏌ヨ",
+ Code = codePrefix + "_mgr_page",
+ Type = MenuType.BTN,
+ Permission = className + ":page",
+ Application = application,
+ }.InsertAsync();
+
+ // 鎸夐挳-detail
+ var menuType2_1 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "璇︽儏",
+ Code = codePrefix + "_mgr_detail",
+ Type = MenuType.BTN,
+ Permission = className + ":detail",
+ Application = application,
+ }.InsertAsync();
+
+ if (input.IsOnlyQuery != true)
+ {
+ // 鎸夐挳-add
+ var menuType2_2 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "澧炲姞",
+ Code = codePrefix + "_mgr_add",
+ Type = MenuType.BTN,
+ Permission = className + ":add",
+ Application = application,
+ }.InsertAsync();
+
+ // 鎸夐挳-delete
+ var menuType2_3 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "鍒犻櫎",
+ Code = codePrefix + "_mgr_delete",
+ Type = MenuType.BTN,
+ Permission = className + ":delete",
+ Application = application,
+ }.InsertAsync();
+
+ // 鎸夐挳-edit
+ var menuType2_4 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "缂栬緫",
+ Code = codePrefix + "_mgr_edit",
+ Type = MenuType.BTN,
+ Permission = className + ":edit",
+ Application = application,
+ }.InsertAsync();
+
+ //鎸夐挳-瀵煎叆
+ if (input.IsWhetherImport == true)
+ {
+ var menuType2_6 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "瀵煎叆excel",
+ Code = codePrefix + "_mgr_import_excel",
+ Type = MenuType.BTN,
+ Permission = className + ":importExcel",
+ Application = application,
+ }.InsertAsync();
+ }
+
+ }
+
+
+ var menuType2_5 = new SysMenu
+ {
+ Pid = pid1,
+ Pids = "[0],[" + pid + "],[" + pid1 + "],",
+ Name = busName + "瀵煎嚭excel",
+ Code = codePrefix + "_mgr_export_excel",
+ Type = MenuType.BTN,
+ Permission = className + ":exportExcel",
+ Application = application,
+ }.InsertAsync();
+
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇妯℃澘鏂囦欢璺緞闆嗗悎
+ /// </summary>
+ /// <returns></returns>
+ private List<string> GetTemplatePathList()
+ {
+ var templatePath = App.WebHostEnvironment.WebRootPath + @"\Template\";
+ return new List<string>()
+ {
+ templatePath + "Service.cs.vm",
+ templatePath + "IService.cs.vm",
+ templatePath + "Input.cs.vm",
+ templatePath + "Output.cs.vm",
+ //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+ //templatePath + "Dto.cs.vm",
+ templatePath + "Mapper.cs.vm",
+ templatePath + "index.vue.vm",
+ templatePath + "addForm.vue.vm",
+ templatePath + "editForm.vue.vm",
+ templatePath + "excelForm.vue.vm",
+ templatePath + "Manage.js.vm",
+ };
+ }
+
+ /// <summary>
+ /// 璁剧疆鐢熸垚鏂囦欢璺緞
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ private List<string> GetTargetPathList(SysCodeGen input)
+ {
+ //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+ var backendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName + @"\" + input.NameSpace + @"\Service\" + input.ModuleName + @"\" + input.TableName + @"\";//鍚庣鏂囦欢澶圭埗璺緞
+ var servicePath = backendPath + input.TableName + "Service.cs";
+ var iservicePath = backendPath + "I" + input.TableName + "Service.cs";
+ var inputPath = backendPath + @"Dto\" + input.TableName + "Input.cs";
+ var outputPath = backendPath + @"Dto\" + input.TableName + "Output.cs";
+ //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+ //var viewPath = backendPath + @"Dto\" + input.TableName + "Dto.cs";
+ var mapperPath = backendPath + @"Map\" + input.TableName + "Mapper.cs";
+ //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+ var frontendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\" + input.FrontProName + @"\src\views\main\" + input.ModuleName + @"\";//鍓嶇鏂囦欢澶圭埗璺緞
+ var indexPath = frontendPath + input.TableName + @"\index.vue";
+ var addFormPath = frontendPath + input.TableName + @"\addForm.vue";
+ var editFormPath = frontendPath + input.TableName + @"\editForm.vue";
+ var excelFormPath = frontendPath + input.TableName + @"\excelForm.vue";
+ //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+ var apiJsPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\" + input.FrontProName + @"\src\api\modular\main\" + input.ModuleName + @"\" + input.TableName + "Manage.js";
+
+ return new List<string>()
+ {
+ servicePath,
+ iservicePath,
+ inputPath,
+ outputPath,
+ //涓嶅啀鐢熸垚Dto鏂囦欢 銆怑ditby shaocx,2024-04-20銆�
+ //viewPath,
+ mapperPath,
+ indexPath,
+ addFormPath,
+ editFormPath,
+ excelFormPath,
+ apiJsPath
+ };
+ }
+
+ /// <summary>
+ /// 瀛楃涓查瀛楁瘝灏忓啓
+ /// </summary>
+ /// <param name="str"></param>
+ /// <returns></returns>
+ public string LowercaseFirst(string input)
+ {
+ if (string.IsNullOrEmpty(input))
+ {
+ return input; // 濡傛灉杈撳叆涓虹┖锛屽垯鐩存帴杩斿洖
+ }
+
+ char firstChar = char.ToLower(input[0]); // 灏嗙涓�涓瓧绗﹁浆鎹负灏忓啓
+ string remainder = input.Length > 1 ? input.Substring(1) : ""; // 鑾峰彇鍓╀綑鐨勫瓧绗︿覆閮ㄥ垎
+ return firstChar + remainder; // 杩斿洖棣栧瓧姣嶅皬鍐欑殑瀛楃涓�
+ }
+
+
+ /// <summary>
+ /// 璁剧疆鐢熸垚鏂囦欢璺緞
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ private List<string> GetZipPathList(SysCodeGen input)
+ {
+ var zipPath = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "CodeGen", input.TableName);
+
+ var backendPath = System.IO.Path.Combine(zipPath, input.NameSpace, "Service", input.ModuleName, input.TableName);//鍚庣鏂囦欢澶圭埗璺緞
+ var servicePath = System.IO.Path.Combine(backendPath, input.TableName + "Service.cs");
+ var iservicePath = System.IO.Path.Combine(backendPath, "I" + input.TableName + "Service.cs");
+ var inputPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Input.cs");
+ var outputPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Output.cs");
+ var viewPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Dto.cs");
+ var mapperPath = System.IO.Path.Combine(backendPath, "Dto", input.TableName + "Mapper.cs");
+
+
+ var frontendPath = System.IO.Path.Combine(zipPath, input.FrontProName, "src", "views", "main", input.ModuleName, input.TableName);//鍓嶇鏂囦欢澶圭埗璺緞
+ var indexPath = frontendPath + @"\index.vue";
+ var addFormPath = frontendPath + @"\addForm.vue";
+ var editFormPath = frontendPath + @"\editForm.vue";
+ var excelFormPath = frontendPath + @"\excelForm.vue";
+ //澧炲姞 妯″潡璺緞鐨勫啓鍏� 銆怑ditby shaocx,2024-04-07銆�
+ var _apiJsPath = System.IO.Path.Combine(zipPath, input.FrontProName, "src", "api", "modular", "main", input.ModuleName);//鍓嶇鏂囦欢澶圭埗璺緞
+ var apiJsPath = new DirectoryInfo(_apiJsPath) + @"\" + input.TableName + "Manage.js";
+
+ return new List<string>()
+ {
+ servicePath,
+ iservicePath,
+ inputPath,
+ outputPath,
+ viewPath,
+ mapperPath,
+ indexPath,
+ addFormPath,
+ editFormPath,
+ excelFormPath,
+ apiJsPath
+ };
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁琛ㄥ悕鍒涘缓瀵煎叆妯$増
+ /// </summary>
+ /// <param name="input"></param>
+ private async Task CreateImportTemplte(SysCodeGen input)
+ {
+ string errMsg = string.Empty;
+ //琛ㄥ悕
+ string tableName = input.TableName;
+ var copayPath = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + "\\CommonTemplate.xlsx";
+ string newPath = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\{tableName}{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var tableFieldList = await _codeGenConfigService.List(new CodeGenConfig() { CodeGenId = input.Id }); // 瀛楁闆嗗悎
+ CreatExcel(tableFieldList, copayPath, newPath);
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁瀹炰綋绫诲悕 鐢熸垚瀵煎叆excel妯$増
+ /// </summary>
+ /// <param name="tableFieldList">浠g爜鐢熸垚閫夋嫨閰嶇疆琛ㄧ殑瀛楁</param>
+ /// <param name="copayPath"></param>
+ /// <param name="newPath"></param>
+ private void CreatExcel(List<CodeGenConfig> tableFieldList, string copayPath, string newPath)
+ {
+ string errMsg = string.Empty;
+ try
+ {
+ #region 楠岃瘉鍘熷瀵煎叆妯℃澘鏂囦欢鏄惁瀛樺湪
+ if (!File.Exists(copayPath))
+ {
+ errMsg = $"鐢ㄦ潵澶嶅埗鐢熸垚妯$増鐨凟XCEL鏂囦欢涓嶅瓨鍦�";
+ throw Oops.Oh($"鐢熸垚瀵煎叆妯$増鏂囦欢寮傚父锛歿errMsg}");
+ }
+ #endregion
+
+ //鑾峰彇妯℃澘鏂囦欢
+ FileInfo copyFile = new FileInfo(copayPath);
+
+ // 妫�鏌ユ柊鐢熸垚鐨勫鍏ユā鐗堟枃浠舵槸鍚﹀瓨鍦紝瀛樺湪灏卞垹闄わ紝浠ラ伩鍏嶅彲鑳界殑寮傚父銆�
+ if (File.Exists(newPath))
+ {
+ File.Delete(newPath); // 鍒犻櫎鏂囦欢
+ }
+ //澶嶅埗鍘熷瀵煎叆妯$増锛屽垱寤烘柊鐨勫鍏ユā鐗堟枃浠�
+ copyFile.CopyTo(newPath, true);
+ FileInfo existingFile = new FileInfo(newPath);
+ using (ExcelPackage package = new ExcelPackage(existingFile))
+ {
+ //鑾峰彇妯℃澘鍐呭
+ ExcelWorksheet worksheet = package.Workbook.Worksheets[0];//鑾峰彇绗竴涓獁orksheet
+ //琛屽拰鍒楅兘鏄粠1寮�濮嬶紝鑰屼笉鏄粠0寮�濮嬶紒锛侊紒
+ int _remarkRowIndex = 1;//worksheet 琛岀储寮曪紙璇存槑锛� 娉ㄦ剰锛氶粯璁ゆ槸绗竴琛屾槸瀵煎叆妯$増鐨勮鏄�
+ int _mergeRowCount = _remarkRowIndex;//鍚堝苟琛� 锛堝繀濉瓧娈垫暟閲忥級 榛樿鏄涓�琛屽悎骞�
+ int _titleRowIndex = 2;//worksheet 琛岀储寮曪紙鏍囬锛夋敞鎰忥細榛樿鏄涓�琛屾槸瀵煎叆妯$増鐨勬爣棰�
+ int _cellIndex = 1;//worksheet 鍒楃储寮� 娉ㄦ剰锛氶粯璁ゆ槸绗竴鍒楀紑濮嬭缃鍏ユā鐗堢殑鏍囬
+
+ //妯$増绗竴鍒椾綔涓烘ā鐗堜娇鐢紝鎵�鏈夋柊澧炵殑鍒楁牱寮忔姤閿欎竴鑷�
+ var templateCell = worksheet.Cells[_titleRowIndex, _cellIndex];
+
+ string _remark = string.Empty; //绗竴琛屾坊鍔犺鏄庯紝娉ㄦ剰鎹㈣銆�
+
+ //鑾峰彇瑕佸鐞嗙殑浠g爜鐢熸垚閰嶇疆鐨勬槸澧炴敼鐨勬ā鐗堝瓧娈�
+ var showCodeGenConfigs = tableFieldList.Where(w => w.WhetherAddUpdate.Equals("Y")).ToList();
+ int _mergeCellsCount = showCodeGenConfigs.Count();//鍚堝苟鍒楋紙妯$増璧嬪�肩殑鏍囬鍒楁暟锛�
+ //鑾峰彇蹇呭~瀛楁
+
+ //鍒涘缓妯$増璇存槑
+ StringBuilder _remarkContentBuilder = GetParseTemplateHint(showCodeGenConfigs);
+ string _remarkContent = _remarkContentBuilder.ToString();
+
+ #region 鍚堝苟鍗曞厓鏍�
+ //鍚堝苟鍗曞厓鏍硷紝鍚堝苟琛屽拰鍒椼�傞粯璁ゆ槸鍚堝苟绗竴琛岀殑鎵�鏈夋爣棰樺垪
+ var cellRange = worksheet.Cells[1, 1, _mergeRowCount, _mergeCellsCount];
+
+ cellRange.Value = _remarkContent;//鍚堝苟鍗曞厓鏍煎悗鐨勫唴瀹硅祴鍊�
+ var mergeCell = cellRange.Merge = true;//鍚堝苟
+ int rowHeight = GetRowHeightBasedOnContent(showCodeGenConfigs.Count()); // 鏍规嵁鍐呭璁$畻琛岄珮锛堣繖閲岄渶瑕佷綘鑷繁瀹炵幇閫昏緫锛�
+ worksheet.Row(_remarkRowIndex).Height = rowHeight; // 璁剧疆琛岄珮锛屾敞鎰廍PPlus鐨勫崟浣嶄笉鍚岋紝闇�瑕佽浆鎹�
+
+ #endregion
+
+ //寰幆鍒涘缓妯$増鏍囬鍒�
+ foreach (var item in showCodeGenConfigs)
+ {
+ var currentCell = worksheet.Cells[_titleRowIndex, _cellIndex];
+ //缁欐柊妯$増鍒楁爣棰樿祴鍊�
+ currentCell.Value = item.ColumnComment;
+ //澶嶅埗鎷疯礉鐨別xcel妯$増鍒楋紝缁欐柊妯$増鍒楁牱寮忚祴鍊�
+ currentCell.StyleID = templateCell.StyleID;
+ // worksheet.Column(_cellIndex).AutoFit();//瀹藉害鑷�傚簲
+
+ _cellIndex++;
+ }
+
+
+ package.Save();//淇濆瓨
+ }
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh($"鐢熸垚瀵煎叆妯$増鏂囦欢寮傚父锛岃鏌ョ湅绯荤粺鏃ュ織");
+ }
+ finally { }
+ }
+
+
+
+
+
+
+ // 杩欓噷鏄竴涓亣璁剧殑鏂规硶锛岀敤浜庢牴鎹崟鍏冩牸鍐呭璁$畻琛岄珮銆備綘闇�瑕佹牴鎹疄闄呮儏鍐垫潵瀹炵幇杩欎釜閫昏緫銆�
+ private static int GetRowHeightBasedOnContent(int lineCount)
+ {
+ // 杩欓噷鍙槸涓�涓ず渚嬮�昏緫锛屼綘鍙兘闇�瑕佹洿澶嶆潅鐨勭畻娉曟潵鍐冲畾鍚堥�傜殑琛岄珮銆�
+
+ return (lineCount + 3) * 20; //
+ }
+
+
+ private StringBuilder GetParseTemplateHint(List<CodeGenConfig> requiredTableFieldList)
+ {
+ StringBuilder _remarkContentBuilder = new StringBuilder();
+ _remarkContentBuilder.AppendLine("");
+ _remarkContentBuilder.AppendLine("1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲��");
+ _remarkContentBuilder.AppendLine("2.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻��");
+ _remarkContentBuilder.AppendLine("3.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��");
+ _remarkContentBuilder.AppendLine("");
+ _remarkContentBuilder.AppendLine("");
+
+ Dictionary<string, string> typeNameDict = new()
+ {
+ { "string", "鏂囨湰銆�"},
+ { "int", "鏁板瓧銆�"},
+ { "long", "鏁板瓧銆�"},
+ { "decimal", "灏忔暟銆�"},
+ { "bool", "甯冨皵銆傜ず渚嬶細鏄�佸惁銆�"},
+
+ };
+ Dictionary<string, string> effectTypeDict = new()
+ {
+ { "datepicker", "鏃ユ湡銆� 绀轰緥: 2023/3/1"},
+ { "datetimepicker", "鏃ユ湡鏃堕棿銆傜ず渚�: 2023/3/1 12:00:00"},
+
+ };
+ requiredTableFieldList.ForEach(x =>
+ {
+ string text = "";
+ text += x.ColumnComment + "(" + (x.WhetherRequired.Equals("Y") ? "蹇呭~" : "闈炲繀濉�") + "): ";
+ if (effectTypeDict.ContainsKey(x.EffectType))
+ {
+ text += effectTypeDict[x.EffectType];
+ }
+ else if (typeNameDict.ContainsKey(x.DtoNetType))
+ {
+ text += typeNameDict[x.DtoNetType];
+ }
+ else
+ {
+ text += ("娉ㄦ剰锛氱被鍨嬫湭鑳借瘑鍒嚭鏉ワ紝闇�瑕佽嚜宸辩淮鎶わ紒锛侊紒銆�");
+ }
+ _remarkContentBuilder.AppendLine(text);
+ });
+
+ return _remarkContentBuilder;
+
+ }
+
+
+
+ /// <summary>
+ /// 鏍规嵁灞炴�у悕绉板垽鏂槸鍚︽槸鏋氫妇绫诲瀷
+ /// </summary>
+ /// <param name="type"></param>
+ /// <param name="propertyName"></param>
+ /// <returns></returns>
+ /// <exception cref="ArgumentException"></exception>
+ public static bool IsEnumProperty(Type type, string propertyName)
+ {
+ PropertyInfo propertyInfo = type.GetProperty(propertyName);
+ if (propertyInfo == null)
+ {
+ throw new ArgumentException("Property not found", nameof(propertyName));
+ }
+ return propertyInfo.PropertyType.IsEnum;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs
new file mode 100644
index 0000000..51cb2d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenConfig.cs
@@ -0,0 +1,179 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚璇︾粏閰嶇疆鍙傛暟
+ /// </summary>
+ public class CodeGenConfig
+ {
+
+ /// <summary>
+ /// 鎵�灞炵敓鎴愪富琛�
+ /// </summary>
+ ///
+ public CodeGenOutput CodeGen { get; set; }
+ /// <summary>
+ /// 涓婚敭Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 浠g爜鐢熸垚涓昏〃ID
+ /// </summary>
+ public long CodeGenId { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳瓧娈靛悕
+ /// </summary>
+ public string ColumnName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳瓧娈靛悕
+ /// </summary>
+ public string OriginalColumnName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳瓧娈靛悕(棣栧瓧姣嶅皬鍐�)
+ /// </summary>
+ public string LowerColumnName => string.IsNullOrWhiteSpace(ColumnName)
+ ? null
+ : ColumnName.Substring(0, 1).ToLower() + ColumnName[1..];
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ public string ColumnComment { get; set; }
+
+ /// <summary>
+ /// .NET绫诲瀷
+ /// </summary>
+ public string NetType { get; set; }
+
+ /// <summary>
+ /// .NET绫诲瀷
+ /// </summary>
+ public string DtoNetType { get; set; }
+
+ /// <summary>
+ /// .NET绫诲瀷鏄惁鏄�肩被鍨�
+ /// </summary>
+ public string NetTypeIsNullLable { get; set; }
+
+
+ /// <summary>
+ /// 鏌ヨ鍙傛暟鍙负null涓撶敤
+ /// </summary>
+ public string NetTypeIsNullLableForQueryInput { get; set; }
+
+
+ /// <summary>
+ /// 銆愭柊澧炪�佺紪杈戙�佽繑鍥炴煡璇㈢粨鏋滅被銆� 鍙傛暟鍙负null涓撶敤
+ /// </summary>
+ public string NetTypeIsNullLableForAddEditOutParam { get; set; }
+
+
+ /// <summary>
+ /// 浣滅敤绫诲瀷锛堝瓧鍏革級
+ /// </summary>
+ public string EffectType { get; set; }
+
+ /// <summary>
+ /// 澶栭敭瀹炰綋鍚嶇О
+ /// </summary>
+ public string FkEntityName { get; set; }
+
+ /// <summary>
+ /// 澶栭敭瀹炰綋鍚嶇О(棣栧瓧姣嶅皬鍐�)
+ /// </summary>
+ public string LowerFkEntityName => string.IsNullOrWhiteSpace(FkEntityName)
+ ? null
+ : FkEntityName.Substring(0, 1).ToLower() + FkEntityName[1..];
+
+ /// <summary>
+ /// 澶栭敭鏄剧ず瀛楁
+ /// </summary>
+ public string FkColumnName { get; set; }
+
+ /// <summary>
+ /// 澶栭敭鏄剧ず瀛楁(棣栧瓧姣嶅皬鍐�)
+ /// </summary>
+ public string LowerFkColumnName => string.IsNullOrWhiteSpace(FkColumnName)
+ ? null
+ : (FkColumnName.Substring(0, 1).ToLower() + FkColumnName[1..]);
+
+ /// <summary>
+ /// 澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+ /// </summary>
+ public string FkColumnNetType { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀code
+ /// </summary>
+ public string DictTypeCode { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+ /// </summary>
+ public string WhetherRetract { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~锛堝瓧鍏革級
+ /// </summary>
+ public string WhetherRequired { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄煡璇㈡潯浠�
+ /// </summary>
+ public string QueryWhether { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鏂瑰紡
+ /// </summary>
+ public string QueryType { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄剧ず
+ /// </summary>
+ public string WhetherTable { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鎺掑簭鏄剧ず
+ /// </summary>
+ public string WhetherOrderBy { get; set; }
+
+ /// <summary>
+ /// 澧炴敼
+ /// </summary>
+ public string WhetherAddUpdate { get; set; }
+
+ /// <summary>
+ /// 涓诲閿�
+ /// </summary>
+ public string ColumnKey { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+ /// </summary>
+ public string DataType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄�氱敤瀛楁
+ /// </summary>
+ public string WhetherCommon { get; set; }
+
+ /// <summary>
+ /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+ /// </summary>
+ public string ShowTitleMinWidth { get; set; }
+
+ /// <summary>
+ /// 鏄惁鑱斿悎涓婚敭
+ /// </summary>
+ public string WhetherUnionKey { get; set; }
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs
new file mode 100644
index 0000000..691280e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenInput.cs
@@ -0,0 +1,234 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚鍙傛暟绫�
+ /// </summary>
+ public class CodeGenPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ public string TableName { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddCodeGenInput
+ {
+ /// <summary>
+ /// 浣庝唬鐮佹ā鍧楁潵婧�
+ /// </summary>
+ public long? LowCodeId { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撹〃鍚嶄笉鑳戒负绌�")]
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ /// </summary>
+ [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙槸鏌ヨ
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁鍙槸鏌ヨ涓嶈兘涓虹┖")]
+ public bool IsOnlyQuery { get; set; }
+
+ /// <summary>
+ /// 鍓嶇椤圭洰鍚�
+ /// </summary>
+ [Required(ErrorMessage = "鍓嶇椤圭洰鍚嶄笉鑳戒负绌�")]
+ public string FrontProName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟鐖剁骇
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟鐖剁骇涓嶈兘涓虹┖")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ /// </summary>
+ public string TableComment { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏀寔瀵煎叆
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁鏀寔瀵煎叆")]
+ public bool IsWhetherImport { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteCodeGenInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateCodeGenInput
+ {
+ /// <summary>
+ /// 浠g爜鐢熸垚鍣↖d
+ /// </summary>
+ [Required(ErrorMessage = "浠g爜鐢熸垚鍣↖d涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撹〃鍚嶄笉鑳戒负绌�")]
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ /// </summary>
+ [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+ public string ModuleName { get; set; }
+
+
+ /// <summary>
+ /// 鏄惁鍙槸鏌ヨ
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁鍙槸鏌ヨ涓嶈兘涓虹┖")]
+ public bool IsOnlyQuery { get; set; }
+
+ /// <summary>
+ /// 鍓嶇椤圭洰鍚�
+ /// </summary>
+ [Required(ErrorMessage = "鍓嶇椤圭洰鍚嶄笉鑳戒负绌�")]
+ public string FrontProName { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟鐖剁骇
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟鐖剁骇涓嶈兘涓虹┖")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ /// </summary>
+ public string TableComment { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏀寔瀵煎叆
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁鏀寔瀵煎叆")]
+ public bool IsWhetherImport { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryCodeGenInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs
new file mode 100644
index 0000000..c47cf10
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenModel.cs
@@ -0,0 +1,91 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚鍙傛暟绫�
+ /// </summary>
+ public class CodeGenModel
+ {
+ /// <summary>
+ /// 浠g爜鐢熸垚鍣↖d
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 绋嬪簭闆�
+ /// </summary>
+ public string ProName
+ {
+ get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+ }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鍓嶇鏌ヨ鏉′欢闆嗗悎
+ /// </summary>
+ public List<CodeGenConfig> QueryWhetherList { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ瓧娈甸泦鍚�
+ /// </summary>
+ public List<CodeGenConfig> TableField { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍖呭悕
+ /// </summary>
+ public string PackageName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ /// </summary>
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ /// </summary>
+ public string TableComment { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟鐖剁骇
+ /// </summary>
+ public long MenuPid { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs
new file mode 100644
index 0000000..3dc5974
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/CodeGenOutput.cs
@@ -0,0 +1,68 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚鍙傛暟绫�
+ /// </summary>
+ public class CodeGenOutput
+ {
+ /// <summary>
+ /// 浠g爜鐢熸垚鍣↖d
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍖呭悕
+ /// </summary>
+ public string PackageName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚嶏紙涓氬姟浠g爜鍖呭悕绉帮級
+ /// </summary>
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鍔熻兘鍚嶏紙鏁版嵁搴撹〃鍚嶇О锛�
+ /// </summary>
+ public string TableComment { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟鐖剁骇
+ /// </summary>
+ public long MenuPid { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs
new file mode 100644
index 0000000..4bf8143
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/DatabaseOutput.cs
@@ -0,0 +1,28 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏁版嵁搴撳簱鍒楄〃鍙傛暟
+ /// </summary>
+ public class DatabaseOutput
+ {
+ /// <summary>
+ /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public string CreateTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public string UpdateTime { get; set; }
+
+ /// <summary>
+ /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ /// </summary>
+ public string DatabaseComment { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs
new file mode 100644
index 0000000..138eb2a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableColumnOuput.cs
@@ -0,0 +1,44 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍒�
+ /// </summary>
+ public class TableColumnOuput
+ {
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ public string ColumnName { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙负NULL 銆怑ditby shaocx,2024-04-20銆�
+ /// </summary>
+ public bool IsNullable { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撲腑绫诲瀷
+ /// </summary>
+ public string DataType { get; set; }
+
+ /// <summary>
+ /// .NET瀛楁绫诲瀷
+ /// </summary>
+ public string NetType { get; set; }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ public string ColumnComment { get; set; }
+
+ /// <summary>
+ /// 涓诲閿�
+ /// </summary>
+ public string ColumnKey { get; set; }
+
+
+ /// <summary>
+ /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+ /// </summary>
+ public string ShowTitleMinWidth { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs
new file mode 100644
index 0000000..db0d039
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/TableOutput.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍒楄〃鍙傛暟
+ /// </summary>
+ public class TableOutput
+ {
+ /// <summary>
+ /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ /// </summary>
+ public string DatabaseComment { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public string CreateTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public string UpdateTime { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ /// </summary>
+ public string TableComment { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs
new file mode 100644
index 0000000..f2be9c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/Dto/XnCodeGenOutput.cs
@@ -0,0 +1,55 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class XnCodeGenOutput
+ {
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚嶏紙缁忚繃缁勮鐨勶級
+ /// </summary>
+ public string TableNameAss { get; set; }
+
+ /// <summary>
+ /// 浠g爜鍖呭悕
+ /// </summary>
+ public string PackageName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏃堕棿锛坰tring绫诲瀷鐨勶級
+ /// </summary>
+ public string CreateTimestring { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃涓瓧娈甸泦鍚�
+ /// </summary>
+ public List<SysCodeGenConfig> ConfigList { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ public string BusName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs
new file mode 100644
index 0000000..5260377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenConfigService.cs
@@ -0,0 +1,54 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ICodeGenConfigService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Add(CodeGenConfig input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="tableColumnOuputList"></param>
+ /// <param name="codeGenerate"></param>
+ /// <returns></returns>
+ Task DelAndAddList(List<TableColumnOuput> tableColumnOuputList, SysCodeGen codeGenerate);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="codeGenId"></param>
+ /// <returns></returns>
+ Task Delete(long codeGenId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysCodeGenConfig> Detail([FromQuery] CodeGenConfig input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<CodeGenConfig>> List([FromQuery] CodeGenConfig input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="inputList"></param>
+ /// <returns></returns>
+ Task Update(List<CodeGenConfig> inputList);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs
new file mode 100644
index 0000000..b89607e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/CodeGen/ICodeGenService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application.CodeGen
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ICodeGenService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddCodeGen(AddCodeGenInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ Task DeleteCodeGen(List<DeleteCodeGenInput> inputs);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysCodeGen> GetCodeGen([FromQuery] QueryCodeGenInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ List<TableColumnOuput> GetColumnList(AddCodeGenInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="dbContextLocatorName"></param>
+ /// <returns></returns>
+ List<TableOutput> GetTableList(string dbContextLocatorName);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysCodeGen>> QueryCodeGenPageList([FromQuery] CodeGenPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> RunLocal(SysCodeGen input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<IActionResult> RunDown(long id);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateCodeGen(UpdateCodeGenInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs
new file mode 100644
index 0000000..28b14d2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/Dto/ConfigInput.cs
@@ -0,0 +1,133 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍙傛暟閰嶇疆
+ /// </summary>
+ public class ConfigPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ /// </summary>
+ public virtual string GroupCode { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddConfigInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鍙傛暟缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 灞炴�у��
+ /// </summary>
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+ /// </summary>
+ public string SysFlag { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+
+ /// <summary>
+ /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ /// </summary>
+ public string GroupCode { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteConfigInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateConfigInput
+ {
+ /// <summary>
+ /// 搴旂敤Id
+ /// </summary>
+ [Required(ErrorMessage = "搴旂敤Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鍙傛暟鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鍙傛暟缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 灞炴�у��
+ /// </summary>
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+ /// </summary>
+ public string SysFlag { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+
+ /// <summary>
+ /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ /// </summary>
+ public string GroupCode { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryConfigInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs
new file mode 100644
index 0000000..93404bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/ISysConfigService.cs
@@ -0,0 +1,78 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysConfigService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddConfig(AddConfigInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteConfig(DeleteConfigInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysConfig> GetConfig([FromQuery] QueryConfigInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<SysConfig>> GetConfigList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysConfig>> QueryConfigPageList([FromQuery] ConfigPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateConfig(UpdateConfigInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<bool> GetDemoEnvFlag();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<bool> GetCaptchaOpenFlag();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="code"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ Task UpdateConfigCache(string code, string value);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<bool> GetEnableSingleLoginFlag();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs
new file mode 100644
index 0000000..af54470
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Config/SysConfigService.cs
@@ -0,0 +1,191 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺鍙傛暟閰嶇疆鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Config", Order = 100)]
+ [Route("api")]
+ public class SysConfigService : ISysConfigService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysConfig> _sysConfigRep; // 鍙傛暟閰嶇疆琛ㄤ粨鍌�
+ private readonly ISysCacheService _sysCacheService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysConfigRep"></param>
+ /// <param name="sysCacheService"></param>
+ public SysConfigService(IRepository<SysConfig> sysConfigRep, ISysCacheService sysCacheService)
+ {
+ _sysConfigRep = sysConfigRep;
+ _sysCacheService = sysCacheService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇绯荤粺鍙傛暟閰嶇疆
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysConfig/page")]
+ public async Task<PageResult<SysConfig>> QueryConfigPageList([FromQuery] ConfigPageInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var groupCode = !string.IsNullOrEmpty(input.GroupCode?.Trim());
+ var configs = await _sysConfigRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+ (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+ (groupCode, u => EF.Functions.Like(u.GroupCode, $"%{input.GroupCode.Trim()}%")))
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .OrderBy(PageInputOrder.OrderBuilder(input))
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return configs;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺鍙傛暟閰嶇疆鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysConfig/list")]
+ public async Task<List<SysConfig>> GetConfigList()
+ {
+ return await _sysConfigRep.DetachedEntities.Where(u => u.Status != CommonStatus.DELETED).ToListAsync();
+ }
+
+ /// <summary>
+ /// 澧炲姞绯荤粺鍙傛暟閰嶇疆
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysConfig/add")]
+ public async Task AddConfig(AddConfigInput input)
+ {
+ var isExist = await _sysConfigRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D9000);
+
+ var config = input.Adapt<SysConfig>();
+ await config.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎绯荤粺鍙傛暟閰嶇疆
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysConfig/delete")]
+ public async Task DeleteConfig(DeleteConfigInput input)
+ {
+ var config = await _sysConfigRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ // 绂佹鍒犻櫎绯荤粺鍙傛暟
+ //if (config.SysFlag == YesOrNot.Y.ToString())
+ // throw Oops.Oh(ErrorCode.D9001);
+
+ var deleteEntity = await config.DeleteNowAsync();
+ //鍒犻櫎缂撳瓨
+ await _sysCacheService.DelCacheKey(deleteEntity.Entity.Code);
+ }
+
+ /// <summary>
+ /// 鏇存柊绯荤粺鍙傛暟閰嶇疆
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysConfig/edit")]
+ public async Task UpdateConfig(UpdateConfigInput input)
+ {
+ var isExist = await _sysConfigRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D9000);
+
+ var config = input.Adapt<SysConfig>();
+ await config.UpdateAsync(ignoreNullValues: true);
+ //鏇存柊缂撳瓨
+ var value = config != null ? config.Value : "";
+ await _sysCacheService.SetStringAsync(input.Code, value);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺鍙傛暟閰嶇疆
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysConfig/detail")]
+ public async Task<SysConfig> GetConfig([FromQuery] QueryConfigInput input)
+ {
+ return await _sysConfigRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇閰嶇疆淇℃伅
+ /// </summary>
+ /// <param name="code"></param>
+ /// <returns></returns>
+ private async Task<string> GetConfigCache(string code)
+ {
+ var value = await _sysCacheService.GetStringAsync(code);
+ if (string.IsNullOrEmpty(value))
+ {
+ var config = await _sysConfigRep.DetachedEntities.FirstOrDefaultAsync(u => u.Code == code);
+ value = config != null ? config.Value : "";
+ await _sysCacheService.SetStringAsync(code, value);
+ }
+ return value;
+ }
+
+ /// <summary>
+ /// 鏇存柊閰嶇疆缂撳瓨
+ /// </summary>
+ /// <param name="code"></param>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public async Task UpdateConfigCache(string code, string value)
+ {
+ await _sysCacheService.SetStringAsync(code, value);
+ }
+
+ /// <summary>
+ /// 鑾峰彇婕旂ず鐜寮�鍏虫槸鍚﹀紑鍚紝榛樿涓篺alse
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<bool> GetDemoEnvFlag()
+ {
+ var value = await GetConfigCache("DILON_DEMO_ENV_FLAG");
+ return bool.Parse(value);
+ }
+
+ /// <summary>
+ /// 鑾峰彇楠岃瘉鐮佸紑鍏虫爣璇�
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<bool> GetCaptchaOpenFlag()
+ {
+ var value = await GetConfigCache("DILON_CAPTCHA_OPEN");
+ return bool.Parse(value);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曠敤鎴风櫥褰曞紑鍏虫爣璇�
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<bool> GetEnableSingleLoginFlag()
+ {
+ var value = await GetConfigCache("DILON_ENABLE_SINGLE_LOGIN");
+ return bool.Parse(value);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs
new file mode 100644
index 0000000..8c39247
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataInput.cs
@@ -0,0 +1,161 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DataValidation;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀鍊煎弬鏁�
+ /// </summary>
+ public class DictDataPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryDictDataListInput
+ {
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+ public long TypeId { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryDictDataListByCodeInput
+ {
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Code
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Code涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddDictDataInput
+ {
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀鍊间笉鑳戒负绌�")]
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀鍊肩紪鐮佷笉鑳戒负绌�")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteDictDataInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateDictDataInput
+ {
+ /// <summary>
+ /// 瀛楀吀鍊糏d
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀鍊糏d涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖"), DataValidation(ValidationTypes.Numeric)]
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀鍊间笉鑳戒负绌�")]
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀鍊肩紪鐮佷笉鑳戒负绌�")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChageStateDictDataInput : BaseId
+ {
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryDictDataInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs
new file mode 100644
index 0000000..1bc11c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictDataOutput.cs
@@ -0,0 +1,45 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀鍊煎弬鏁�
+ /// </summary>
+ public class DictDataOutput
+ {
+ /// <summary>
+ /// 瀛楀吀Id
+ /// </summary>
+ public virtual long Id { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs
new file mode 100644
index 0000000..7e1852d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTreeOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑鏍�
+ /// </summary>
+ public class DictTreeOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 缂栫爜-瀵瑰簲瀛楀吀鍊肩殑缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О-瀵瑰簲瀛楀吀鍊肩殑value
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛愯妭鐐归泦鍚�
+ /// </summary>
+ public List<DictTreeOutput> Children { get; set; } = new List<DictTreeOutput>();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs
new file mode 100644
index 0000000..7ac5c85
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/Dto/DictTypeInput.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀绫诲瀷鍙傛暟
+ /// </summary>
+ public class DictTypePageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddDictTypeInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteDictTypeInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateDictTypeInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChangeStateDictTypeInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DropDownDictTypeInput
+ {
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryDictTypeInfoInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs
new file mode 100644
index 0000000..e0bc605
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictDataService.cs
@@ -0,0 +1,74 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysDictDataService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddDictData(AddDictDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ChangeDictDataStatus(ChageStateDictDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="dictTypeId"></param>
+ /// <returns></returns>
+ Task DeleteByTypeId(long dictTypeId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteDictData(DeleteDictDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysDictData> GetDictData([FromQuery] QueryDictDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<SysDictData>> GetDictDataList([FromQuery] QueryDictDataListInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="dictTypeId"></param>
+ /// <returns></returns>
+ Task<List<SysDictData>> GetDictDataListByDictTypeId(long dictTypeId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<DictDataOutput>> QueryDictDataPageList([FromQuery] DictDataPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateDictData(UpdateDictDataInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs
new file mode 100644
index 0000000..a46272d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/ISysDictTypeService.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysDictTypeService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddDictType(AddDictTypeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ChangeDictTypeStatus(ChangeStateDictTypeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteDictType(DeleteDictTypeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<DictTreeOutput>> GetDictTree();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysDictType> GetDictType([FromQuery] QueryDictTypeInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<SysDictData>> GetDictTypeDropDown([FromQuery] DropDownDictTypeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<SysDictType>> GetDictTypeList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysDictType>> QueryDictTypePageList([FromQuery] DictTypePageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateDictType(UpdateDictTypeInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs
new file mode 100644
index 0000000..0264a42
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictDataService.cs
@@ -0,0 +1,196 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀鍊兼湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings(Name = "DictData", Order = 100)]
+ [AllowAnonymous]
+ [Route("api")]
+ public class SysDictDataService : ISysDictDataService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictData> _sysDictDataRep; // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+ private readonly IRepository<SysDictType> _sysDictTypeRep; // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="sysDictTypeRep"></param>
+ public SysDictDataService(IRepository<SysDictData> sysDictDataRep, IRepository<SysDictType> sysDictTypeRep)
+ {
+ _sysDictDataRep = sysDictDataRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀛楀吀鍊�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysDictData/page")]
+ public async Task<PageResult<DictDataOutput>> QueryDictDataPageList([FromQuery] DictDataPageInput input)
+ {
+ bool supperAdmin = CurrentUserInfo.IsSuperAdmin;
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var value = !string.IsNullOrEmpty(input.Value?.Trim());
+ var dictDatas = await _sysDictDataRep.DetachedEntities
+ .Where(u => u.TypeId == input.TypeId)
+ .Where((code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+ (value, u => EF.Functions.Like(u.Value, $"%{input.Value.Trim()}%")))
+ .Where(u => (u.Status != CommonStatus.DELETED && !supperAdmin) || (u.Status <= CommonStatus.DELETED && supperAdmin))
+ .OrderBy(u => u.Sort)
+ .ProjectToType<DictDataOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return dictDatas;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysDictData/list")]
+ public async Task<List<SysDictData>> GetDictDataList([FromQuery] QueryDictDataListInput input)
+ {
+ return await _sysDictDataRep.DetachedEntities.Where(u => u.TypeId == input.TypeId)
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .OrderBy(u => u.Sort)
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏌愪釜瀛楀吀绫诲瀷涓嬪瓧鍏稿�煎垪琛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysDictData/listbycode")]
+ public async Task<List<Front_Option>> GetDictDataListByCode([FromQuery] QueryDictDataListByCodeInput input)
+ {
+ var typeid = await _sysDictTypeRep.Where(x => x.Code == input.Code).Select(x => x.Id).FirstOrDefaultAsync();
+
+ return await _sysDictDataRep.DetachedEntities.Where(u => u.TypeId == typeid)
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .OrderBy(u => u.Sort)
+ .Select(u => new Front_Option() { Label = u.Value, Value = u.Code })
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 澧炲姞瀛楀吀鍊�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictData/add")]
+ public async Task AddDictData(AddDictDataInput input)
+ {
+ var isExist = await _sysDictDataRep.AnyAsync(u => (u.Code == input.Code || u.Value == input.Value) && u.TypeId == input.TypeId, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D3003);
+
+ var dictData = input.Adapt<SysDictData>();
+ await _sysDictDataRep.InsertAsync(dictData);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛楀吀鍊�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictData/delete")]
+ public async Task DeleteDictData(DeleteDictDataInput input)
+ {
+ var dictData = await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (dictData == null) throw Oops.Oh(ErrorCode.D3004);
+ if (dictData.Status == CommonStatus.DELETED)
+ {
+ await dictData.DeleteAsync();
+ }
+ else
+ {
+ dictData.Status = CommonStatus.DELETED;
+ dictData.IsDeleted = false;
+ }
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛楀吀鍊�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictData/edit")]
+ public async Task UpdateDictData(UpdateDictDataInput input)
+ {
+ var isExist = await _sysDictDataRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3004);
+
+ // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+ isExist = await _sysDictDataRep.AnyAsync(u => (u.Value == input.Value || u.Code == input.Code) && u.TypeId == input.TypeId && u.Id != input.Id, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D3003);
+
+ var dictData = input.Adapt<SysDictData>();
+ await _sysDictDataRep.UpdateAsync(dictData, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 瀛楀吀鍊艰鎯�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysDictData/detail")]
+ public async Task<SysDictData> GetDictData([FromQuery] QueryDictDataInput input)
+ {
+ return await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+ }
+
+ /// <summary>
+ /// 淇敼瀛楀吀鍊肩姸鎬�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictData/changeStatus")]
+ public async Task ChangeDictDataStatus(ChageStateDictDataInput input)
+ {
+ var dictData = await _sysDictDataRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (dictData == null) throw Oops.Oh(ErrorCode.D3004);
+
+ if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+ throw Oops.Oh(ErrorCode.D3005);
+
+ dictData.Status = input.Status;
+ dictData.IsDeleted = false;;
+ }
+
+ /// <summary>
+ /// 鏍规嵁瀛楀吀绫诲瀷Id鑾峰彇瀛楀吀鍊奸泦鍚�
+ /// </summary>
+ /// <param name="dictTypeId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<SysDictData>> GetDictDataListByDictTypeId(long dictTypeId)
+ {
+ return await _sysDictDataRep.DetachedEntities.Where(u => u.SysDictType.Id == dictTypeId)
+ .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛楀吀涓嬫墍鏈夊��
+ /// </summary>
+ /// <param name="dictTypeId"></param>
+ [NonAction]
+ public async Task DeleteByTypeId(long dictTypeId)
+ {
+ var dictDatas = await _sysDictDataRep.Where(u => u.TypeId == dictTypeId).ToListAsync();
+ await _sysDictDataRep.DeleteAsync(dictDatas);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs
new file mode 100644
index 0000000..29ed836
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Dict/SysDictTypeService.cs
@@ -0,0 +1,187 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛楀吀绫诲瀷鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "DictType", Order = 100)]
+ [AllowAnonymous]
+ [Route("api")]
+ public class SysDictTypeService : ISysDictTypeService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictType> _sysDictTypeRep; // 瀛楀吀绫诲瀷琛ㄤ粨鍌�
+ private readonly ISysDictDataService _sysDictDataService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysDictDataService"></param>
+ /// <param name="sysDictTypeRep"></param>
+ public SysDictTypeService(ISysDictDataService sysDictDataService,
+ IRepository<SysDictType> sysDictTypeRep)
+ {
+ _sysDictDataService = sysDictDataService;
+ _sysDictTypeRep = sysDictTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysDictType/page")]
+ public async Task<PageResult<SysDictType>> QueryDictTypePageList([FromQuery] DictTypePageInput input)
+ {
+ bool supperAdmin = CurrentUserInfo.IsSuperAdmin;
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var dictTypes = await _sysDictTypeRep.DetachedEntities
+ .Where((code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")),
+ (name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")))
+ .Where(u => (u.Status != CommonStatus.DELETED && !supperAdmin) || (u.Status <= CommonStatus.DELETED && supperAdmin)).OrderBy(u => u.Sort)
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return dictTypes;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛楀吀绫诲瀷鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysDictType/list")]
+ public async Task<List<SysDictType>> GetDictTypeList()
+ {
+ return await _sysDictTypeRep.DetachedEntities.Where(u => u.Status != CommonStatus.DELETED).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛楀吀绫诲瀷涓嬫墍鏈夊瓧鍏稿��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [AllowAnonymous]
+ [HttpGet("sysDictType/dropDown")]
+ public async Task<List<SysDictData>> GetDictTypeDropDown([FromQuery] DropDownDictTypeInput input)
+ {
+ var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Code == input.Code, false);
+ if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+ return await _sysDictDataService.GetDictDataListByDictTypeId(dictType.Id);
+ }
+
+ /// <summary>
+ /// 娣诲姞瀛楀吀绫诲瀷
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictType/add")]
+ public async Task AddDictType(AddDictTypeInput input)
+ {
+ var isExist = await _sysDictTypeRep.AnyAsync(u => u.Name == input.Name || u.Code == input.Code, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D3001);
+
+ var dictType = input.Adapt<SysDictType>();
+ await _sysDictTypeRep.InsertAsync(dictType);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛楀吀绫诲瀷
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictType/delete")]
+ public async Task DeleteDictType(DeleteDictTypeInput input)
+ {
+ var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+
+ if (dictType.Status == CommonStatus.DELETED)
+ {
+ await dictType.DeleteAsync();
+ }
+ else
+ {
+ dictType.Status = CommonStatus.DELETED;
+ dictType.IsDeleted = false;;
+ }
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛楀吀绫诲瀷
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictType/edit"),]
+ public async Task UpdateDictType(UpdateDictTypeInput input)
+ {
+ var isExist = await _sysDictTypeRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+ isExist = await _sysDictTypeRep.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D3001);
+
+ var dictType = input.Adapt<SysDictType>();
+ await _sysDictTypeRep.UpdateAsync(dictType, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysDictType/detail")]
+ public async Task<SysDictType> GetDictType([FromQuery] QueryDictTypeInfoInput input)
+ {
+ return await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛楀吀绫诲瀷鐘舵��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysDictType/changeStatus")]
+ public async Task ChangeDictTypeStatus(ChangeStateDictTypeInput input)
+ {
+ var dictType = await _sysDictTypeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (dictType == null) throw Oops.Oh(ErrorCode.D3000);
+
+ if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+ throw Oops.Oh(ErrorCode.D3005);
+
+ dictType.Status = input.Status;
+ dictType.IsDeleted = false;;
+ }
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷涓庡瓧鍏稿�兼瀯閫犵殑瀛楀吀鏍�
+ /// </summary>
+ /// <returns></returns>
+ [AllowAnonymous]
+ [HttpGet("sysDictType/tree")]
+ public async Task<List<DictTreeOutput>> GetDictTree()
+ {
+ return await _sysDictTypeRep.DetachedEntities.Select(u => new DictTreeOutput
+ {
+ Id = u.Id,
+ Code = u.Code,
+ Name = u.Name,
+ Children = u.SysDictDatas.Select(c => new DictTreeOutput
+ {
+ Id = c.Id,
+ Pid = c.TypeId,
+ Code = c.Code,
+ Name = c.Value
+ }).ToList()
+ }).ToListAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs
new file mode 100644
index 0000000..1eb5722
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpExtOrgPosOutput.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 闄勫睘鏈烘瀯鍜岃亴浣嶅弬鏁�
+ /// </summary>
+ public class EmpExtOrgPosOutput
+ {
+ /// <summary>
+ /// 闄勫睘鏈烘瀯id
+ /// </summary>
+ public long OrgId { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鏈烘瀯缂栫爜
+ /// </summary>
+ public string OrgCode { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鏈烘瀯鍚嶇О
+ /// </summary>
+ public string OrgName { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鑱屼綅id
+ /// </summary>
+ public long PosId { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鑱屼綅缂栫爜
+ /// </summary>
+ public string PosCode { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鑱屼綅鍚嶇О
+ /// </summary>
+ public string PosName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs
new file mode 100644
index 0000000..23e2aa3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐淇℃伅鍙傛暟
+ /// </summary>
+ public class EmpOutput
+ {
+ /// <summary>
+ /// 宸ュ彿
+ /// </summary>
+ public string JobNum { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯id
+ /// </summary>
+ public string OrgId { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯鍚嶇О
+ /// </summary>
+ public string OrgName { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯涓庤亴浣嶄俊鎭�
+ /// </summary>
+ public List<EmpExtOrgPosOutput> ExtOrgPos { get; set; } = new List<EmpExtOrgPosOutput>();
+
+ /// <summary>
+ /// 鑱屼綅淇℃伅
+ /// </summary>
+ public List<EmpPosOutput> Positions { get; set; } = new List<EmpPosOutput>();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs
new file mode 100644
index 0000000..7234081
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpOutput2.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐淇℃伅鍙傛暟2
+ /// </summary>
+ public class EmpOutput2
+ {
+ /// <summary>
+ /// 鍛樺伐Id
+ /// </summary>
+ public string Id { get; set; }
+
+ /// <summary>
+ /// 宸ュ彿
+ /// </summary>
+ public string JobNum { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ public string OrgId { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯鍚嶇О
+ /// </summary>
+ public string OrgName { get; set; }
+
+ /// <summary>
+ /// 闄勫睘鏈烘瀯
+ /// </summary>
+ public List<EmpExtOrgPosOutput> ExtIds { get; set; } = new List<EmpExtOrgPosOutput>();
+
+ /// <summary>
+ /// 鑱屼綅闆嗗悎
+ /// </summary>
+ public List<long> PosIdList { get; set; } = new List<long>();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs
new file mode 100644
index 0000000..db7dc53
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/Dto/EmpPosOutput.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐鑱屼綅鍙傛暟
+ /// </summary>
+ public class EmpPosOutput
+ {
+ /// <summary>
+ /// 鑱屼綅Id
+ /// </summary>
+ public long PosId { get; set; }
+
+ /// <summary>
+ /// 鑱屼綅缂栫爜
+ /// </summary>
+ public string PosCode { get; set; }
+
+ /// <summary>
+ /// 鑱屼綅鍚嶇О
+ /// </summary>
+ public string PosName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs
new file mode 100644
index 0000000..debf571
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpExtOrgPosService.cs
@@ -0,0 +1,44 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysEmpExtOrgPosService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <param name="extIdList"></param>
+ /// <returns></returns>
+ Task AddOrUpdate(long empId, List<EmpExtOrgPosOutput> extIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task DeleteEmpExtInfoByUserId(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ Task<bool> HasExtOrgEmp(long orgId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="posId"></param>
+ /// <returns></returns>
+ Task<bool> HasExtPosEmp(long posId);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs
new file mode 100644
index 0000000..bffa8a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpPosService.cs
@@ -0,0 +1,37 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysEmpPosService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <param name="posIdList"></param>
+ /// <returns></returns>
+ Task AddOrUpdate(long empId, List<long> posIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task DeleteEmpPosInfoByUserId(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task<List<EmpPosOutput>> GetEmpPosList(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="posId"></param>
+ /// <returns></returns>
+ Task<bool> HasPosEmp(long posId);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs
new file mode 100644
index 0000000..6bd34e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/ISysEmpService.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysEmpService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="sysEmpParam"></param>
+ /// <returns></returns>
+ Task AddOrUpdate(EmpOutput2 sysEmpParam);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task DeleteEmpInfoByUserId(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task<EmpOutput> GetEmpInfo(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ Task<long> GetEmpOrgId(long empId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ Task<bool> HasOrgEmp(long orgId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <param name="orgName"></param>
+ /// <returns></returns>
+ Task UpdateEmpOrgInfo(long orgId, string orgName);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgIds"></param>
+ /// <returns></returns>
+ Task<List<SysEmp>> HasOrgEmp(List<long> orgIds);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs
new file mode 100644
index 0000000..a956cfa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpExtOrgPosService.cs
@@ -0,0 +1,94 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐闄勫睘鏈烘瀯鍜岃亴浣嶆湇鍔�
+ /// </summary>
+ public class SysEmpExtOrgPosService : ISysEmpExtOrgPosService, ITransient
+ {
+ private readonly IRepository<SysEmpExtOrgPos> _sysEmpExtOrgPosRep; // 闄勫睘鏈烘瀯琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysEmpExtOrgPosRep"></param>
+ public SysEmpExtOrgPosService(IRepository<SysEmpExtOrgPos> sysEmpExtOrgPosRep)
+ {
+ _sysEmpExtOrgPosRep = sysEmpExtOrgPosRep;
+ }
+
+ /// <summary>
+ /// 淇濆瓨鎴栫紪杈戦檮灞炴満鏋勭浉鍏充俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task AddOrUpdate(long empId, List<EmpExtOrgPosOutput> extIdList)
+ {
+ // 鍏堝垹闄�
+ await DeleteEmpExtInfoByUserId(empId);
+
+ var extOrgPos = extIdList.Select(u => new SysEmpExtOrgPos
+ {
+ SysEmpId = empId,
+ SysOrgId = u.OrgId,
+ SysPosId = u.PosId
+ }).ToList();
+ await _sysEmpExtOrgPosRep.InsertAsync(extOrgPos);
+ }
+
+ /// <summary>
+ /// 鑾峰彇闄勫睘鏈烘瀯鍜岃亴浣嶄俊鎭�
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ public async Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(long empId)
+ {
+ return await _sysEmpExtOrgPosRep.DetachedEntities
+ .Where(u => u.SysEmpId == empId)
+ .Select(u => new EmpExtOrgPosOutput
+ {
+ OrgId = u.SysOrg.Id,
+ OrgCode = u.SysOrg.Code,
+ OrgName = u.SysOrg.Name,
+ PosId = u.SysPos.Id,
+ PosCode = u.SysPos.Code,
+ PosName = u.SysPos.Name
+ }).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ラ檮灞炴満鏋勪笅鏄惁鏈夊憳宸�
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ public async Task<bool> HasExtOrgEmp(long orgId)
+ {
+ return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysOrgId == orgId);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱屼綅Id鍒ゆ柇璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+ /// </summary>
+ /// <param name="posId"></param>
+ /// <returns></returns>
+ public async Task<bool> HasExtPosEmp(long posId)
+ {
+ return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ public async Task DeleteEmpExtInfoByUserId(long empId)
+ {
+ var eeoprList = await _sysEmpExtOrgPosRep.AsQueryable(u => u.SysEmpId == empId, false).ToListAsync();
+ await _sysEmpExtOrgPosRep.DeleteAsync(eeoprList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs
new file mode 100644
index 0000000..f422af6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpPosService.cs
@@ -0,0 +1,81 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐鑱屼綅鏈嶅姟
+ /// </summary>
+ public class SysEmpPosService : ISysEmpPosService, ITransient
+ {
+ private readonly IRepository<SysEmpPos> _sysEmpPosRep; // 鍛樺伐鑱屼綅琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysEmpPosRep"></param>
+ public SysEmpPosService(IRepository<SysEmpPos> sysEmpPosRep)
+ {
+ _sysEmpPosRep = sysEmpPosRep;
+ }
+
+ /// <summary>
+ /// 澧炲姞鎴栫紪杈戝憳宸ヨ亴浣嶇浉鍏充俊鎭�
+ /// </summary>
+ /// <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+ /// <param name="posIdList">鑱屼綅id闆嗗悎</param>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task AddOrUpdate(long empId, List<long> posIdList)
+ {
+ // 鍏堝垹闄�
+ await DeleteEmpPosInfoByUserId(empId);
+
+ var empPos = posIdList.Select(u => new SysEmpPos
+ {
+ SysEmpId = empId,
+ SysPosId = u
+ }).ToList();
+ await _sysEmpPosRep.InsertAsync(empPos);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�灞炶亴浣嶄俊鎭�
+ /// </summary>
+ /// <param name="empId">鍛樺伐Id锛堢敤鎴稩d锛�</param>
+ public async Task<List<EmpPosOutput>> GetEmpPosList(long empId)
+ {
+ return await _sysEmpPosRep.DetachedEntities
+ .Where(u => u.SysEmpId == empId)
+ .Select(u => new EmpPosOutput
+ {
+ PosId = u.SysPos.Id,
+ PosCode = u.SysPos.Code,
+ PosName = u.SysPos.Name
+ }).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱屼綅Id鍒ゆ柇璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+ /// </summary>
+ /// <param name="posId"></param>
+ /// <returns></returns>
+ public async Task<bool> HasPosEmp(long posId)
+ {
+ return await _sysEmpPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ public async Task DeleteEmpPosInfoByUserId(long empId)
+ {
+ var sepList = await _sysEmpPosRep.AsQueryable(u => u.SysEmpId == empId, false).ToListAsync();
+ await _sysEmpPosRep.DeleteAsync(sepList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs
new file mode 100644
index 0000000..4e711c6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Emp/SysEmpService.cs
@@ -0,0 +1,136 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Mapster;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍛樺伐鏈嶅姟
+ /// </summary>
+ public class SysEmpService : ISysEmpService, ITransient
+ {
+ private readonly IRepository<SysEmp> _sysEmpRep; // 鍛樺伐琛ㄤ粨鍌�
+
+ private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+ private readonly ISysEmpPosService _sysEmpPosService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysEmpRep"></param>
+ /// <param name="sysEmpExtOrgPosService"></param>
+ /// <param name="sysEmpPosService"></param>
+ public SysEmpService(IRepository<SysEmp> sysEmpRep,
+ ISysEmpExtOrgPosService sysEmpExtOrgPosService,
+ ISysEmpPosService sysEmpPosService)
+ {
+ _sysEmpRep = sysEmpRep;
+ _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+ _sysEmpPosService = sysEmpPosService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鍛樺伐鐩稿叧淇℃伅锛堝寘鎷櫥褰曪級
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ public async Task<EmpOutput> GetEmpInfo(long empId)
+ {
+ var empInfoOutput = new EmpOutput();
+ var sysEmp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false);
+ if (sysEmp == null) return empInfoOutput;
+
+ empInfoOutput = sysEmp.Adapt<EmpOutput>();
+ empInfoOutput.ExtOrgPos = await _sysEmpExtOrgPosService.GetEmpExtOrgPosList(empId);
+ empInfoOutput.Positions = await _sysEmpPosService.GetEmpPosList(empId);
+ return empInfoOutput;
+ }
+
+ /// <summary>
+ /// 澧炲姞鎴栫紪杈戝憳宸ョ浉鍏充俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task AddOrUpdate(EmpOutput2 sysEmpParam)
+ {
+ // 鍏堝垹闄ゅ憳宸ヤ俊鎭�
+ var emps = await _sysEmpRep.Where(u => u.Id == long.Parse(sysEmpParam.Id)).ToListAsync();
+ await _sysEmpRep.DeleteAsync(emps);
+
+ // 鍐嶆柊澧炴柊鍛樺伐淇℃伅
+ var emp = sysEmpParam.Adapt<SysEmp>();
+ await _sysEmpRep.InsertNowAsync(emp);
+
+ // 鏇存柊闄勫睘鏈烘瀯鑱屼綅淇℃伅
+ await _sysEmpExtOrgPosService.AddOrUpdate(emp.Id, sysEmpParam.ExtIds);
+
+ // 鏇存柊鑱屼綅淇℃伅
+ await _sysEmpPosService.AddOrUpdate(emp.Id, sysEmpParam.PosIdList);
+ }
+
+ /// <summary>
+ /// 淇敼鍛樺伐鐩稿叧鏈烘瀯淇℃伅
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <param name="orgName"></param>
+ /// <returns></returns>
+ public async Task UpdateEmpOrgInfo(long orgId, string orgName)
+ {
+ var emps = await _sysEmpRep.Where(u => u.OrgId == orgId).ToListAsync();
+ emps.ForEach(u =>
+ {
+ u.OrgName = orgName;
+ });
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏈烘瀯Id鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夊憳宸�
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ public async Task<bool> HasOrgEmp(long orgId)
+ {
+ return await _sysEmpRep.DetachedEntities.AnyAsync(u => u.OrgId == orgId);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍛樺伐Id鍒犻櫎瀵瑰簲鐨勫憳宸ヨ〃淇℃伅
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ //[UnitOfWork]
+ public async Task DeleteEmpInfoByUserId(long empId)
+ {
+ // 鍒犻櫎鍛樺伐淇℃伅
+ await _sysEmpRep.DeleteAsync(empId);
+
+ // 绾ц仈鍒犻櫎瀵瑰簲鐨勫憳宸�-闄勫睘淇℃伅
+ await _sysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(empId);
+
+ // 绾ц仈鍒犻櫎瀵圭敤鐨勫憳宸�-鑱屼綅淇℃伅
+ await _sysEmpPosService.DeleteEmpPosInfoByUserId(empId);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍛樺伐鏈烘瀯Id
+ /// </summary>
+ /// <param name="empId"></param>
+ /// <returns></returns>
+ public async Task<long> GetEmpOrgId(long empId)
+ {
+ return (await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false)).OrgId;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛愭満鏋勭敤鎴�
+ /// </summary>
+ /// <param name="orgIds"></param>
+ /// <returns></returns>
+ public async Task<List<SysEmp>> HasOrgEmp(List<long> orgIds)
+ {
+ return await _sysEmpRep.DetachedEntities.Where(u => orgIds.Contains(u.OrgId)).ToListAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs
new file mode 100644
index 0000000..3c4e5d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataInput.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏋氫妇杈撳叆鍙傛暟
+ /// </summary>
+ public class EnumDataInput
+ {
+ /// <summary>
+ /// 鏋氫妇绫诲瀷鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鏋氫妇绫诲瀷涓嶈兘涓虹┖")]
+ public string EnumName { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryEnumDataInput
+ {
+ /// <summary>
+ /// 瀹炰綋鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瀹炰綋鍚嶇О涓嶈兘涓虹┖")]
+ public string EntityName { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瀛楁鍚嶇О涓嶈兘涓虹┖")]
+ public string FieldName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs
new file mode 100644
index 0000000..0f0deba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/Dto/EnumDataOutput.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏋氫妇杈撳嚭鍙傛暟
+ /// </summary>
+ public class EnumDataOutput
+ {
+ /// <summary>
+ /// 瀛楀吀Id
+ /// </summary>
+ public int Code { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀鍊�
+ /// </summary>
+ public string Value { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs
new file mode 100644
index 0000000..c864261
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/ISysEnumDataService.cs
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysEnumDataService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetEnumDataListByField([FromQuery] QueryEnumDataInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs
new file mode 100644
index 0000000..ac6653f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Enum/SysEnumDataService.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏋氫妇鍊兼湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings(Name = "EnumData", Order = 100)]
+ [AllowAnonymous]
+ [Route("api")]
+ public class SysEnumDataService : ISysEnumDataService, IDynamicApiController, ITransient
+ {
+ /// <summary>
+ /// 閫氳繃鏋氫妇绫诲瀷鑾峰彇鏋氫妇鍊奸泦鍚�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysEnumData/list")]
+ public async Task<dynamic> GetEnumDataList([FromQuery] EnumDataInput input)
+ {
+ // 鏌ユ壘鏋氫妇
+ var enumType = App.EffectiveTypes.FirstOrDefault(t => t.IsEnum && t.Name == input.EnumName);
+ if (enumType == null)
+ throw Oops.Oh(ErrorCode.D1502).StatusCode(405);
+
+ // 鑾峰彇鏋氫妇鐨凨ey鍜屾弿杩�
+ return await Task.Run(() =>
+ EnumUtil.GetEnumDescDictionary(enumType)
+ .Select(x => new EnumDataOutput
+ {
+ Code = x.Key,
+ Value = x.Value
+ }));
+ }
+
+ /// <summary>
+ /// 閫氳繃瀹炰綋瀛楁绫诲瀷鑾峰彇鐩稿叧闆嗗悎锛堢洰鍓嶄粎鏀寔鏋氫妇绫诲瀷锛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysEnumData/listByFiled")]
+ public async Task<dynamic> GetEnumDataListByField([FromQuery] QueryEnumDataInput input)
+ {
+ // 鑾峰彇瀹炰綋绫诲瀷灞炴��
+ var entityType = Db.GetDbContext().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == input.EntityName);
+ if (entityType == null) throw Oops.Oh(ErrorCode.D1504);
+
+ // 鑾峰彇瀛楁绫诲瀷
+ var fieldType = entityType.GetProperties().FirstOrDefault(p => p.Name == input.FieldName)?.ClrType;
+ if (fieldType is not { IsEnum: true })
+ throw Oops.Oh(ErrorCode.D1503);
+
+ // 鑾峰彇鏋氫妇鐨凨ey鍜屾弿杩�
+ return await Task.Run(() =>
+ EnumUtil.GetEnumDescDictionary(fieldType)
+ .Select(x => new EnumDataOutput
+ {
+ Code = x.Key,
+ Value = x.Value
+ }));
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs
new file mode 100644
index 0000000..43044e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateDto.cs
@@ -0,0 +1,61 @@
+锘�#nullable enable
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Excel妯℃澘杈撳嚭鍙傛暟
+ /// </summary>
+ public class SysExcelTemplateDto
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ public string Name { get; set; } = null!;
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public string Version { get; set; } = null!;
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ public string AppName { get; set; } = null!;
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; } = null!;
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ public string TemplateFileName { get; set; } = null!;
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ public string UnionUniqueFields { get; set; } = null!;
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ public int HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ public int DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public Core.CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs
new file mode 100644
index 0000000..e1f47bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateInput.cs
@@ -0,0 +1,264 @@
+锘�#nullable enable
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Excel妯℃澘鏌ヨ鍙傛暟
+ /// </summary>
+ public class SysExcelTemplateSearch : PageInputBase
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ public virtual string? Name { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public virtual string? Version { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ public virtual string? AppName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public virtual string? ClassName { get; set; }
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ public virtual string? TemplateFileName { get; set; }
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ public virtual string? UnionUniqueFields { get; set; }
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ public virtual int? HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ public virtual int? DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? Status { get; set; }
+
+ }
+
+ /// <summary>
+ /// Excel妯℃澘涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class SysExcelTemplateSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ public virtual string? Name { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public virtual string? Version { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ public virtual string? AppName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public virtual string? ClassName { get; set; }
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ public virtual string? TemplateFileName { get; set; }
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ public virtual string? UnionUniqueFields { get; set; }
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ public virtual int? HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ public virtual int? DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? Status { get; set; }
+
+ }
+
+ /// <summary>
+ /// Excel妯℃澘杈撳叆鍙傛暟
+ /// </summary>
+ public class SysExcelTemplateInput
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; } = null!;
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public virtual string Version { get; set; } = null!;
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ public virtual string AppName { get; set; } = null!;
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public virtual string ClassName { get; set; } = null!;
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ public virtual string TemplateFileName { get; set; } = null!;
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ public virtual string UnionUniqueFields { get; set; } = null!;
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ public virtual int HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ public virtual int DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus Status { get; set; }
+
+ }
+ /// <summary>
+ /// Excel妯℃澘娣诲姞杈撳叆鍙傛暟
+ /// </summary>
+ public class AddSysExcelTemplateInput : SysExcelTemplateInput
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "妯℃澘鍚嶇О涓嶈兘涓虹┖")]
+ public override string Name { get; set; } = null!;
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ [Required(ErrorMessage = "鐗堟湰涓嶈兘涓虹┖")]
+ public override string Version { get; set; } = null!;
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ [Required(ErrorMessage = "鎵�灞炲簲鐢ㄤ笉鑳戒负绌�")]
+ public override string AppName { get; set; } = null!;
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ [Required(ErrorMessage = "绫诲悕涓嶈兘涓虹┖")]
+ public override string ClassName { get; set; } = null!;
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "妯℃澘鏂囦欢鍚嶇О涓嶈兘涓虹┖")]
+ public override string TemplateFileName { get; set; } = null!;
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ [Required(ErrorMessage = "鍞竴瀛楁闆嗕笉鑳戒负绌�")]
+ public override string UnionUniqueFields { get; set; } = null!;
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ [Required(ErrorMessage = "琛ㄥご寮�濮嬭涓嶈兘涓虹┖")]
+ public override int HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁寮�濮嬭涓嶈兘涓虹┖")]
+ public override int DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+ public override CommonStatus Status { get; set; }
+
+ }
+
+
+ /// <summary>
+ /// 鏇存柊Excel妯℃澘鐘舵�佽緭鍏ュ弬鏁�
+ /// </summary>
+ public class UpdateSysExcelTemplateStatusInput : BaseId
+ {
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ /// Excel妯℃澘鍒犻櫎杈撳叆鍙傛暟
+ /// </summary>
+ public class DeleteSysExcelTemplateInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// Excel妯℃澘鏇存柊杈撳叆鍙傛暟
+ /// </summary>
+ public class UpdateSysExcelTemplateInput : SysExcelTemplateInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// Excel妯℃澘鏌ヨ杈撳叆鍙傛暟
+ /// </summary>
+ public class QuerySysExcelTemplateInput : BaseId
+ {
+
+ }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs
new file mode 100644
index 0000000..26e9f56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/Dto/SysExcelTemplateOutput.cs
@@ -0,0 +1,73 @@
+锘�#nullable enable
+using System.ComponentModel;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Excel妯℃澘杈撳嚭鍙傛暟
+ /// </summary>
+ [Description("Excel妯℃澘")]
+ public class SysExcelTemplateOutput
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ [Description("妯℃澘鍚嶇О")]
+ public string Name { get; set; } = null!;
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ [Description("鐗堟湰")]
+ public string Version { get; set; } = null!;
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ [Description("鎵�灞炲簲鐢�")]
+ public string AppName { get; set; } = null!;
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ [Description("绫诲悕")]
+ public string ClassName { get; set; } = null!;
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ [Description("妯℃澘鏂囦欢鍚嶇О")]
+ public string TemplateFileName { get; set; } = null!;
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ [Description("鍞竴瀛楁闆�")]
+ public string UnionUniqueFields { get; set; } = null!;
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ [Description("琛ㄥご寮�濮嬭")]
+ public int HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ [Description("鏁版嵁寮�濮嬭")]
+ public int DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ [Description("鐘舵��")]
+ public Core.CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Description("Id涓婚敭")]
+ public long Id { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs
new file mode 100644
index 0000000..2aa2896
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/ISysExcelTemplateService.cs
@@ -0,0 +1,160 @@
+锘�#nullable enable
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Excel妯℃澘杈撳嚭鏈嶅姟鎺ュ彛
+ /// </summary>
+ public interface ISysExcelTemplateService
+ {
+ /// <summary>
+ /// 娣诲姞Excel妯℃澘
+ /// </summary>
+ /// <param name="input">Excel妯℃澘娣诲姞鍙傛暟</param>
+ /// <returns></returns>
+ Task AddAsync(AddSysExcelTemplateInput input);
+
+ /// <summary>
+ /// 鍒犻櫎Excel妯℃澘
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鍒犻櫎鍙傛暟</param>
+ /// <returns></returns>
+ Task DeleteAsync(DeleteSysExcelTemplateInput input);
+
+ /// <summary>
+ /// 鑾峰彇鍗曚釜Excel妯℃澘
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>Excel妯℃澘瀹炰緥</returns>
+ Task<SysExcelTemplateOutput?> GetAsync([FromQuery] QuerySysExcelTemplateInput input);
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡墍鏈塃xcel妯℃澘鍒楄〃
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ Task<List<SysExcelTemplateOutput>> ListAsync([FromQuery] SysExcelTemplateInput input);
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨExcel妯℃澘鍒楄〃
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ Task<PageResult<SysExcelTemplateOutput>> PageAsync([FromQuery] SysExcelTemplateSearch input);
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ Task<List<SysExcelTemplateOutput>> ListNonPageAsync([FromQuery] SysExcelTemplateSearchNonPage input);
+
+ /// <summary>
+ /// 鏇存柊Excel妯℃澘
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏇存柊鍙傛暟</param>
+ /// <returns></returns>
+ Task UpdateAsync(UpdateSysExcelTemplateInput input);
+
+ /// <summary>
+ /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input);
+
+
+ /// <summary>
+ /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <param name="appName"></param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input, [FromQuery] string appName);
+
+
+
+ /// <summary>
+ /// 淇敼Excel妯℃澘鐘舵��
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鐘舵�佸弬鏁�</param>
+ /// <returns></returns>
+ Task ChangeSysExcelTemplateStatusAsync(UpdateSysExcelTemplateStatusInput input);
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+ /// </summary>
+ /// <param name="className">绫诲悕</param>
+ /// <param name="version">鐗堟湰鍙�</param>
+ /// <returns>Excel妯℃澘瀹炰緥</returns>
+ Task<SysExcelTemplateOutput?> GetByAppNameAndClassNameAndVersionAsync([FromQuery] string className, [FromQuery] string version);
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍔熻兘
+ /// </summary>
+ /// <param name="file"> Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇Excel妯℃澘鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ Task<IActionResult> DownloadExcelTemplate(string version);
+
+ /// <summary>
+ /// 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ /// </summary>
+ /// <param name="className">瀹炰綋鍚嶇О</param>
+ /// <returns></returns>
+ Task<List<TableColumn>> GetColumnListAsync([FromQuery] string className);
+
+ /// <summary>
+ /// 鑾峰彇妯℃澘鎻愮ず瀛楃
+ /// </summary>
+ /// <param name="className">瀹炰綋鍚嶇О</param>
+ /// <returns></returns>
+ Task<string> ParseTemplateHintAsync([FromQuery] string className);
+
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈠敮涓�绫诲瀷
+ /// </summary>
+ /// <param name="className">绫诲瀷鍚�</param>
+ /// <returns></returns>
+ Task<List<TableColumn>> QueryUniqueColumns(string className);
+
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+ /// </summary>
+ /// <param name="className">绫诲瀷鍚�</param>
+ /// <returns></returns>
+ Task<TableInfo?> QueryTable(string className);
+
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+ /// </summary>
+ /// <param name="className">绫诲悕</param>
+ /// <param name="prefix">鍓嶇紑</param>
+ /// <returns></returns>
+ Task<string> ParseSeedData([FromQuery] string className, string prefix);
+
+ /// <summary>
+ /// 鏍规嵁鍓嶇紑鑾峰彇鏈�澶D鍔�1
+ /// </summary>
+ /// <param name="prefix">鍓嶇紑</param>
+ /// <returns></returns>
+ Task<long> ParseId([FromQuery] string prefix);
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs
new file mode 100644
index 0000000..d8c1345
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/ExcelTemplate/SysExcelTemplateService.cs
@@ -0,0 +1,485 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Authorization;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Excel妯℃澘鏈嶅姟
+ /// </summary>
+ [Route("api")]
+ [ApiDescriptionSettings(Name = "ExcelTemplate", Order = 100)]
+ [AllowAnonymous]
+ public class SysExcelTemplateService : ISysExcelTemplateService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysExcelTemplate, MasterDbContextLocator> _sysExcelTemplateRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// Excel妯℃澘鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysExcelTemplateRep"></param>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ public SysExcelTemplateService(
+ IRepository<SysExcelTemplate, MasterDbContextLocator> sysExcelTemplateRep,
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ )
+ {
+ _sysExcelTemplateRep = sysExcelTemplateRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨExcel妯℃澘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/page")]
+ public async Task<PageResult<SysExcelTemplateOutput>> PageAsync([FromQuery] SysExcelTemplateSearch input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pVersion = input.Version?.Trim() ?? "";
+ var pAppName = input.AppName?.Trim() ?? "";
+ var pClassName = input.ClassName?.Trim() ?? "";
+ var pTemplateFileName = input.TemplateFileName?.Trim() ?? "";
+ var pUnionUniqueFields = input.UnionUniqueFields?.Trim() ?? "";
+ var pStatus = input.Status;
+ var sysExcelTemplates = await _sysExcelTemplateRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+ .Where(!string.IsNullOrEmpty(pVersion), u => EF.Functions.Like(u.Version, $"%{pVersion}%"))
+ .Where(!string.IsNullOrEmpty(pAppName), u => EF.Functions.Like(u.AppName, $"%{pAppName}%"))
+ .Where(!string.IsNullOrEmpty(pClassName), u => EF.Functions.Like(u.ClassName, $"%{pClassName}%"))
+ .Where(!string.IsNullOrEmpty(pTemplateFileName), u => EF.Functions.Like(u.TemplateFileName, $"%{pTemplateFileName}%"))
+ .Where(!string.IsNullOrEmpty(pUnionUniqueFields), u => EF.Functions.Like(u.UnionUniqueFields, $"%{pUnionUniqueFields}%"))
+ .Where(pStatus != null, u => u.Status == pStatus)
+ .OrderBy(PageInputOrder.OrderBuilder(input))
+ .ProjectToType<SysExcelTemplateOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return sysExcelTemplates;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇xcel妯℃澘鍒楄〃
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>(Excel妯℃澘)瀹炰緥鍒楄〃</returns>
+ [HttpGet("sysExcelTemplate/listNonPage")]
+ public async Task<List<SysExcelTemplateOutput>> ListNonPageAsync([FromQuery] SysExcelTemplateSearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pVersion = input.Version?.Trim() ?? "";
+ var pAppName = input.AppName?.Trim() ?? "";
+ var pClassName = input.ClassName?.Trim() ?? "";
+ var pTemplateFileName = input.TemplateFileName?.Trim() ?? "";
+ var pUnionUniqueFields = input.UnionUniqueFields?.Trim() ?? "";
+ var pStatus = input.Status;
+ var sysExcelTemplates = await _sysExcelTemplateRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => EF.Functions.Like(u.Name, $"%{pName}%"))
+ .Where(!string.IsNullOrEmpty(pVersion), u => EF.Functions.Like(u.Version, $"%{pVersion}%"))
+ .Where(!string.IsNullOrEmpty(pAppName), u => EF.Functions.Like(u.AppName, $"%{pAppName}%"))
+ .Where(!string.IsNullOrEmpty(pClassName), u => EF.Functions.Like(u.ClassName, $"%{pClassName}%"))
+ .Where(!string.IsNullOrEmpty(pTemplateFileName), u => EF.Functions.Like(u.TemplateFileName, $"%{pTemplateFileName}%"))
+ .Where(!string.IsNullOrEmpty(pUnionUniqueFields), u => EF.Functions.Like(u.UnionUniqueFields, $"%{pUnionUniqueFields}%"))
+ .Where(pStatus != null, u => u.Status == pStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<SysExcelTemplateOutput>()
+ .ToListAsync();
+ return sysExcelTemplates;
+ }
+
+ /// <summary>
+ /// 澧炲姞Excel妯℃澘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysExcelTemplate/add")]
+ public async Task AddAsync(AddSysExcelTemplateInput input)
+ {
+ var sysExcelTemplate = input.Adapt<SysExcelTemplate>();
+ await _sysExcelTemplateRep.InsertAsync(sysExcelTemplate);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎Excel妯℃澘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysExcelTemplate/delete")]
+ public async Task DeleteAsync(DeleteSysExcelTemplateInput input)
+ {
+ var sysExcelTemplate = await _sysExcelTemplateRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _sysExcelTemplateRep.DeleteAsync(sysExcelTemplate);
+ }
+
+ /// <summary>
+ /// 鏇存柊Excel妯℃澘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysExcelTemplate/edit")]
+ public async Task UpdateAsync(UpdateSysExcelTemplateInput input)
+ {
+ var isExist = await _sysExcelTemplateRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+ var sysExcelTemplate = input.Adapt<SysExcelTemplate>();
+ await _sysExcelTemplateRep.UpdateAsync(sysExcelTemplate, ignoreNullValues: false);
+ }
+
+ /// <summary>
+ /// 淇敼Excel妯℃澘鐘舵��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysExcelTemplate/changeStatus")]
+ public async Task ChangeSysExcelTemplateStatusAsync(UpdateSysExcelTemplateStatusInput input)
+ {
+ var sysExcelTemplate = await _sysExcelTemplateRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+ throw Oops.Oh(ErrorCode.D3005);
+ sysExcelTemplate.Status = input.Status;
+ }
+
+ /// <summary>
+ /// 鑾峰彇Excel妯℃澘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/detail")]
+ public async Task<SysExcelTemplateOutput?> GetAsync([FromQuery] QuerySysExcelTemplateInput input)
+ {
+ return (await _sysExcelTemplateRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id))?.Adapt<SysExcelTemplateOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇Excel妯℃澘鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/list")]
+ public async Task<List<SysExcelTemplateOutput>> ListAsync([FromQuery] SysExcelTemplateInput input)
+ {
+ return await _sysExcelTemplateRep.DetachedEntities.ProjectToType<SysExcelTemplateOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("sysExcelTemplate/toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input)
+ {
+ var sysExcelTemplateList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(sysExcelTemplateList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel((App.Configuration["Excel:Template"] ?? "") + (App.Configuration["AppName"] ?? "") + @"\" + excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁Excel妯℃澘鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">Excel妯℃澘鏌ヨ鍙傛暟</param>
+ /// <param name="appName"></param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("sysExcelTemplate/toExcelByAppName")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] SysExcelTemplateSearchNonPage input, [FromQuery] string appName)
+ {
+ var sysExcelTemplateList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(sysExcelTemplateList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel((App.Configuration["Excel:Template"] ?? "") + appName + @"\" + excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鍙婄増鏈彿鑾峰彇鍗曚釜Excel妯℃澘
+ /// </summary>
+ /// <param name="className">绫诲悕</param>
+ /// <param name="version">鐗堟湰鍙�</param>
+ /// <returns>Excel妯℃澘瀹炰緥</returns>
+ [HttpGet("sysExcelTemplate/getAppNameAndByClassNameAndVersion")]
+ public async Task<SysExcelTemplateOutput?> GetByAppNameAndClassNameAndVersionAsync([FromQuery] string className, [FromQuery] string version)
+ {
+ return await _sysExcelTemplateRep.DetachedEntities.ProjectToType<SysExcelTemplateOutput>()
+ .FirstOrDefaultAsync(u => u.ClassName == className && u.Version == version);
+ }
+
+ /// <summary>
+ /// 瀵煎叆Excel妯℃澘鏂囦欢
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("sysExcelTemplate/fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<SysExcelTemplateOutput> sysExcelTemplateList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, SysExcelTemplateOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = sysExcelTemplateList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<SysExcelTemplate>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<SysExcelTemplate, SysExcelTemplateOutput>(selectKeys);
+ List<SysExcelTemplate> updates = new();
+ List<SysExcelTemplate> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var sysExcelTemplateExistSubList = _sysExcelTemplateRep.Where(filter).Select(selector).ToList();
+ sysExcelTemplateExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var sysExcelTemplate in sysExcelTemplateList)
+ {
+ if (sysExcelTemplate.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(sysExcelTemplate.Adapt<SysExcelTemplate>());
+ }
+ else
+ {
+ adds.Add(sysExcelTemplate.Adapt<SysExcelTemplate>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _sysExcelTemplateRep.Update(x));
+
+ var maxId = _sysExcelTemplateRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<SysExcelTemplate>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉�</returns>
+ [HttpGet("sysExcelTemplate/downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await GetByAppNameAndClassNameAndVersionAsync("SysExcelTemplate", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+
+ var path = Path.Combine((App.Configuration["Excel:Template"] ?? "") + (App.Configuration["AppName"] ?? "") + @"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀹炰綋鍚嶇О鑾峰彇灞炴�ч泦鍚�
+ /// </summary>
+ /// <param name="className">瀹炰綋鍚嶇О</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/getColumnList")]
+ public async Task<List<TableColumn>> GetColumnListAsync([FromQuery] string className)
+ {
+ var dbContext = Db.GetDbContext();
+
+ var entityType = dbContext.GetService<IDesignTimeModel>().Model.GetEntityTypes()
+ .FirstOrDefault(u => u.ClrType.Name == className);
+ if (entityType == null) return new List<TableColumn>();
+
+
+ var type = entityType.ClrType;
+ if (type == null) return new List<TableColumn>();
+
+ var columnList = new List<string>()
+ {
+ "Id", "CreatedTime", "UpdatedTime", "CreatedUserId", "CreatedUserName", "UpdatedUserId", "UpdatedUserName", "IsDeleted"
+ };
+
+ List<TableColumn> columns = type.GetProperties()
+ .Select(propertyInfo => entityType.FindProperty(propertyInfo.Name))
+ .Where(p => p != null && !columnList.Contains(p.Name)).Select(p =>
+ {
+ var propInfo = p?.PropertyInfo;
+ var type = propInfo?.PropertyType;
+ var typeName = type?.ToString() ?? string.Empty;
+ return new TableColumn
+ {
+ IsRequired = FieldUtil.IsRequired(p ?? null!, typeName),
+ ColumnName = p?.Name,
+ ColumnKey = ("Id".Equals(p?.Name)).ToString(),
+ DataType = typeName,
+ ColumnComment = p?.GetComment()
+ };
+ }).ToList();
+
+ columns.ForEach(x => x.Remark = x.DataType.GetColumnRemark());
+ await Task.CompletedTask;
+ return columns;
+ }
+
+ /// <summary>
+ /// 鎹被鍚嶆煡璇㈠叾鏌ヨ鏍囬噺绫诲瀷
+ /// </summary>
+ /// <param name="className">绫诲悕</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/queryUniqueColumns")]
+ public async Task<List<TableColumn>> QueryUniqueColumns(string className)
+ {
+ var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+ var entityType = dbContext?.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == className);
+ await Task.CompletedTask;
+ return TypeUtil.GetUniqueColumns(entityType);
+ }
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鏌ヨ鍏舵煡璇㈣〃淇℃伅
+ /// </summary>
+ /// <param name="className">绫诲瀷鍚�</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/queryTable")]
+ public async Task<TableInfo?> QueryTable(string className)
+ {
+ var dbContext = Db.GetDbContext();//榛樿鏁版嵁搴�
+ var entityType = dbContext?.GetService<IDesignTimeModel>().Model.GetEntityTypes().FirstOrDefault(u => u.ClrType.Name == className);
+ await Task.CompletedTask;
+ return TypeUtil.GetTableInfo(entityType);
+ }
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鐢熸垚鐩稿簲鐨勭瀛愪唬鐮�
+ /// </summary>
+ /// <param name="className">绫诲悕</param>
+ /// <param name="prefix">鍓嶇紑</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/parseSeedData")]
+ public async Task<string> ParseSeedData([FromQuery] string className, string prefix)
+ {
+ var mId = await ParseId(prefix);
+
+ var tableInfo = await QueryTable(className);
+ var appName = App.Configuration["AppName"];
+ // var folder = App.Configuration["Desktop"];
+ var folder = System.IO.Path.Combine(App.WebHostEnvironment.WebRootPath, "AutoCreateFile", "ExcelTemplateTxt");
+ var unionUniqueColumns = await QueryUniqueColumns(className);
+ string unionUniqueFields = "";
+ unionUniqueColumns.ForEach(x => unionUniqueFields += x.ColumnName + ",");
+ if (unionUniqueFields.EndsWith(",")) unionUniqueFields = unionUniqueFields[..^1];
+
+ string fileName = DateTime.Now.Ticks + ".txt";
+ string msgExcelTemplate = $"new SysExcelTemplate {{ Id={mId++}, Name=\"{tableInfo?.TableComment ?? ""}\", Version = \"v1\" , ClassName=\"{tableInfo?.TableName ?? ""}\", TemplateFileName=\"{(tableInfo?.TableName ?? "").ToUnderLine()}_v1.xlsx\", UnionUniqueFields=\"{unionUniqueFields}\", AppName = \"{appName}\", HeadStartLine = 1, DataStartLine = 2, Status = 0}},";
+ FileUtil.WriteLine(folder, fileName, msgExcelTemplate);
+
+ msgExcelTemplate = $"new SysExcelTemplate {{ Id={mId++}, Name=\"{tableInfo?.TableComment ?? ""}\", Version = \"v2\" , ClassName=\"{tableInfo?.TableName ?? ""}\", TemplateFileName=\"{(tableInfo?.TableName ?? "").ToUnderLine()}_v2.xlsx\", UnionUniqueFields=\"{unionUniqueFields}\", AppName = \"{appName}\", HeadStartLine = 11, DataStartLine = 12, Status = 0}},";
+ FileUtil.WriteLine(folder, fileName, msgExcelTemplate);
+ FileUtil.WriteLine(folder, fileName, "");
+
+ return Path.Combine(folder, fileName);
+ }
+
+ /// <summary>
+ /// 鑾峰彇妯℃澘鎻愮ず瀛楃
+ /// </summary>
+ /// <param name="className">瀹炰綋鍚嶇О</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/parseTemplateHint")]
+ public async Task<string> ParseTemplateHintAsync([FromQuery] string className)
+ {
+ List<TableColumn> tableColumns = await GetColumnListAsync(className);
+ var folder = App.Configuration["Desktop"];
+ string fileName = DateTime.Now.Ticks + ".txt";
+
+ FileUtil.WriteLine(folder, fileName, "");
+ FileUtil.WriteLine(folder, fileName, "1.鏀寔Excel2007鍙婁互涓婄増鏈枃浠躲��");
+ FileUtil.WriteLine(folder, fileName, "2.瀵煎叆鏂板鏁版嵁鏃朵笉鑳借秴杩�5000琛屻��");
+ FileUtil.WriteLine(folder, fileName, "3.瀵煎叆鏇存柊鏁版嵁鏃朵笉鑳借秴杩�2000琛屻��");
+
+ FileUtil.WriteLine(folder, fileName, "");
+ FileUtil.WriteLine(folder, fileName, "");
+
+ Dictionary<string, string> typeNameDict = new()
+ {
+ { "System.String", "鏂囨湰銆傚: 閽熷瓭鏈�"},
+ { "System.Int32", "鏁板瓧銆傚: 4377"},
+ { "System.Int64", "鏁板瓧銆傚: 4377"},
+ { "System.DateTimeOffset", "鏃ユ湡銆� 濡�: 2023/3/1"},
+ { "System.DateTime", "鏃ユ湡銆� 濡�: 2023/3/1"}
+ };
+
+ tableColumns.ForEach(x =>
+ {
+ string text = "";
+ text += x.ColumnComment + "(" + (x.IsRequired ? "蹇呭~" : "闈炲繀濉�") + "): ";
+ text += typeNameDict.ContainsKey(x.DataType) ? typeNameDict[x.DataType] : ("鏂囨湰銆� 鍙�夐」涓�: " + x.Remark);
+ FileUtil.WriteLine(folder, fileName, text);
+ });
+
+ return Path.Combine(folder, fileName);
+ }
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鑾峰彇鏈�澶D鍔�1
+ /// </summary>
+ /// <param name="prefix">鍓嶇紑</param>
+ /// <returns></returns>
+ [HttpGet("sysExcelTemplate/parseId")]
+ public async Task<long> ParseId([FromQuery] string prefix)
+ {
+ var lastExcelTemplate = await _sysExcelTemplateRep.DetachedEntities.OrderByDescending(x => x.Id).FirstOrDefaultAsync();
+
+ var mId = (lastExcelTemplate?.Id + 1) ?? 1;
+ mId = long.Parse(prefix + mId.ToString()[1..]);
+ return mId;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs
new file mode 100644
index 0000000..828226e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileInput.cs
@@ -0,0 +1,40 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 涓婁紶鏂囦欢鍙傛暟
+ /// </summary>
+ public class FilePageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+ /// </summary>
+ public int FileLocation { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢浠撳簱
+ /// </summary>
+ public string FileBucket { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+ /// </summary>
+ public string FileOriginName { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteFileInfoInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryFileInfoInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs
new file mode 100644
index 0000000..30a9b89
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/Dto/FileOutput.cs
@@ -0,0 +1,85 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 涓婁紶鏂囦欢鍙傛暟
+ /// </summary>
+ public class FileOutput
+ {
+ /// <summary>
+ /// 鏂囦欢Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+ /// </summary>
+ public int FileLocation { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢浠撳簱
+ /// </summary>
+ public string FileBucket { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+ /// </summary>
+ public string FileOriginName { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍚庣紑
+ /// </summary>
+ public string FileSuffix { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢澶у皬kb
+ /// </summary>
+ public long FileSizeKb { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+ /// </summary>
+ public string FileSizeInfo { get; set; }
+
+ /// <summary>
+ /// 瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+ /// </summary>
+ public string FileObjectName { get; set; }
+
+ /// <summary>
+ /// 瀛樺偍璺緞
+ /// </summary>
+ public string FilePath { get; set; }
+ }
+
+ /// <summary>
+ /// k-form-design鎵�闇�鍙傛暟瑕佹眰
+ /// </summary>
+ public class KFormFileOutput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public int code { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public KFormFileIrem Data { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class KFormFileIrem
+ {
+ /// <summary>
+ /// 鏂囦欢ID
+ /// </summary>
+ public long FileId { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢涓嬭浇鍦板潃
+ /// </summary>
+ public string Url { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs
new file mode 100644
index 0000000..6d49674
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/ISysFileService.cs
@@ -0,0 +1,90 @@
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysFileService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteFileInfo(DeleteFileInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<IActionResult> DownloadFileInfo([FromQuery] QueryFileInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysFile> GetFileInfo([FromQuery] QueryFileInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<SysFile>> GetFileInfoList([FromQuery] FileOutput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<IActionResult> PreviewFileInfo([FromQuery] QueryFileInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<FileOutput>> QueryFileInfoPageList([FromQuery] FilePageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ Task<long> UploadFileAvatar(IFormFile file);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ Task<long> UploadFileDefault(IFormFile file);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ Task UploadFileDocument(IFormFile file);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ Task UploadFileShop(IFormFile file);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ Task<long> UploadFile(IFormFile file, string key);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs
new file mode 100644
index 0000000..2e7b9f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/File/SysFileService.cs
@@ -0,0 +1,380 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Furion.RemoteRequest.Extensions;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using OnceMi.AspNetCore.OSS;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏂囦欢鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "File", Order = 100)]
+ [Route("api")]
+ public class SysFileService : ISysFileService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysFile> _sysFileInfoRep; // 鏂囦欢淇℃伅琛ㄤ粨鍌�
+
+ private readonly IConfiguration _configuration;
+
+ private readonly IOSSServiceFactory _oSSServiceFactory;
+
+ private readonly string bucketName = "bucketName";
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysFileInfoRep"></param>
+ /// <param name="configuration"></param>
+ /// <param name="oSSServiceFactory"></param>
+ public SysFileService(IRepository<SysFile> sysFileInfoRep,
+ IConfiguration configuration,
+ IOSSServiceFactory oSSServiceFactory)
+ {
+ _sysFileInfoRep = sysFileInfoRep;
+ _configuration = configuration;
+ _oSSServiceFactory = oSSServiceFactory;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鏂囦欢鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysFileInfo/page")]
+ public async Task<PageResult<FileOutput>> QueryFileInfoPageList([FromQuery] FilePageInput input)
+ {
+ var fileBucket = !string.IsNullOrEmpty(input.FileBucket?.Trim());
+ var fileOriginName = !string.IsNullOrEmpty(input.FileOriginName?.Trim());
+ var files = await _sysFileInfoRep.DetachedEntities
+ .Where(input.FileLocation > 0, u => u.FileLocation == input.FileLocation)
+ .Where(fileBucket, u => EF.Functions.Like(u.FileBucket, $"%{input.FileBucket.Trim()}%"))
+ .Where(fileOriginName, u => EF.Functions.Like(u.FileOriginName, $"%{input.FileOriginName.Trim()}%"))
+ .ProjectToType<FileOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return files;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏂囦欢鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysFileInfo/list")]
+ public async Task<List<SysFile>> GetFileInfoList([FromQuery] FileOutput input)
+ {
+ return await _sysFileInfoRep.DetachedEntities.ToListAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏂囦欢
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/delete")]
+ public async Task DeleteFileInfo(DeleteFileInfoInput input)
+ {
+ var file = await _sysFileInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (file != null)
+ {
+ await file.DeleteAsync();
+
+ switch (file.FileLocation)
+ {
+ case (int)FileLocation.MINIO:
+ await _oSSServiceFactory.Create().RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+ break;
+
+ case (int)FileLocation.ALIYUN:
+ await _oSSServiceFactory.Create("Aliyun").RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+ break;
+
+ case (int)FileLocation.TENCENT:
+ await _oSSServiceFactory.Create("QCloud").RemoveObjectAsync(file.FileBucket, string.Concat(file.FilePath, "/", file.FileObjectName));
+ break;
+
+ default:
+ var filePath = Path.Combine(App.WebHostEnvironment.WebRootPath, file.FilePath, file.FileObjectName);
+ if (File.Exists(filePath))
+ File.Delete(filePath);
+ break;
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏂囦欢璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysFileInfo/detail")]
+ public async Task<SysFile> GetFileInfo([FromQuery] QueryFileInfoInput input)
+ {
+ var file = await _sysFileInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (file == null)
+ throw Oops.Oh(ErrorCode.D8000);
+ return file;
+ }
+
+ /// <summary>
+ /// 棰勮鏂囦欢
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysFileInfo/preview")]
+ public async Task<IActionResult> PreviewFileInfo([FromQuery] QueryFileInfoInput input)
+ {
+ return await DownloadFileInfo(input);
+ }
+
+ /// <summary>
+ /// 涓婁紶鏂囦欢
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/upload")]
+ public async Task<long> UploadFileDefault(IFormFile file)
+ {
+ //瀵硅薄瀛樺偍鐨刱ey
+ const string key = "UploadFile:Default";
+ // 鍙互璇诲彇绯荤粺閰嶇疆鏉ュ喅瀹氬皢鏂囦欢瀛樺偍鍒颁粈涔堝湴鏂�
+ return await UploadFile(file, key, FileLocation.LOCAL);
+ }
+
+ /// <summary>
+ /// 涓婁紶鏂囦欢(k-form-design)
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/kformormupload")]
+ [AllowAnonymous]//鏆傛病鎵惧埌k-form-design缁勪欢涓婁紶鏂囦欢濡備綍澧炲姞head
+ [NonUnify]//浜ょ粰k-form-design缁勪欢澶勭悊鏁版嵁涓嶉渶瑕佽鑼冨寲杩斿洖鏁版嵁
+ public async Task<KFormFileOutput> KFormUploadFileDefault(IFormFile file, string key)
+ {
+ long FileId = 0;
+
+ try
+ {
+ //瀵硅薄瀛樺偍鐨刱ey
+ if (string.IsNullOrEmpty(key))
+ key = "UploadFile:Default";
+ // 鍙互璇诲彇绯荤粺閰嶇疆鏉ュ喅瀹氬皢鏂囦欢瀛樺偍鍒颁粈涔堝湴鏂�
+ FileId = await UploadFile(file, key, FileLocation.LOCAL);
+ }
+ catch
+ {
+ return new KFormFileOutput() { code = 1 };
+ }
+
+ return new KFormFileOutput()
+ {
+ code = 0,
+ Data = new KFormFileIrem()
+ {
+ FileId = FileId,
+ Url = $"/api/sysFileInfo/download?id={FileId}"
+ }
+ };
+ }
+
+ /// <summary>
+ /// 涓嬭浇鏂囦欢
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysFileInfo/download")]
+ [AllowAnonymous]
+ public async Task<IActionResult> DownloadFileInfo([FromQuery] QueryFileInfoInput input)
+ {
+ var file = await GetFileInfo(input);
+ var fileName = HttpUtility.UrlEncode(file.FileOriginName, Encoding.GetEncoding("UTF-8"));
+
+ switch (file.FileLocation)
+ {
+ case (int)FileLocation.ALIYUN:
+ var filePath = string.Concat(file.FilePath, "/", file.FileObjectName);
+ var stream1 = await (await _oSSServiceFactory.Create("Aliyun").PresignedGetObjectAsync(bucketName, filePath, 5)).GetAsStreamAsync();
+ return new FileStreamResult(stream1, "application/octet-stream") { FileDownloadName = fileName };
+
+ case (int)FileLocation.TENCENT:
+ var filePath1 = string.Concat(file.FilePath, "/", file.FileObjectName);
+ var stream2 = await (await _oSSServiceFactory.Create("QCloud").PresignedGetObjectAsync(bucketName, filePath1, 5)).GetAsStreamAsync();
+ return new FileStreamResult(stream2, "application/octet-stream") { FileDownloadName = fileName };
+
+ case (int)FileLocation.MINIO:
+ var filePath2 = string.Concat(file.FilePath, "/", file.FileObjectName);
+ var stream3 = await (await _oSSServiceFactory.Create().PresignedGetObjectAsync(file.FileBucket, filePath2, 5)).GetAsStreamAsync();
+ return new FileStreamResult(stream3, "application/octet-stream") { FileDownloadName = fileName };
+
+ default:
+ var filePath4 = Path.Combine(file.FilePath, file.FileObjectName);
+ var path = Path.Combine(App.WebHostEnvironment.WebRootPath, filePath4);
+ return new FileStreamResult(new FileStream(path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+
+ /// <summary>
+ /// 涓婁紶澶村儚
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/uploadAvatar")]
+ public async Task<long> UploadFileAvatar(IFormFile file)
+ {
+ const string key = "UploadFile:Avatar";
+ return await UploadFile(file, key);
+ }
+
+ /// <summary>
+ /// 涓婁紶鏂囨。
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/uploadDocument")]
+ public async Task UploadFileDocument(IFormFile file)
+ {
+ const string key = "UploadFile:Document";
+ await UploadFile(file, key);
+ }
+
+ /// <summary>
+ /// 涓婁紶鍟嗗簵鍥剧墖
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ [HttpPost("sysFileInfo/uploadShop")]
+ public async Task UploadFileShop(IFormFile file)
+ {
+ const string key = "UploadFile:Shop";
+ await UploadFile(file, key);
+ }
+
+ /// <summary>
+ /// 涓婁紶鏂囦欢
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="key"></param>
+ /// <returns></returns>
+ [NonAction]//鐢ㄦ埛鍙互鑷畾涔夎鐢ㄧ殑
+ public async Task<long> UploadFile(IFormFile file, string key)
+ {
+ string path = _configuration[$"{key}:path"];
+ var filePath = Path.Combine(App.WebHostEnvironment.WebRootPath, path);
+ if (!Directory.Exists(filePath))
+ Directory.CreateDirectory(filePath);
+
+ var allowContentType = _configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+
+ if (!allowContentType.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+
+ var allowMaxSize = long.Parse(_configuration[$"{key}:maxSize"]);
+ var fileSizeKb = (long)(file.Length / 1024.0); // 鏂囦欢澶у皬KB
+ if (fileSizeKb > allowMaxSize) throw Oops.Oh(ErrorCode.D8002);
+
+ var originalFilename = file.FileName; // 鏂囦欢鍘熷鍚嶇О
+ var fileSuffix = Path.GetExtension(file.FileName).ToLower(); // 鏂囦欢鍚庣紑
+
+ // 鍏堝瓨搴撹幏鍙朓d
+ var newFile = await new SysFile
+ {
+ FileLocation = (int)FileLocation.LOCAL,
+ FileBucket = FileLocation.LOCAL.ToString(),
+ //FileObjectName = finalName,
+ FileOriginName = originalFilename,
+ FileSuffix = fileSuffix.TrimStart('.'),
+ FileSizeKb = fileSizeKb.ToString(),
+ FilePath = path
+ }.InsertNowAsync();
+
+ var finalName = newFile.Entity.Id + fileSuffix; // 鐢熸垚鏂囦欢鐨勬渶缁堝悕绉�
+ using (var stream = File.Create(Path.Combine(filePath, finalName)))
+ {
+ await file.CopyToAsync(stream);
+ }
+
+ newFile.Entity.FileObjectName = finalName;
+ return newFile.Entity.Id; // 杩斿洖鏂囦欢鍞竴鏍囪瘑
+ }
+
+ /// <summary>
+ /// 涓婁紶鏂囦欢
+ /// </summary>
+ /// <param name="file">鏂囦欢</param>
+ /// <param name="key">瀵硅薄瀛樺偍閿�</param>
+ /// <param name="fileLocation">鏂囦欢瀛樺偍浣嶇疆</param>
+ /// <returns></returns>
+ private async Task<long> UploadFile(IFormFile file, string key, FileLocation fileLocation)
+ {
+ string path = _configuration[$"{key}:path"];
+
+ var allowContentType = _configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+ if (!allowContentType.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+
+ var allowMaxSize = long.Parse(_configuration[$"{key}:maxSize"]);
+ var fileSizeKb = (long)(file.Length / 1024.0); // 鏂囦欢澶у皬KB
+ if (fileSizeKb > allowMaxSize) throw Oops.Oh(ErrorCode.D8002);
+
+ var originalFilename = file.FileName; // 鏂囦欢鍘熷鍚嶇О
+ var fileSuffix = Path.GetExtension(file.FileName).ToLower(); // 鏂囦欢鍚庣紑
+
+ // 鍏堝瓨搴撹幏鍙朓d
+ var newFile = await new SysFile
+ {
+ FileLocation = (int)fileLocation,
+ FileBucket = bucketName,
+ //FileObjectName = finalName,
+ FileOriginName = originalFilename,
+ FileSuffix = fileSuffix.TrimStart('.'),
+ FileSizeKb = fileSizeKb.ToString(),
+ FilePath = path
+ }.InsertNowAsync();
+
+ var finalName = newFile.Entity.Id + fileSuffix; // 鐢熸垚鏂囦欢鐨勬渶缁堝悕绉�
+ newFile.Entity.FileObjectName = finalName;
+ switch (fileLocation)
+ {
+ case FileLocation.ALIYUN:
+ var filePath = string.Concat(path, "/", finalName);
+ var stream = file.OpenReadStream();
+ await _oSSServiceFactory.Create("aliyun").PutObjectAsync(bucketName, filePath, stream);
+ break;
+
+ case FileLocation.TENCENT:
+ var filePath1 = string.Concat(path, "/", finalName);
+ var stream1 = file.OpenReadStream();
+ await _oSSServiceFactory.Create("qcloud").PutObjectAsync(bucketName, filePath1, stream1);
+ break;
+
+ case FileLocation.MINIO:
+ var filePath2 = string.Concat(path, "/", finalName);
+ var stream2 = file.OpenReadStream();
+ await _oSSServiceFactory.Create().PutObjectAsync(bucketName, filePath2, stream2);
+ break;
+
+ default:
+ var filePath4 = Path.Combine(App.WebHostEnvironment.WebRootPath, path);
+ if (!Directory.Exists(filePath4))
+ Directory.CreateDirectory(filePath4);
+ using (var stream4 = File.Create(Path.Combine(filePath4, finalName)))
+ {
+ await file.CopyToAsync(stream4);
+ }
+ break;
+ }
+ return newFile.Entity.Id; // 杩斿洖鏂囦欢鍞竴鏍囪瘑
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs
new file mode 100644
index 0000000..e8c86e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormAddDto.cs
@@ -0,0 +1,37 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 琛ㄥ崟娣诲姞
+ /// </summary>
+ public class FormAddDto
+ {
+ /// <summary>
+ ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ /// </summary>
+ [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷ID
+ /// </summary>
+ [Required(ErrorMessage = "琛ㄥ崟绫诲瀷ID涓嶅彲涓虹┖")]
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// form琛ㄥ崟Json
+ /// </summary>
+ public string FormJson { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙戝竷
+ /// </summary>
+ public bool Publish { get; set; } = false;
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public int Version { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs
new file mode 100644
index 0000000..93c939c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormDto.cs
@@ -0,0 +1,350 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 琛ㄥ崟杈撳嚭Dto
+ /// </summary>
+ public class FormDto
+ {
+ /// <summary>
+ /// 鏃犲弬鏋勯�犲嚱鏁�
+ /// </summary>
+ public FormDto()
+ {
+ }
+
+ /// <summary>
+ /// 鏈夊弬鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="formDto"></param>
+ public FormDto(FormDto formDto)
+ {
+ this.Id = formDto.Id;
+ this.Title = formDto.Title;
+ this.FormJson = formDto.FormJson;
+ this.Publish = formDto.Publish;
+ this.TypeId = formDto.TypeId;
+ this.TypeName = formDto.TypeName;
+ this.Version = formDto.Version;
+ this.CreatedUserName = formDto.CreatedUserName;
+ this.CreatedUserId = formDto.CreatedUserId;
+ this.CreatedTime = formDto.CreatedTime;
+ this.NodesList = formDto.NodesList;
+ }
+
+ /// <summary>
+ /// 鏈夊弬鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="title"></param>
+ /// <param name="formjson"></param>
+ /// <param name="publish"></param>
+ /// <param name="typeId"></param>
+ /// <param name="typeName"></param>
+ /// <param name="version"></param>
+ /// <param name="createdUserName"></param>
+ /// <param name="createdUserId"></param>
+ /// <param name="createdTime"></param>
+ /// <param name="nodesList"></param>
+ public FormDto(long id, string title, string formjson, bool publish, long typeId, string typeName, int version, string createdUserName, long? createdUserId, DateTimeOffset? createdTime, FormList nodesList)
+ {
+ this.Id = id;
+ this.Title = title;
+ this.FormJson = formjson;
+ this.Publish = publish;
+ this.TypeId = typeId;
+ this.TypeName = typeName;
+ this.Version = version;
+ this.CreatedUserName = createdUserName;
+ this.CreatedUserId = createdUserId;
+ this.CreatedTime = createdTime;
+ this.NodesList = nodesList;
+ }
+
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// form琛ㄥ崟Json
+ /// </summary>
+ public string FormJson { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙戝竷
+ /// </summary>
+ public bool Publish { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷ID
+ /// </summary>
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷鍚嶇О
+ /// </summary>
+ public string TypeName { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public int Version { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜哄鍚�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜篒D
+ /// </summary>
+ public long? CreatedUserId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鑺傜偣鍒楄〃
+ /// </summary>
+ public FormList NodesList { get; set; }
+ }
+
+ /// <summary>
+ /// 琛ㄥ崟鍒楄〃
+ /// </summary>
+ public class FormList
+ {
+ /// <summary>
+ /// 鑺傜偣鍒楄〃
+ /// </summary>
+ public List<FormNode> List { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆
+ /// </summary>
+ public FormConfig Config { get; set; }
+ }
+
+ /// <summary>
+ /// 琛ㄥ崟鑺傜偣
+ /// </summary>
+ public class FormNode
+ {
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ public string Label { get; set; }
+
+ /// <summary>
+ /// 灞炴�ц缃�
+ /// </summary>
+ public FormOptions Options { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Model { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Key { get; set; }
+
+ /// <summary>
+ /// 甯姪
+ /// </summary>
+ public string Help { get; set; }
+
+ /// <summary>
+ /// 鍓嶇紑
+ /// </summary>
+ public string Prefix { get; set; }
+
+ /// <summary>
+ /// 鍚庣紑
+ /// </summary>
+ public string Suffix { get; set; }
+
+ /// <summary>
+ /// 鏍¢獙瑙勫垯
+ /// </summary>
+ public List<FormRules> Rules { get; set; }
+ }
+
+ /// <summary>
+ /// 鑺傜偣灞炴��
+ /// </summary>
+ public class FormOptions
+ {
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 甯姪淇℃伅
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string MaxLength { get; set; }
+
+ /// <summary>
+ /// 鏄惁闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙敤
+ /// </summary>
+ public bool Disabled { get; set; }
+ }
+
+ /// <summary>
+ /// 鏍¢獙瑙勫垯
+ /// </summary>
+ public class FormRules
+ {
+ /// <summary>
+ /// 鏄惁蹇呭~
+ /// </summary>
+ public bool Required { get; set; }
+
+ /// <summary>
+ /// 淇℃伅
+ /// </summary>
+ public string Message { get; set; }
+ }
+
+ /// <summary>
+ /// 琛ㄥ崟閰嶇疆
+ /// </summary>
+ public class FormConfig
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string Layout { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public FormLabelCol LabelCol { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public FormWrapperCol WrapperCol { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool HideRequiredMark { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CustomStyle { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class FormLabelCol
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public int XS { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int SM { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int MD { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int LG { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int XL { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int XXL { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class FormWrapperCol
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public int XS { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int SM { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int MD { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int LG { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int XL { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int XXL { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs
new file mode 100644
index 0000000..f54ca27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormEditDto.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 琛ㄥ崟缂栬緫
+ /// </summary>
+ public class FormEditDto : BaseDto
+ {
+ /// <summary>
+ ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// form琛ㄥ崟Json
+ /// </summary>
+ public string FormJson { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙戝竷
+ /// </summary>
+ public bool Publish { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷ID
+ /// </summary>
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ public int Version { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs
new file mode 100644
index 0000000..8281449
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPageSearch.cs
@@ -0,0 +1,20 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鏉′欢
+ /// </summary>
+ public class FormPageSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷
+ /// </summary>
+ public long? TypeId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs
new file mode 100644
index 0000000..b956892
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/Dto/FormPublishDto.cs
@@ -0,0 +1,20 @@
+锘縰sing Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍙戝竷鐘舵��
+ /// </summary>
+ public class FormPublishDto : BaseId
+ {
+ /// <summary>
+ /// 鍙戝竷鐘舵��
+ /// </summary>
+ public bool Publish { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷Id
+ /// </summary>
+ public long? Type { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs
new file mode 100644
index 0000000..8d2bcb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/FormService.cs
@@ -0,0 +1,187 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 琛ㄥ崟绠$悊
+ /// </summary>
+ [Route("api/formmanager")]
+ [ApiDescriptionSettings("琛ㄥ崟绠$悊", Name = "FormManager", Order = 100)]
+ public class FormService : IFormService, ITransient, IDynamicApiController
+ {
+ private readonly IRepository<SysForm> _sysformRep;
+ private readonly IRepository<SysDictData> _sysDictDataRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysformRep">琛ㄥ崟鏁版嵁琛�</param>
+ /// <param name="sysDictDataRep"></param>
+ public FormService(IRepository<SysForm> sysformRep, IRepository<SysDictData> sysDictDataRep)
+ {
+ _sysformRep = sysformRep;
+ _sysDictDataRep = sysDictDataRep;
+ }
+
+ /// <summary>
+ /// 鑾峰彇琛ㄥ崟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<FormDto>> GetPageList([FromQuery] FormPageSearch input)
+ {
+ var formList = await _sysformRep.DetachedEntities
+ .Join(_sysDictDataRep.DetachedEntities, f => f.TypeId, d => d.Id, (f, d) => new { f, d })
+ .Where(!string.IsNullOrWhiteSpace(input.Title), x => x.f.Title.Contains(input.Title))
+ .Where(input.TypeId != null, x => x.f.TypeId == input.TypeId)
+ .Select(x => new FormDto()
+ {
+ Id = x.f.Id,
+ Title = x.f.Title,
+ FormJson = x.f.FormJson,
+ Publish = x.f.Publish,
+ TypeId = x.f.TypeId,
+ TypeName = x.d.Value,
+ Version = x.f.Version,
+ CreatedUserName = x.f.CreatedUserName,
+ CreatedUserId = x.f.CreatedUserId,
+ CreatedTime = x.f.CreatedTime
+ })
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return formList;
+ }
+
+ /// <summary>
+ /// 娣诲姞
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task<FormDto> FormAdd(FormAddDto input)
+ {
+ bool bl = await CheckTitle(input.Title);
+ if (bl)
+ {
+ var form = await _sysformRep.InsertNowAsync(input.Adapt<SysForm>());
+ return form.Entity.Adapt<FormDto>();
+ }
+ else
+ throw Oops.Oh("瀛樺湪鐩稿悓鏍囬琛ㄥ崟锛岃淇敼琛ㄥ崟鏍囬");
+ }
+
+ /// <summary>
+ /// 鏇存柊琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [UnitOfWork]
+ [HttpPost("edit")]
+ public async Task UpdateEditForm(FormEditDto input)
+ {
+ var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == input.Id);
+ if (form == null)
+ throw Oops.Oh("鏈壘鍒板搴旇〃鍗曪紒");
+ form.FormJson = input.FormJson;
+ await _sysformRep.UpdateIncludeNowAsync(form, new[] { "FormJson" }, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ [HttpDelete("delete")]
+ public async Task Delete(BaseId input)
+ {
+ // 杩欓噷鍙互鍏堝垽鏂〃鍗曟槸鍚﹀凡缁忓湪娴佺▼涓娇鐢ㄤ簡
+ // 浣跨敤浜嗗垯涓嶈兘鍒犻櫎
+
+ // 鎴戣繖閲屾病鏈夊仛鍒ゆ柇
+ await _sysformRep.DeleteAsync(input.Id);
+ }
+
+ /// <summary>
+ /// 鍙戝竷琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("publish")]
+ public async Task Publish(FormPublishDto input)
+ {
+ var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == input.Id);
+ if (form == null)
+ throw Oops.Oh("鏈壘鍒板搴旇〃鍗曪紒");
+ form.Publish = input.Publish;
+ await _sysformRep.UpdateIncludeNowAsync(form, new[] { nameof(form.Publish) });
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曚竴瀹炰綋
+ /// </summary>
+ /// <param name="Input"></param>
+ /// <returns></returns>
+ [HttpGet("entity")]
+ public async Task<FormDto> Get([FromQuery] BaseId Input)
+ {
+ var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == Input.Id);
+ FormDto formDto = new FormDto();
+ formDto = form.Adapt<FormDto>();
+ formDto.NodesList = formDto.FormJson.FromJson<FormList>();
+ return formDto;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+ /// </summary>
+ /// <param name="Input"></param>
+ /// <returns></returns>
+ [HttpGet("entityview")]
+ public async Task<FormDto> GetView([FromQuery] BaseId Input)
+ {
+ var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Id == Input.Id);
+ FormDto formDto = new FormDto();
+ formDto = form.Adapt<FormDto>();
+ formDto.NodesList = formDto.FormJson.FromJson<FormList>();
+ foreach (var node in formDto.NodesList.List)
+ {
+ node.Options.Disabled = true;
+ }
+ return formDto;
+ }
+
+ /// <summary>
+ /// 鑾峰彇宸插彂甯冭〃鍗曞垪琛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("publislist")]
+ public async Task<dynamic> GetPulishList(long? typeId)
+ {
+ var form = await _sysformRep.DetachedEntities.Where(x => x.Publish == true)
+ .Where(typeId != null, x => x.TypeId == typeId)
+ .OrderByDescending(x => x.CreatedTime)
+ .Select(x => new { x.Title, x.Id, x.TypeId, NodeList = x.FormJson.FromJson<FormList>() })
+ .ToListAsync();
+ return form;
+ }
+
+ /// <summary>
+ /// 鍒ゆ柇鏍囬鏄惁閲嶅
+ /// </summary>
+ /// <param name="Title"></param>
+ /// <returns></returns>
+ private async Task<bool> CheckTitle(string Title)
+ {
+ var form = await _sysformRep.DetachedEntities.FirstOrDefaultAsync(x => x.Title == Title);
+ if (form == null)
+ return true;
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs
new file mode 100644
index 0000000..baf46ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Forms/IFormService.cs
@@ -0,0 +1,66 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 琛ㄥ崟绠$悊鎺ュ彛
+ /// </summary>
+ public interface IFormService
+ {
+ /// <summary>
+ /// 鑾峰彇琛ㄥ崟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<FormDto>> GetPageList([FromQuery] FormPageSearch input);
+
+ /// <summary>
+ /// 娣诲姞
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<FormDto> FormAdd(FormAddDto input);
+
+ /// <summary>
+ /// 鏇存柊琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateEditForm(FormEditDto input);
+
+ /// <summary>
+ /// 鍒犻櫎琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ Task Delete(BaseId input);
+
+ /// <summary>
+ /// 鍙戝竷琛ㄥ崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task Publish(FormPublishDto input);
+
+ /// <summary>
+ /// 鑾峰彇鍗曚竴瀹炰綋
+ /// </summary>
+ /// <param name="Input"></param>
+ /// <returns></returns>
+ Task<FormDto> Get(BaseId Input);
+
+ /// <summary>
+ /// 鑾峰彇鍗曚竴瀹炰綋鏌ョ湅
+ /// </summary>
+ /// <param name="Input"></param>
+ /// <returns></returns>
+ Task<FormDto> GetView([FromQuery] BaseId Input);
+
+ /// <summary>
+ /// 鑾峰彇鍙戝竷琛ㄥ崟鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ Task<dynamic> GetPulishList(long? typeId);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs
new file mode 100644
index 0000000..90e3ee6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/ChatHub.cs
@@ -0,0 +1,123 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.DataEncryption;
+using Microsoft.AspNetCore.SignalR;
+using UAParser;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑱婂ぉ闆嗙嚎鍣�
+ /// </summary>
+ public class ChatHub : Hub<IChatClient>
+ {
+ private readonly ISysCacheService _cache;
+ private readonly ISendMessageService _sendMessageService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="cache"></param>
+ /// <param name="sendMessageService"></param>
+ public ChatHub(ISysCacheService cache, ISendMessageService sendMessageService)
+ {
+ _cache = cache;
+ _sendMessageService = sendMessageService;
+ }
+
+ /// <summary>
+ /// 杩炴帴
+ /// </summary>
+ /// <returns></returns>
+ public override async Task OnConnectedAsync()
+ {
+ var token = Context.GetHttpContext().Request.Query["access_token"];
+ var claims = JWTEncryption.ReadJwtToken(token)?.Claims;
+
+ var client = Parser.GetDefault().Parse(Context.GetHttpContext().Request.Headers["User-Agent"]);
+ var loginBrowser = client.UA.Family + client.UA.Major;
+ var loginOs = client.OS.Family + client.OS.Major;
+
+ var userId = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_USERID)?.Value;
+ var account = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_ACCOUNT)?.Value;
+ var name = claims.FirstOrDefault(e => e.Type == ClaimConst.CLAINM_NAME)?.Value;
+ //var tenantId = claims.FirstOrDefault(e => e.Type == ClaimConst.TENANT_ID)?.Value;
+ var onlineUsers = await _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+ onlineUsers.Add(new OnlineUser
+ {
+ ConnectionId = Context.ConnectionId,
+ UserId = long.Parse(userId),
+ LastTime = DateTime.Now,
+ LastLoginIp = App.HttpContext.GetRequestIPv4(),
+ LastLoginBrowser = loginBrowser,
+ LastLoginOs = loginOs,
+ Account = account,
+ Name = name,
+ //TenantId = Convert.ToInt64(tenantId),
+ });
+ await _cache.SetAsync(CommonConst.CACHE_KEY_ONLINE_USER, onlineUsers);
+ }
+
+ /// <summary>
+ /// 鏂紑
+ /// </summary>
+ /// <param name="exception"></param>
+ /// <returns></returns>
+ public override async Task OnDisconnectedAsync(Exception exception)
+ {
+ if (!string.IsNullOrEmpty(Context.ConnectionId))
+ {
+ var onlineUsers = await _cache.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+ if (onlineUsers == null) return;
+
+ onlineUsers.RemoveAll(u => u.ConnectionId == Context.ConnectionId);
+ await _cache.SetAsync(CommonConst.CACHE_KEY_ONLINE_USER, onlineUsers);
+ }
+ }
+
+ /// <summary>
+ /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+ /// 鍙戦�佷俊鎭粰鏌愪釜浜�
+ /// </summary>
+ /// <param name="_message"></param>
+ /// <returns></returns>
+ public async Task ClientsSendMessage(MessageinputDto _message)
+ {
+ await _sendMessageService.SendMessageToUser(_message.title, _message.message, _message.messageType, _message.userId);
+ }
+
+ /// <summary>
+ /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+ /// 鍙戦�佷俊鎭粰鎵�鏈変汉
+ /// </summary>
+ /// <param name="_message"></param>
+ /// <returns></returns>
+ public async Task ClientsSendMessagetoAll(MessageinputDto _message)
+ {
+ await _sendMessageService.SendMessageToAllUser(_message.title, _message.message, _message.messageType);
+ }
+
+ /// <summary>
+ /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+ /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ /// </summary>
+ /// <param name="_message"></param>
+ /// <returns></returns>
+ public async Task ClientsSendMessagetoOther(MessageinputDto _message)
+ {
+ // _message.userId涓哄彂閫佷汉ID
+ await _sendMessageService.SendMessageToOtherUser(_message.title, _message.message, _message.messageType, _message.userId);
+ }
+
+ /// <summary>
+ /// 鍓嶇璋冪敤鍙戦�佹柟娉�
+ /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+ /// </summary>
+ /// <param name="_message"></param>
+ /// <returns></returns>
+ public async Task ClientsSendMessagetoUsers(MessageinputDto _message)
+ {
+ await _sendMessageService.SendMessageToUsers(_message.title, _message.message, _message.messageType, _message.userIds);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs
new file mode 100644
index 0000000..b5b4bc0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/Dto/MessageinputDto.cs
@@ -0,0 +1,35 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class MessageinputDto
+ {
+ /// <summary>
+ /// 鐢ㄦ埛ID
+ /// </summary>
+ public long userId { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛ID鍒楄〃
+ /// </summary>
+ public List<long> userIds { get; set; }
+
+ /// <summary>
+ /// 娑堟伅鏍囬
+ /// </summary>
+ public string title { get; set; }
+
+ /// <summary>
+ /// 娑堟伅鍐呭
+ /// </summary>
+ public string message { get; set; }
+
+ /// <summary>
+ /// 娑堟伅绫诲瀷
+ /// </summary>
+ public MessageType messageType { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs
new file mode 100644
index 0000000..7ae9112
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Hubs/IChatClient.cs
@@ -0,0 +1,25 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑱婂ぉ瀹㈡埛绔帴鍙e畾涔�
+ /// </summary>
+ public interface IChatClient
+ {
+ /// <summary>
+ /// 寮哄埗涓嬬嚎
+ /// </summary>
+ /// <returns></returns>
+ Task ForceExist();
+ /// <summary>
+ /// 鍗曠敤鎴风櫥褰曪紝寮哄埗涓嬬嚎
+ /// </summary>
+ /// <returns></returns>
+ Task SingleLoginForceExist();
+ /// <summary>
+ /// 鍙戦�佷俊鎭�
+ /// </summary>
+ /// <param name="context"></param>
+ /// <returns></returns>
+ Task ReceiveMessage(object context);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs
new file mode 100644
index 0000000..25afa86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrasOutput.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class ContrasOutput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public List<ContrastLowCode_Database> Add { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<ContrastLowCode_Database> Del { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs
new file mode 100644
index 0000000..33611a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/ContrastLowCode.cs
@@ -0,0 +1,124 @@
+锘縩amespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class ContrastLowCode
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string Controls { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<ContrastLowCode_Database> Databases { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ContrastLowCode_Database
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public Guid Id { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Control_Key { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Control_Label { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Control_Model { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Control_Type { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ弿杩�
+ /// </summary>
+ public string TableDesc { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚嶇О
+ /// </summary>
+ public string FieldName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷
+ /// </summary>
+ public Type DbType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷
+ /// </summary>
+ public string DbTypeName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷
+ /// </summary>
+ public string DtoTypeName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+ /// </summary>
+ public string DbParam { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~
+ /// </summary>
+ public bool? IsRequired { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄剧ず
+ /// </summary>
+ public bool? WhetherTable { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public bool? WhetherOrderBy { get; set; }
+
+ /// <summary>
+ /// 澧炴敼
+ /// </summary>
+ public bool? whetherAddUpdate { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄煡璇�
+ /// </summary>
+ public bool? QueryWhether { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鏂瑰紡
+ /// </summary>
+ public string QueryType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鑱斿悎涓婚敭
+ /// </summary>
+ public bool? WhetherUnionKey { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs
new file mode 100644
index 0000000..cb77377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/Front_CodeGenerate.cs
@@ -0,0 +1,122 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+
+namespace Admin.NET.Application.Service.System.LowCode.Dto
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class Front_CodeGenerate
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string TableDesc { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙槸鏌ヨ
+ /// </summary>
+ public bool IsOnlyQuery { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string ProName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string CamelizeClassName { get; set; }
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<CodeGenConfig> QueryWhetherList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<CodeGenConfig> TableField { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<CodeGenConfig> FileTableField { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<GenEntity_Field> Fields { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public long? LowCodeId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string FormDesign { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string DynamicData { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<Front_Dynamic> DynamicLoad_Dict { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool IsFile { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被
+ /// </summary>
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+ /// </summary>
+ public string ImportExcelCustomizationContent { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs
new file mode 100644
index 0000000..ca3b92a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/GenEntity.cs
@@ -0,0 +1,115 @@
+锘縰sing Furion.Extras.Admin.NET.Entity;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode.Dto
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class GenEntity
+ {
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ public string NameSpace { get; set; }
+
+
+ /// <summary>
+ /// 妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+ /// </summary>
+ public string ModuleName { get; set; }
+
+
+ /// <summary>
+ /// 琛ㄥ悕
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ弿杩�
+ /// </summary>
+ public string TableDesc { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕绉�
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭悕
+ /// </summary>
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 绋嬪簭闆�
+ /// </summary>
+ public string ProName { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗�
+ /// </summary>
+ public string FormDesign { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<GenEntity_Field> Fields { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<SysLowCodeDataBase> DataBase { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class GenEntity_Field
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 瀛楁澶囨敞
+ /// </summary>
+ public string ColumnComment { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚嶇О
+ /// </summary>
+ public string FieldName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷
+ /// </summary>
+ public string NetType { get; set; }
+
+ /// <summary>
+ /// 浼犲叆鏁版嵁绫诲瀷
+ /// </summary>
+ public string DtoNetType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+ /// </summary>
+ public string DbParam { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~
+ /// </summary>
+ public bool IsRequired { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs
new file mode 100644
index 0000000..7f98756
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/Dto/LowCodeInput.cs
@@ -0,0 +1,155 @@
+锘縰sing Admin.NET.Application.Service.System.LowCode.Dto;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode.Dto
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚鍙傛暟绫�
+ /// </summary>
+ public class LowCodePageInput : PageInputBase
+ {
+ /// <summary>
+ /// 涓氬姟鍚嶇О
+ /// </summary>
+ public string BusName { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddLowCodeInput
+ {
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+ public string NameSpace { get; set; }
+
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟缂栫爜涓嶈兘涓虹┖")]
+ public long MenuPid { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteLowCodeInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateLowCodeInput
+ {
+ /// <summary>
+ /// 浠g爜鐢熸垚鍣↖d
+ /// </summary>
+ [Required(ErrorMessage = "浠g爜鐢熸垚鍣↖d涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Required(ErrorMessage = "浣滆�呭鍚嶄笉鑳戒负绌�")]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Required(ErrorMessage = "鐢熸垚鏂瑰紡涓嶈兘涓虹┖")]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Required(ErrorMessage = "鏁版嵁搴撳悕涓嶈兘涓虹┖")]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Required(ErrorMessage = "鍛藉悕绌洪棿涓嶈兘涓虹┖")]
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ [Required(ErrorMessage = "妯″潡璺緞涓嶈兘涓虹┖")]
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ [Required(ErrorMessage = "涓氬姟鍚嶄笉鑳戒负绌�")]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟搴旂敤鍒嗙被涓嶈兘涓虹┖")]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟缂栫爜涓嶈兘涓虹┖")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗曠被鍨�
+ /// </summary>
+ public FormDesignType FormDesignType { get; set; } = FormDesignType.VueFormDesign;
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗�
+ /// </summary>
+ public string FormDesign { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ崟杞暟鎹粨鏋�
+ /// </summary>
+ public List<ContrastLowCode_Database> Databases { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs
new file mode 100644
index 0000000..eb1096b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/GenEntityComparer.cs
@@ -0,0 +1,48 @@
+锘縰sing Furion.Extras.Admin.NET.Service.LowCode.Dto;
+using System.Diagnostics.CodeAnalysis;
+
+namespace Furion.Extras.Admin.NET.Service.LowCode
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class GenEntityComparer : IEqualityComparer<GenEntity>
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="x"></param>
+ /// <param name="y"></param>
+ /// <returns></returns>
+ public bool Equals(GenEntity x, GenEntity y)
+ {
+ bool result = true;
+ if (x == null && y == null)
+ {
+ result = true;
+ }
+ else if (x == null ^ y == null)
+ {
+ result = false;
+ }
+ else
+ {
+ result = (x.TableDesc == y.TableDesc) &&
+ (x.ClassName == y.ClassName) &&
+ (x.TableName == y.TableName) &&
+ (x.NameSpace == y.NameSpace);
+ }
+ return result;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public int GetHashCode([DisallowNull] GenEntity obj)
+ {
+ return obj == null ? 0 : obj.ToString().GetHashCode();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs
new file mode 100644
index 0000000..a94fed0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/ILowCodeService.cs
@@ -0,0 +1,56 @@
+锘�//using Admin.NET.Application.Service.System.LowCode.Dto;
+//using Admin.NET.Core;
+//using Furion.Extras.Admin.NET.Entity;
+//using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+//using Microsoft.AspNetCore.Mvc;
+
+//namespace Furion.Extras.Admin.NET.Service.LowCode
+//{
+// /// <summary>
+// ///
+// /// </summary>
+// public interface ILowCodeService
+// {
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// Task Add(AddLowCodeInput input);
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="inputs"></param>
+// /// <returns></returns>
+// Task Delete(List<DeleteLowCodeInput> inputs);
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// Task<PageResult<SysLowCode>> QueryPageList([FromQuery] LowCodePageInput input);
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// Task Update(UpdateLowCodeInput input);
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="contrast"></param>
+// /// <returns></returns>
+// ContrasOutput Contrast(ContrastLowCode contrast);
+
+// /// <summary>
+// ///
+// /// </summary>
+// /// <param name="id"></param>
+// /// <returns></returns>
+// Task<bool> RunLocal(long id);
+// }
+//}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs
new file mode 100644
index 0000000..fb12490
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/LowCode/LowCodeService.cs
@@ -0,0 +1,548 @@
+锘�//using Admin.NET.Application;
+//using Admin.NET.Application.Service.System.LowCode.Dto;
+//using Admin.NET.Core;
+//using Admin.NET.Core.Util.LowCode.Front.Code;
+//using Admin.NET.Core.Util.LowCode.Front.Model;
+//using Furion.DatabaseAccessor;
+//using Furion.DatabaseAccessor.Extensions;
+//using Furion.DependencyInjection;
+//using Furion.DynamicApiController;
+//using Furion.Extras.Admin.NET.Entity;
+//using Furion.Extras.Admin.NET.Service.LowCode.Dto;
+//using Furion.Extras.Admin.NET.Util;
+//using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+//using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+//using Furion.FriendlyException;
+//using Furion.ViewEngine;
+//using Mapster;
+//using Microsoft.AspNetCore.Mvc;
+//using Microsoft.EntityFrameworkCore;
+//using Microsoft.Extensions.Configuration;
+//using Newtonsoft.Json;
+//using NString;
+//using System.Linq.Dynamic.Core;
+//using System.Text;
+
+//namespace Furion.Extras.Admin.NET.Service.LowCode
+//{
+// /// <summary>
+// /// 浣庝唬鐮佹ā鍧楁湇鍔�
+// /// </summary>
+// [ApiDescriptionSettings(Name = "LowCode", Order = 100)]
+// [Route("api/lowcode")]
+// public class LowCodeService : ILowCodeService, IDynamicApiController, ITransient
+// {
+// private readonly IRepository<SysLowCode> _sysLowCodeRep;
+// private readonly IRepository<SysLowCodeDataBase> _sysLowCodeDataBaseRep;
+// private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+// private readonly IConfiguration _configuration;
+// private readonly IViewEngine _viewEngine;
+
+// /// <summary>
+// /// 鏋勯�犲嚱鏁�
+// /// </summary>
+// /// <param name="sysLowCodeRep"></param>
+// /// <param name="sysLowCodeDataBaseRep"></param>
+// /// <param name="sysMenuRep"></param>
+// /// <param name="configuration"></param>
+// /// <param name="viewEngine"></param>
+// public LowCodeService(IRepository<SysLowCode> sysLowCodeRep,
+// IRepository<SysLowCodeDataBase> sysLowCodeDataBaseRep,
+// IRepository<SysMenu> sysMenuRep,
+// IConfiguration configuration,
+// IViewEngine viewEngine)
+// {
+// _sysLowCodeRep = sysLowCodeRep;
+// _sysLowCodeDataBaseRep = sysLowCodeDataBaseRep;
+// _sysMenuRep = sysMenuRep;
+// _configuration = configuration;
+// _viewEngine = viewEngine;
+// }
+
+// /// <summary>
+// /// 鍒嗛〉鏌ヨ
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// /// <exception cref="NotImplementedException"></exception>
+// [HttpGet("page")]
+// public async Task<PageResult<SysLowCode>> QueryPageList([FromQuery] LowCodePageInput input)
+// {
+// var busName = !string.IsNullOrEmpty(input.BusName?.Trim());
+// var lowCodes = await _sysLowCodeRep.DetachedEntities
+// .Where((busName, u => EF.Functions.Like(u.BusName, $"%{input.BusName.Trim()}%")))
+// .ToADPagedListAsync(input.PageNo, input.PageSize);
+// return lowCodes;
+// }
+
+// /// <summary>
+// /// 鑾峰彇妯″潡璇︽儏
+// /// </summary>
+// /// <param name="id"></param>
+// /// <returns></returns>
+// [HttpGet("info/{id}")]
+// public SysLowCode Info(long id)
+// {
+// return _sysLowCodeRep.Where(x => x.Id == id).Include(x => x.Databases).FirstOrDefault();
+// }
+
+// /// <summary>
+// /// 娣诲姞
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// /// <exception cref="NotImplementedException"></exception>
+// [HttpPost("add")]
+// public async Task Add(AddLowCodeInput input)
+// {
+// var isExist = await _sysLowCodeRep.DetachedEntities.AnyAsync(u => u.BusName == input.BusName);
+// if (isExist)
+// throw Oops.Oh(ErrorCode.D1600);
+
+// var lowCode = input.Adapt<SysLowCode>();
+// var newLowCode = await lowCode.InsertNowAsync();
+// }
+
+// /// <summary>
+// /// 鍒犻櫎
+// /// </summary>
+// /// <param name="inputs"></param>
+// /// <returns></returns>
+// /// <exception cref="NotImplementedException"></exception>
+// [HttpPost("del")]
+// public async Task Delete(List<DeleteLowCodeInput> inputs)
+// {
+// if (inputs == null || inputs.Count < 1) return;
+
+// foreach (var u in inputs)
+// {
+// _sysLowCodeDataBaseRep.Where(x => x.SysLowCodeId == u.Id).DeleteRange(_sysLowCodeDataBaseRep.Context);
+// await _sysLowCodeRep.DeleteAsync(u.Id);
+// }
+// }
+
+// /// <summary>
+// /// 鏇存柊
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// /// <exception cref="NotImplementedException"></exception>
+// [HttpPost("edit")]
+// public async Task Update(UpdateLowCodeInput input)
+// {
+// var lowCode = input.Adapt<SysLowCode>();
+// await lowCode.UpdateAsync();
+
+// await _sysLowCodeDataBaseRep.Context.DeleteRangeAsync<SysLowCodeDataBase>(x => x.SysLowCodeId == input.Id);
+// await _sysLowCodeDataBaseRep.InsertAsync(lowCode.Databases);
+// }
+
+// /// <summary>
+// /// 瀵规瘮缁勪欢
+// /// </summary>
+// /// <param name="contrast"></param>
+// /// <returns></returns>
+// /// <exception cref="NotImplementedException"></exception>
+// [HttpPost("contrast")]
+// public ContrasOutput Contrast(ContrastLowCode contrast)
+// {
+// List<IFront> fronts = contrast.Controls.ConvertToFront().AllFront();
+
+// DataCompareUtil<IFront, ContrastLowCode_Database> dataCompare
+// = new DataCompareUtil<IFront, ContrastLowCode_Database>(x => x.Key, x => x.Id);
+
+// dataCompare.PushCompare(x => x.Key, x => x.Control_Key);
+// dataCompare.PushCompare(x => x.Label, x => x.Control_Label);
+// dataCompare.PushCompare(x => x.Model, x => x.Control_Model);
+// dataCompare.PushCompare(x => x.Type, x => x.Control_Type);
+
+// var compare = dataCompare.Compare(fronts, contrast.Databases);
+
+// List<ContrastLowCode_Database> list = new List<ContrastLowCode_Database>();
+
+// var tables = contrast.Databases.Where(x => !string.IsNullOrEmpty(x.TableName) && !string.IsNullOrEmpty(x.TableName))
+// .Select(x => new { x.TableName, x.ClassName, x.TableDesc })
+// .Distinct()
+// .ToList();
+
+// if (tables.Count != 1)
+// {
+// tables.Clear();
+// }
+
+// compare.NoContain_2.ForEach(item =>
+// {
+// list.AddRange(item.ReadFront_BindDatabase(_sysLowCodeRep.ProviderName).Select(x => new ContrastLowCode_Database()
+// {
+// Control_Key = item.Key,
+// Control_Label = item.Label,
+// Control_Model = item.Model,
+// Control_Type = item.Type,
+// DbParam = x.DbParam,
+// DbType = x.DbType,
+// DbTypeName = x.DbType.Name,
+// DtoTypeName = x.DtoType == null ? x.DbType.Name : x.DtoType.Name,
+// FieldName = $"{item.Model}{x.Suffix}",
+// IsRequired = true,
+// Id = Guid.NewGuid(),
+// TableName = tables.Select(x => x.TableName).FirstOrDefault(),
+// ClassName = tables.Select(x => x.ClassName).FirstOrDefault(),
+// TableDesc = tables.Select(x => x.TableDesc).FirstOrDefault(),
+// QueryType = "equery",
+// QueryWhether = true,
+// whetherAddUpdate = true,
+// WhetherOrderBy = true,
+// WhetherTable = true
+// }));
+// });
+
+// return new ContrasOutput()
+// {
+// Add = list,
+// Del = compare.NoContain_1
+// };
+// }
+
+// /// <summary>
+// /// 鐢熸垚浠g爜
+// /// </summary>
+// /// <param name="id"></param>
+// /// <returns></returns>
+// [HttpGet("runLocal/{id}")]
+// public async Task<bool> RunLocal(long id)
+// {
+// var info = Info(id);
+
+// var list = info.Databases.Select(x => new GenEntity()
+// {
+// NameSpace = info.NameSpace,
+// ModuleName = info.ModuleName,
+// ClassName = x.ClassName,
+// TableDesc = x.TableDesc,
+// TableName = x.TableName,
+// DatabaseName = info.DatabaseName,
+// AuthorName = info.AuthorName,
+// BusName = info.BusName,
+// ProName = info.ProName,
+// FormDesign = info.FormDesign
+// }).Distinct(new GenEntityComparer()).ToList();
+
+// list.ForEach(item =>
+// {
+// item.DataBase = info.Databases.ToList();
+// item.Fields = info.Databases.Where(x => x.ClassName == item.ClassName).Select(x => new GenEntity_Field()
+// {
+// ColumnComment = x.Control_Label,
+// DbParam = x.DbParam,
+// FieldName = x.FieldName,
+// IsRequired = x.IsRequired == null ? false : x.IsRequired.Value,
+// NetType = x.DbTypeName,
+// DtoNetType = x.DtoTypeName == null ? x.DbTypeName : x.DtoTypeName,
+// }).ToList();
+// });
+
+// string TableName = string.Empty;
+
+// list.ForEach(item =>
+// {
+// TableName = item.TableName;
+
+// var AllDynamic = item.FormDesign.ConvertToFront().AllFront().AllDynamic();
+// Dictionary<string, List<string>> dynamicData = new Dictionary<string, List<string>>();
+// List<Front_Dynamic> dynamicLoad_dict = new List<Front_Dynamic>();
+
+// AllDynamic.Where(x => x.Dynamic).Select(x => x.DynamicKey).ToList().ForEach(item =>
+// {
+// dynamicData.Add(item, new List<string>());
+// var d = item.GetDynamic();
+// if (d != null)
+// {
+// if (d.Head == "dict")
+// {
+// dynamicLoad_dict.Add(d);
+// }
+// }
+// });
+
+// List<CodeGenConfig> tableFieldList = item.DataBase.Select(x => new CodeGenConfig()
+// {
+// ColumnComment = x.Control_Label,
+// ColumnKey = String.Empty,
+// ColumnName = x.FieldName,
+// DataType = x.DbTypeName,
+// DtoNetType = x.DtoTypeName,
+// NetType = x.DbTypeName,
+// OriginalColumnName = x.FieldName,
+// QueryType = x.QueryType,
+// QueryWhether = x.QueryWhether.HasValue && x.QueryWhether.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+// WhetherAddUpdate = x.WhetherAddUpdate.HasValue && x.WhetherAddUpdate.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+// WhetherOrderBy = x.WhetherOrderBy.HasValue && x.WhetherOrderBy.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+// WhetherRequired = x.IsRequired.HasValue && x.IsRequired.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+// WhetherTable = x.WhetherTable.HasValue && x.WhetherTable.Value ? YesOrNot.Y.ToString() : YesOrNot.N.ToString(),
+// WhetherRetract = YesOrNot.N.ToString(),
+// WhetherCommon = YesOrNot.Y.ToString(),
+// NetTypeIsNullLable = String.Empty,
+// Id = 0,
+// FkEntityName = null,
+// FkColumnNetType = null,
+// FkColumnName = null,
+// EffectType = null,
+// DictTypeCode = null,
+// CodeGen = null,
+// CodeGenId = 0,
+// }).ToList();
+
+// tableFieldList.Add(new CodeGenConfig()
+// {
+// ColumnComment = "Id",
+// ColumnKey = "True",
+// ColumnName = "Id",
+// DataType = null,
+// DtoNetType = "long",
+// NetType = "long",
+// OriginalColumnName = "Id",
+// QueryType = null,
+// QueryWhether = YesOrNot.N.ToString(),
+// WhetherAddUpdate = YesOrNot.N.ToString(),
+// WhetherOrderBy = YesOrNot.N.ToString(),
+// WhetherRequired = YesOrNot.N.ToString(),
+// WhetherTable = YesOrNot.N.ToString(),
+// WhetherRetract = YesOrNot.N.ToString(),
+// WhetherCommon = YesOrNot.Y.ToString(),
+// NetTypeIsNullLable = String.Empty,
+// Id = 0,
+// FkEntityName = null,
+// FkColumnNetType = null,
+// FkColumnName = null,
+// EffectType = null,
+// DictTypeCode = null,
+// CodeGen = null,
+// CodeGenId = 0,
+// });
+
+// tableFieldList.ForEach(u =>
+// {
+// switch (u.NetType.ToLower())
+// {
+// case "int":
+// case "int32":
+// case "long":
+// case "guid":
+// case "decimal":
+// case "datetime":
+// case "datetimeoffset":
+// u.NetTypeIsNullLable = "?";
+// break;
+// }
+// u.OriginalColumnName = u.ColumnName;
+// });
+
+// var queryWhetherList = tableFieldList.Where(u => u.QueryWhether == YesOrNot.Y.ToString()).ToList(); // 鍓嶇鏌ヨ闆嗗悎
+
+// var ss = App.Configuration.GetSection("CodeGenConfig");
+
+// int config_index = 0;
+// string ResultHead = "@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate\r\n";
+// while (!string.IsNullOrEmpty(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Name")))
+// {
+// var config_data = new
+// {
+// HostPath = App.WebHostEnvironment.WebRootPath,
+// CodePath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName,
+// FrontendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\iwara-wms-web\src\views\main\",
+// ApiJsPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.Parent.FullName + @"\iwara-wms-web\src\api\modular\main\",
+// NameSpace = item.NameSpace,
+// ClassName = item.ClassName
+// };
+// var SourceFile = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Source:File"), config_data);
+// var TargetFile = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Target:File"), config_data);
+// var TargetDir = StringTemplate.Format(_configuration.GetValue<string>($"LowCodeConfig:{config_index}:Target:Dir"), config_data);
+// var IsFrontend = _configuration.GetValue<bool?>($"LowCodeConfig:{config_index}:IsFrontend");
+
+// if (IsFrontend.HasValue && IsFrontend.Value == true) // 閫傚簲鍓嶇棣栧瓧姣嶅皬鍐�
+// {
+// tableFieldList.ForEach(u =>
+// {
+// u.ColumnName = u.ColumnName.Substring(0, 1).ToLower() + u.ColumnName[1..];
+// });
+// }
+
+// #region 鎵ц浠g爜鐢熸垚
+
+// var tContent = File.ReadAllText(SourceFile);
+
+// if (tContent.IndexOf(ResultHead) == 0) tContent = tContent.Substring(ResultHead.Length);
+
+// var data = new
+// {
+// TableName = item.TableName,
+// NameSpace = item.NameSpace,
+// Fields = item.Fields,
+// ClassName = item.ClassName,
+// TableDesc = item.TableDesc,
+// DatabaseName = item.DatabaseName,
+// AuthorName = item.AuthorName,
+// BusName = item.BusName,
+// ProName = item.ProName,
+// CamelizeClassName = item.TableName.Substring(0, 1).ToLower() + item.TableName[1..], //棣栧瓧姣嶅皬鍐�
+// QueryWhetherList = queryWhetherList,
+// TableField = tableFieldList,
+// LowCodeId = id,
+// FormDesign = item.FormDesign,
+// DynamicData = JsonConvert.SerializeObject(dynamicData),
+// DynamicLoad_Dict = dynamicLoad_dict,
+// IsFile = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).Any(),
+// FileTableField = tableFieldList.Where(x => x.DtoNetType.Contains("Front_FileDto")).ToList()
+// };
+
+// var tResult = _viewEngine.RunCompileFromCached(tContent, data);
+// if (!Directory.Exists(TargetDir)) Directory.CreateDirectory(TargetDir);
+// File.WriteAllText($"{TargetDir}{TargetFile}", tResult, Encoding.UTF8);
+
+// #endregion 鎵ц浠g爜鐢熸垚
+
+// config_index++;
+// }
+// });
+
+// if (!string.IsNullOrEmpty(TableName))
+// {
+// await AddMenu(info.DatabaseName.Substring(0, 5), TableName, info.BusName, info.MenuApplication, info.MenuPid);
+// }
+
+// return true;
+// }
+
+// private async Task AddMenu(string menucodePre, string className, string busName, string application, long pid)
+// {
+// // 瀹氫箟鑿滃崟缂栫爜鍓嶇紑
+// var codePrefix = menucodePre + "_" + className.ToLower();//鏀逛负鍙栨暟鎹簱瀹氫綅鍣ㄧ殑鍓嶄簲涓瓧姣嶆柟渚垮尯鍒嗕笟鍔� //"dilon_" + className.ToLower();
+
+// // 鍏堝垹闄よ琛ㄥ凡鐢熸垚鐨勮彍鍗曞垪琛�
+// var menus = await _sysMenuRep.DetachedEntities.Where(u => u.Code == codePrefix || u.Code.StartsWith(codePrefix + "_")).ToListAsync();
+// await _sysMenuRep.DeleteAsync(menus);
+
+// // 濡傛灉 pid 涓� 0 璇存槑涓洪《绾ц彍鍗�, 闇�瑕佸垱寤洪《绾х洰褰�
+// if (pid == 0)
+// {
+// // 鐩綍
+// var menuType0 = new SysMenu
+// {
+// Pid = 0,
+// Pids = "[0],",
+// Name = busName + "绠$悊",
+// Code = codePrefix,
+// Type = MenuType.DIR,
+// Icon = "robot",
+// Router = "/" + className.ToLower(),
+// Component = "PageView",
+// Application = application
+// };
+// pid = _sysMenuRep.InsertNowAsync(menuType0).GetAwaiter().GetResult().Entity.Id;
+// }
+// // 鐢变簬鍚庣画鑿滃崟浼氭湁淇敼, 闇�瑕佸垽鏂笅 pid 鏄惁瀛樺湪, 涓嶅瓨鍦ㄦ姤閿�
+// else if (!await _sysMenuRep.DetachedEntities.AnyAsync(e => e.Id == pid))
+// throw Oops.Oh(ErrorCode.D1505);
+
+// // 鑿滃崟
+// var menuType1 = new SysMenu
+// {
+// Pid = pid,
+// Pids = "[0],[" + pid + "],",
+// Name = busName + "绠$悊",
+// Code = codePrefix + "_mgr",
+// Type = MenuType.MENU,
+// Router = "/" + className.ToLower(),
+// Component = "main/" + className + "/index",
+// Application = application,
+// OpenType = MenuOpenType.COMPONENT
+// };
+// var pid1 = _sysMenuRep.InsertNowAsync(menuType1).GetAwaiter().GetResult().Entity.Id;
+
+// // 鎸夐挳-page
+// var menuType2 = new SysMenu
+// {
+// Pid = pid1,
+// Pids = "[0],[" + pid + "],[" + pid1 + "],",
+// Name = busName + "鏌ヨ",
+// Code = codePrefix + "_mgr_page",
+// Type = MenuType.BTN,
+// Permission = className + ":page",
+// Application = application,
+// }.InsertAsync();
+
+// // 鎸夐挳-detail
+// var menuType2_1 = new SysMenu
+// {
+// Pid = pid1,
+// Pids = "[0],[" + pid + "],[" + pid1 + "],",
+// Name = busName + "璇︽儏",
+// Code = codePrefix + "_mgr_detail",
+// Type = MenuType.BTN,
+// Permission = className + ":detail",
+// Application = application,
+// }.InsertAsync();
+
+// // 鎸夐挳-add
+// var menuType2_2 = new SysMenu
+// {
+// Pid = pid1,
+// Pids = "[0],[" + pid + "],[" + pid1 + "],",
+// Name = busName + "澧炲姞",
+// Code = codePrefix + "_mgr_add",
+// Type = MenuType.BTN,
+// Permission = className + ":add",
+// Application = application,
+// }.InsertAsync();
+
+// // 鎸夐挳-delete
+// var menuType2_3 = new SysMenu
+// {
+// Pid = pid1,
+// Pids = "[0],[" + pid + "],[" + pid1 + "],",
+// Name = busName + "鍒犻櫎",
+// Code = codePrefix + "_mgr_delete",
+// Type = MenuType.BTN,
+// Permission = className + ":delete",
+// Application = application,
+// }.InsertAsync();
+
+// // 鎸夐挳-edit
+// var menuType2_4 = new SysMenu
+// {
+// Pid = pid1,
+// Pids = "[0],[" + pid + "],[" + pid1 + "],",
+// Name = busName + "缂栬緫",
+// Code = codePrefix + "_mgr_edit",
+// Type = MenuType.BTN,
+// Permission = className + ":edit",
+// Application = application,
+// }.InsertAsync();
+// }
+
+// private List<string> GetTemplatePathList()
+// {
+// var templatePath = App.WebHostEnvironment.WebRootPath + @"\Template\";
+// return new List<string>()
+// {
+// templatePath + "Entity.cs.cshtml"
+// };
+// }
+
+// /// <summary>
+// /// 璁剧疆鐢熸垚鏂囦欢璺緞
+// /// </summary>
+// /// <param name="input"></param>
+// /// <returns></returns>
+// private List<string> GetTargetPathList(GenEntity input)
+// {
+// var backendPath = new DirectoryInfo(App.WebHostEnvironment.ContentRootPath).Parent.FullName + @"\" + input.NameSpace + @"\Entity\";
+// var outputPath = backendPath + @"\" + input.ClassName + ".cs";
+
+// return new List<string>()
+// {
+// outputPath
+// };
+// }
+// }
+//}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs
new file mode 100644
index 0000000..04829a4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/AntDesignTreeNode.cs
@@ -0,0 +1,79 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐧诲綍鑿滃崟-AntDesign鑿滃崟绫诲瀷
+ /// </summary>
+ public class AntDesignTreeNode
+ {
+ /// <summary>
+ /// id
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 鐖秈d
+ /// </summary>
+ public long? Pid { get; set; }
+
+ /// <summary>
+ /// 璺敱鍚嶇О, 蹇呴』璁剧疆,涓斾笉鑳介噸鍚�
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缁勪欢
+ /// </summary>
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�, 璁块棶杩欎釜璺敱鏃�, 鑷畾杩涜閲嶅畾鍚�
+ /// </summary>
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 璺敱鍏冧俊鎭紙璺敱闄勫甫鎵╁睍淇℃伅锛�
+ /// </summary>
+ public Meta Meta { get; set; }
+
+ /// <summary>
+ /// 璺緞
+ /// </summary>
+ public string Path { get; set; }
+
+ /// <summary>
+ /// 鎺у埗璺敱鍜屽瓙璺敱鏄惁鏄剧ず鍦� sidebar
+ /// </summary>
+ public bool Hidden { get; set; }
+ }
+
+ /// <summary>
+ /// 璺敱鍏冧俊鎭唴閮ㄧ被
+ /// </summary>
+ public class Meta
+ {
+ /// <summary>
+ /// 璺敱鏍囬, 鐢ㄤ簬鏄剧ず闈㈠寘灞�, 椤甸潰鏍囬 *鎺ㄨ崘璁剧疆
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙
+ /// </summary>
+ public bool Show { get; set; }
+
+ /// <summary>
+ /// 濡傞渶澶栭儴鎵撳紑锛屽鍔狅細_blank
+ /// </summary>
+ public string Target { get; set; }
+
+ /// <summary>
+ /// 鍐呴摼鎵撳紑http閾炬帴
+ /// </summary>
+ public string Link { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs
new file mode 100644
index 0000000..b79fc20
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuInput.cs
@@ -0,0 +1,352 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑿滃崟鍙傛暟
+ /// </summary>
+ public class MenuInput
+ {
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ public MenuOpenType OpenType { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class TreeForGrantInput
+ {
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class GetMenuTreeInput
+ {
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class GetMenuListInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddMenuInput
+ {
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")]
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍦板潃
+ /// </summary>
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ public MenuOpenType OpenType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ public string Visible { get; set; }
+
+ /// <summary>
+ /// 鍐呴摼鍦板潃
+ /// </summary>
+ public string Link { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�
+ /// </summary>
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ /// </summary>
+ public MenuWeight Weight { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteMenuInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateMenuInput
+ {
+ /// <summary>
+ /// 鑿滃崟Id
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>DeleteMenuInput
+ [Required(ErrorMessage = "鐖剁骇鑿滃崟Id涓嶈兘涓虹┖")]
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ [Required(ErrorMessage = "鑿滃崟绫诲瀷涓嶈兘涓虹┖")]
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍦板潃
+ /// </summary>
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ public MenuOpenType OpenType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ public string Visible { get; set; }
+
+ /// <summary>
+ /// 鍐呴摼鍦板潃
+ /// </summary>
+ public string Link { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�
+ /// </summary>
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ /// </summary>
+ public MenuWeight Weight { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryMenuInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChangeAppMenuInput
+ {
+ /// <summary>
+ /// 搴旂敤缂栫爜
+ /// </summary>DeleteMenuInput
+ [Required(ErrorMessage = "搴旂敤缂栫爜涓嶈兘涓虹┖")]
+ public string Application { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍦板潃
+ /// </summary>
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ public MenuOpenType OpenType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ public string Visible { get; set; }
+
+ /// <summary>
+ /// 鍐呴摼鍦板潃
+ /// </summary>
+ public string Link { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�
+ /// </summary>
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ /// </summary>
+ public MenuWeight Weight { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs
new file mode 100644
index 0000000..4cea44f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuOutput.cs
@@ -0,0 +1,128 @@
+锘縰sing Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑿滃崟鏍戯紙鍒楄〃褰㈠紡锛�
+ /// </summary>
+ public class MenuOutput : ITreeNode
+ {
+ /// <summary>
+ /// 鑿滃崟Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 瀛愯妭鐐�
+ /// </summary>
+ public List<MenuOutput> Children { get; set; } = new List<MenuOutput>();
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍦板潃
+ /// </summary>
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ public string Application { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ public MenuOpenType OpenType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ public string Visible { get; set; }
+
+ /// <summary>
+ /// 鍐呴摼鍦板潃
+ /// </summary>
+ public string Link { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�
+ /// </summary>
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ /// </summary>
+ public MenuWeight Weight { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetId()
+ {
+ return Id;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetPid()
+ {
+ return Pid;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="children"></param>
+ public void SetChildren(IList children)
+ {
+ Children = (List<MenuOutput>)children;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs
new file mode 100644
index 0000000..79e29ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/Dto/MenuTreeOutput.cs
@@ -0,0 +1,73 @@
+using Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑿滃崟鏍�---鎺堟潈銆佹柊澧炵紪杈戞椂閫夋嫨
+ /// </summary>
+ public class MenuTreeOutput : ITreeNode
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long ParentId { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ public string Value => IntValue.ToString();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public long IntValue { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+ /// </summary>
+ public MenuWeight Weight { get; set; }
+
+ /// <summary>
+ /// 瀛愯妭鐐�
+ /// </summary>
+ public List<MenuTreeOutput> Children { get; set; } = new List<MenuTreeOutput>();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetId()
+ {
+ return Id;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetPid()
+ {
+ return ParentId;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="children"></param>
+ public void SetChildren(IList children)
+ {
+ Children = (List<MenuTreeOutput>)children;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs
new file mode 100644
index 0000000..c09cd9c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/ISysMenuService.cs
@@ -0,0 +1,101 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysMenuService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddMenu(AddMenuInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<AntDesignTreeNode>> ChangeAppMenu(ChangeAppMenuInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteMenu(DeleteMenuInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ Task<List<AntDesignTreeNode>> GetLoginMenusAntDesign(long userId, string appCode);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<string>> GetLoginPermissionList(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<string>> GetAllPermissionList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetMenu(QueryMenuInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetMenuList([FromQuery] GetMenuListInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetMenuTree([FromQuery] GetMenuTreeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<string>> GetUserMenuAppCodeList(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ Task<bool> HasMenu(string appCode);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> TreeForGrant([FromQuery] TreeForGrantInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateMenu(UpdateMenuInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs
new file mode 100644
index 0000000..1403482
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Menu/SysMenuService.cs
@@ -0,0 +1,517 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺鑿滃崟鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Menu", Order = 146)]
+ [Route("api")]
+ public class SysMenuService : ISysMenuService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+ private readonly IRepository<WmsPdaPower> _wmsPdaPower; // PDA鑿滃崟琛ㄤ粨鍌�
+ private readonly IRepository<SysDictData> _sysDictData;
+ private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu;
+ private readonly ISysCacheService _sysCacheService;
+ private readonly ISysUserRoleService _sysUserRoleService;
+ private readonly ISysRoleMenuService _sysRoleMenuService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysMenuRep"></param>
+ /// <param name="sysCacheService"></param>
+ /// <param name="sysUserRoleService"></param>
+ /// <param name="sysRoleMenuService"></param>
+ public SysMenuService(IRepository<SysMenu> sysMenuRep,
+ IRepository<WmsPdaPower> wmsPdaPower,
+ IRepository<SysDictData> sysDictData,
+ IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+ ISysCacheService sysCacheService,
+ ISysUserRoleService sysUserRoleService,
+ ISysRoleMenuService sysRoleMenuService)
+ {
+ _sysMenuRep = sysMenuRep;
+ _wmsPdaPower = wmsPdaPower;
+ _sysDictData = sysDictData;
+ _wmsRolePdaMenu = wmsRolePdaMenu;
+ _sysCacheService = sysCacheService;
+ _sysUserRoleService = sysUserRoleService;
+ _sysRoleMenuService = sysRoleMenuService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鏉冮檺(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<string>> GetLoginPermissionList(long userId)
+ {
+ var permissions = await _sysCacheService.GetPermission(userId); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+ if (permissions == null || permissions.Count < 1)
+ {
+ if (!CurrentUserInfo.IsSuperAdmin && userId != 0)
+ {
+ var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+ var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+ permissions = await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id))
+ .Where(u => u.Type == MenuType.BTN)
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Select(u => u.Permission).ToListAsync();
+ }
+ else
+ {
+ permissions = await _sysMenuRep.DetachedEntities
+ .Where(u => u.Type == MenuType.BTN)
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Select(u => u.Permission).ToListAsync();
+ }
+ await _sysCacheService.SetPermission(userId, permissions); // 缂撳瓨缁撴灉
+ }
+ return permissions;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夋潈闄�(鎸夐挳鏉冮檺鏍囪瘑闆嗗悎)
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<string>> GetAllPermissionList()
+ {
+ return await GetLoginPermissionList(0);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛AntDesign鑿滃崟闆嗗悎
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<AntDesignTreeNode>> GetLoginMenusAntDesign(long userId, string appCode)
+ {
+ var antDesignTreeNodes = await _sysCacheService.GetMenu(userId, appCode); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+ if (antDesignTreeNodes == null || antDesignTreeNodes.Count < 1)
+ {
+ var sysMenuList = new List<SysMenu>();
+ // 绠$悊鍛樺垯灞曠ず鎵�鏈夌郴缁熻彍鍗�
+ if (CurrentUserInfo.IsSuperAdmin)
+ {
+ sysMenuList = await _sysMenuRep.DetachedEntities
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Where(u => u.Application == appCode)
+ .Where(u => u.Type != MenuType.BTN)
+ //.Where(u => u.Weight != (int)MenuWeight.DEFAULT_WEIGHT)
+ .OrderBy(u => u.Sort).ThenBy(u => u.Id).ToListAsync();
+ }
+ else
+ {
+ // 闈炵鐞嗗憳鍒欒幏鍙栬嚜宸辫鑹叉墍鎷ユ湁鐨勮彍鍗曢泦鍚�
+ var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+ var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+ sysMenuList = await _sysMenuRep.DetachedEntities
+ .Where(u => menuIdList.Contains(u.Id))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Where(u => u.Application == appCode)
+ .Where(u => u.Type != MenuType.BTN)
+ .OrderBy(u => u.Sort).ThenBy(u => u.Id).ToListAsync();
+ }
+ // 杞崲鎴愮櫥褰曡彍鍗�
+ antDesignTreeNodes = sysMenuList.Select(u => new AntDesignTreeNode
+ {
+ Id = u.Id,
+ Pid = u.Pid,
+ Path = u.OpenType == MenuOpenType.OUTER ? u.Link : u.Router,
+ Name = u.Code,
+ Component = u.Component,
+ Redirect = u.OpenType == MenuOpenType.OUTER ? u.Link : u.Redirect,
+ Meta = new Meta
+ {
+ Title = u.Name,
+ Icon = u.Icon,
+ Show = u.Visible == YesOrNot.Y.ToString(),
+ Link = u.Link,
+ Target = u.OpenType == MenuOpenType.OUTER ? "_blank" : ""
+ }
+ }).ToList();
+ await _sysCacheService.SetMenu(userId, appCode, antDesignTreeNodes); // 缂撳瓨缁撴灉
+ }
+ return antDesignTreeNodes;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鑿滃崟鎵�灞炵殑搴旂敤缂栫爜闆嗗悎
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<string>> GetUserMenuAppCodeList(long userId)
+ {
+ var roleIdList = await _sysUserRoleService.GetUserRoleIdList(userId);
+ var menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+ return await _sysMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.Id))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Select(u => u.Application).ToListAsync();
+ }
+
+ /// <summary>
+ /// 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysMenu/list")]
+ public async Task<dynamic> GetMenuList([FromQuery] GetMenuListInput input)
+ {
+ var application = !string.IsNullOrEmpty(input.Application?.Trim());
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var menus = await _sysMenuRep.DetachedEntities.Where((application, u => u.Application == input.Application.Trim()),
+ (name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")))
+ .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+ .ProjectToType<MenuOutput>()
+ .ToListAsync();
+ return new TreeBuildUtil<MenuOutput>().Build(menus);
+ }
+
+ /// <summary>
+ /// 绯荤粺鑿滃崟鍒楄〃锛堟爲琛級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysMenu/listpda")]
+ public async Task<List<wmsPdaPowerMenuOutput>> GetMenuListPda([FromQuery] QueryRoleInput input)
+ {
+ var wmsPdaPowerList = await _wmsPdaPower.DetachedEntities.Where(u => 1 == 1).ProjectToType<WmsPdaPowerOutput>().ToListAsync();
+ var dicDataList = await _sysDictData.Where(p => p.TypeId == 383290718294085).ToListAsync();
+ var wmsRolePdaMenuList = await _wmsRolePdaMenu.DetachedEntities.Where(p => p.SysRoleId == input.Id).ToListAsync();
+
+
+ foreach (var item in wmsRolePdaMenuList)
+ {
+ var model = wmsPdaPowerList.Where(p => p.Id == item.PdaMenuId).FirstOrDefault();
+ if (model != null)
+ {
+ wmsPdaPowerList.Where(p => p.Id == item.PdaMenuId).FirstOrDefault().IsCheck = true;
+ }
+ }
+ var listData = new List<wmsPdaPowerMenuOutput>();
+ foreach (var item in dicDataList)
+ {
+ var enumValue = LesWorkShopType.FAPAOCHEJIAN;
+ if (item.Code == "1") enumValue = LesWorkShopType.FAPAOCHEJIAN;
+ else if(item.Code=="2") enumValue = LesWorkShopType.JIAOHEBANCHEJIAN;
+ else if (item.Code == "3") enumValue = LesWorkShopType.JHBCJ;
+ else if (item.Code == "4") enumValue = LesWorkShopType.RSBCJ;
+ else if (item.Code == "5") enumValue = LesWorkShopType.YLKCJ;
+ else enumValue = LesWorkShopType.TY;
+ listData.Add(new wmsPdaPowerMenuOutput()
+ {
+ WorkShopName = item.Value,
+ WmsPdaPowerOutput = wmsPdaPowerList.Where(n => n.WorkShopType == enumValue).ToList()
+ });
+ }
+ return listData;
+ }
+
+ /// <summary>
+ /// 鍒涘缓Pids鏍煎紡
+ /// 濡傛灉pid鏄�0椤剁骇鑺傜偣锛宲ids灏辨槸 [0];
+ /// 濡傛灉pid涓嶆槸椤剁骇鑺傜偣锛宲ids灏辨槸 pid鑿滃崟鐨� pids + [pid] + ,
+ /// </summary>
+ /// <param name="pid"></param>
+ /// <returns></returns>
+ private async Task<string> CreateNewPids(long pid)
+ {
+ if (pid == 0L)
+ {
+ return "[0],";
+ }
+ else
+ {
+ var pmenu = await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == pid);
+ return pmenu.Pids + "[" + pid + "],";
+ }
+ }
+
+ /// <summary>
+ /// 澧炲姞鍜岀紪杈戞椂妫�鏌ュ弬鏁�
+ /// </summary>
+ /// <param name="input"></param>
+ private static void CheckMenuParam(MenuInput input)
+ {
+ var type = input.Type;
+ var router = input.Router;
+ var permission = input.Permission;
+ var openType = input.OpenType;
+
+ if (type.Equals((int)MenuType.DIR))
+ {
+ if (string.IsNullOrEmpty(router))
+ throw Oops.Oh(ErrorCode.D4001);
+ }
+ else if (type.Equals((int)MenuType.MENU))
+ {
+ if (string.IsNullOrEmpty(router))
+ throw Oops.Oh(ErrorCode.D4001);
+ if (string.IsNullOrEmpty(openType.ToString()))
+ throw Oops.Oh(ErrorCode.D4002);
+ }
+ else if (type.Equals((int)MenuType.BTN))
+ {
+ if (string.IsNullOrEmpty(permission))
+ throw Oops.Oh(ErrorCode.D4003);
+ if (!permission.Contains(":"))
+ throw Oops.Oh(ErrorCode.D4004);
+ // 鍒ゆ柇璇ヨ祫婧愭槸鍚﹀瓨鍦�
+ //permission = ":" + permission;
+ //var urlSet = resourceCache.getAllResources();
+ //if (!urlSet.Contains(permission.Replace(":","/")))
+ // throw Oops.Oh(ErrorCode.meu1005);
+ }
+ }
+
+ /// <summary>
+ /// 澧炲姞绯荤粺鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysMenu/add")]
+ public async Task AddMenu(AddMenuInput input)
+ {
+ var isExist = await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Code == input.Code); // u.Name == input.Name
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D4000);
+
+ // 鏍¢獙鍙傛暟
+ CheckMenuParam(input.Adapt<MenuInput>());
+
+ var menu = input.Adapt<SysMenu>();
+ menu.Pids = await CreateNewPids(input.Pid);
+ menu.Status = CommonStatus.ENABLE;
+ await menu.InsertAsync();
+
+ // 娓呴櫎缂撳瓨
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎绯荤粺鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysMenu/delete")]
+ [UnitOfWork]
+ public async Task DeleteMenu(DeleteMenuInput input)
+ {
+ var childIdList = await _sysMenuRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id.ToString()))
+ .Select(u => u.Id).ToListAsync();
+ childIdList.Add(input.Id);
+
+ var menus = await _sysMenuRep.Where(u => childIdList.Contains(u.Id)).ToListAsync();
+ await _sysMenuRep.DeleteAsync(menus);
+
+ // 绾ц仈鍒犻櫎璇ヨ彍鍗曞強瀛愯彍鍗曞搴旂殑瑙掕壊-鑿滃崟琛ㄤ俊鎭�
+ await _sysRoleMenuService.DeleteRoleMenuListByMenuIdList(childIdList);
+
+ // 娓呴櫎缂撳瓨
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+ }
+
+ /// <summary>
+ /// 鏇存柊绯荤粺鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysMenu/edit"),]
+ public async Task UpdateMenu(UpdateMenuInput input)
+ {
+ // Pid鍜孖d涓嶈兘涓�鑷达紝涓�鑷翠細瀵艰嚧鏃犻檺閫掑綊
+ if (input.Id == input.Pid)
+ throw Oops.Oh(ErrorCode.D4006);
+
+ var isExist = await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Code == input.Code && u.Id != input.Id); // u.Name == input.Name
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D4000);
+
+ // 鏍¢獙鍙傛暟
+ CheckMenuParam(input.Adapt<MenuInput>());
+ // 濡傛灉鏄紪杈戯紝鐖秈d涓嶈兘涓鸿嚜宸辩殑瀛愯妭鐐�
+ var childIdList = await _sysMenuRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id.ToString()))
+ .Select(u => u.Id).ToListAsync();
+ if (childIdList.Contains(input.Pid))
+ throw Oops.Oh(ErrorCode.D4006);
+
+ var oldMenu = await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+
+ // 鐢熸垚鏂扮殑pids
+ var newPids = await CreateNewPids(input.Pid);
+
+ // 鏄惁鏇存柊瀛愬簲鐢ㄧ殑鏍囪瘑
+ var updateSubAppsFlag = false;
+ // 鏄惁鏇存柊瀛愯妭鐐圭殑pids鐨勬爣璇�
+ var updateSubPidsFlag = false;
+
+ // 濡傛灉搴旂敤鏈夊彉鍖�
+ if (input.Application != oldMenu.Application)
+ {
+ // 鐖惰妭鐐逛笉鏄牴鑺傜偣涓嶈兘绉诲姩搴旂敤
+ if (oldMenu.Pid != 0L)
+ throw Oops.Oh(ErrorCode.D4007);
+ updateSubAppsFlag = true;
+ }
+ // 鐖惰妭鐐规湁鍙樺寲
+ if (input.Pid != oldMenu.Pid)
+ updateSubPidsFlag = true;
+
+ // 寮�濮嬫洿鏂版墍鏈夊瓙鑺傜偣鐨勯厤缃�
+ if (updateSubAppsFlag || updateSubPidsFlag)
+ {
+ // 鏌ユ壘鎵�鏈夊彾瀛愯妭鐐癸紝鍖呭惈瀛愯妭鐐圭殑瀛愯妭鐐�
+ var menuList = await _sysMenuRep.Where(u => EF.Functions.Like(u.Pids, $"%{oldMenu.Id}%")).ToListAsync();
+ // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨勫簲鐢ㄤ负褰撳墠鑿滃崟鐨勫簲鐢�
+ if (menuList.Count > 0)
+ {
+ // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨刟pplication
+ if (updateSubAppsFlag)
+ {
+ menuList.ForEach(u =>
+ {
+ u.Application = input.Application;
+ });
+ }
+
+ // 鏇存柊鎵�鏈夊瓙鑺傜偣鐨刾ids
+ if (updateSubPidsFlag)
+ {
+ menuList.ForEach(u =>
+ {
+ //ly-0415 鍘熶唬鐮�
+ // 瀛愯妭鐐筽ids缁勬垚 = 褰撳墠鑿滃崟鏂皃ids + 褰撳墠鑿滃崟id + 瀛愯妭鐐硅嚜宸辩殑pids鍚庣紑
+ //var oldParentCodesPrefix = oldMenu.Pids + "[" + oldMenu.Id + "],";
+ //var oldParentCodesSuffix = u.Pids[oldParentCodesPrefix.Length..];
+ //var menuParentCodes = newPids + "[" + oldMenu.Id + "]," + oldParentCodesSuffix;
+
+ //ly-0415 鏀瑰悗浠g爜
+ // 瀛愯妭鐐筽ids缁勬垚 = 褰撳墠鑿滃崟鏂皃ids + 褰撳墠鑿滃崟id + 瀛愯妭鐐硅嚜宸辩殑pids鍚庣紑
+ var oldParentCodesPrefix = oldMenu.Pids + "[" + oldMenu.Id + "],";
+ // var oldParentCodesSuffix = u.Pids[oldParentCodesPrefix.Length..];
+ var menuParentCodes = newPids + "[" + oldMenu.Id + "],";
+
+ u.Pids = menuParentCodes;
+ });
+ }
+ }
+ }
+
+ // 鏇存柊褰撳墠鑿滃崟
+ oldMenu = input.Adapt<SysMenu>();
+ oldMenu.Pids = newPids;
+ await oldMenu.UpdateAsync(ignoreNullValues: true);
+
+ // 娓呴櫎缂撳瓨
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysMenu/detail")]
+ public async Task<dynamic> GetMenu(QueryMenuInput input)
+ {
+ return await _sysMenuRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬鏂板銆佺紪杈戞椂閫夋嫨涓婄骇鑺傜偣
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysMenu/tree")]
+ public async Task<dynamic> GetMenuTree([FromQuery] GetMenuTreeInput input)
+ {
+ var application = !string.IsNullOrEmpty(input.Application?.Trim());
+ var menus = await _sysMenuRep.DetachedEntities
+ .Where(application, u => u.Application == input.Application.Trim())
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Where(u => u.Type == MenuType.DIR || u.Type == MenuType.MENU)
+ .OrderBy(u => u.Sort)
+ .Select(u => new MenuTreeOutput
+ {
+ Id = u.Id,
+ ParentId = u.Pid,
+ IntValue = u.Id,
+ Title = u.Name,
+ Weight = u.Weight
+ }).ToListAsync();
+ return new TreeBuildUtil<MenuTreeOutput>().Build(menus);
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺鑿滃崟鏍戯紝鐢ㄤ簬缁欒鑹叉巿鏉冩椂閫夋嫨
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysMenu/treeForGrant")]
+ public async Task<dynamic> TreeForGrant([FromQuery] TreeForGrantInput input)
+ {
+ var menuIdList = new List<long>();
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var roleIdList = await _sysUserRoleService.GetUserRoleIdList(CurrentUserInfo.UserId);
+ menuIdList = await _sysRoleMenuService.GetRoleMenuIdList(roleIdList);
+ }
+
+ var application = !string.IsNullOrEmpty(input.Application?.Trim());
+ var menus = await _sysMenuRep.DetachedEntities
+ .Where(application, u => u.Application == input.Application.Trim())
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .Where(menuIdList.Count > 0, u => menuIdList.Contains(u.Id))
+ .OrderBy(u => u.Sort).Select(u => new MenuTreeOutput
+ {
+ Id = u.Id,
+ ParentId = u.Pid,
+ IntValue = u.Id,
+ Title = u.Name,
+ Weight = u.Weight
+ }).ToListAsync();
+ return new TreeBuildUtil<MenuTreeOutput>().Build(menus);
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴旂敤缂栫爜鍒ゆ柇璇ユ満鏋勪笅鏄惁鏈夌姸鎬佷负姝e父鐨勮彍鍗�
+ /// </summary>
+ /// <param name="appCode"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<bool> HasMenu(string appCode)
+ {
+ return await _sysMenuRep.DetachedEntities.AnyAsync(u => u.Application == appCode && u.Status != CommonStatus.DELETED);
+ }
+
+ /// <summary>
+ /// 鏍规嵁绯荤粺搴旂敤鍒囨崲鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysMenu/change")]
+ public async Task<List<AntDesignTreeNode>> ChangeAppMenu(ChangeAppMenuInput input)
+ {
+ return await GetLoginMenusAntDesign(CurrentUserInfo.UserId, input.Application);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs
new file mode 100644
index 0000000..a28e8e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/ISendMessageService.cs
@@ -0,0 +1,49 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISendMessageService
+ {
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鏌愪釜浜�
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鎺ユ敹浜�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ Task SendMessageToUser(string title, string message, MessageType type, long userId);
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鎺ユ敹浜哄垪琛�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ Task SendMessageToUsers(string title, string message, MessageType type, List<long> userId);
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鎵�鏈変汉
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ Task SendMessageToAllUser(string title, string message, MessageType type);
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鍙戦�佷汉</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ Task SendMessageToOtherUser(string title, string message, MessageType type, long userId);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs
new file mode 100644
index 0000000..91da075
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Message/SendMessageService.cs
@@ -0,0 +1,112 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娑堟伅鍙戦�佹湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Message", Order = 100)]
+ [Route("api")]
+ public class SendMessageService : ISendMessageService, IDynamicApiController, ITransient
+ {
+ private readonly ISysCacheService _sysCacheService;
+ private readonly IHubContext<ChatHub, IChatClient> _chatHubContext;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysCacheService"></param>
+ /// <param name="chatHubContext"></param>
+ public SendMessageService(ISysCacheService sysCacheService, IHubContext<ChatHub, IChatClient> chatHubContext)
+ {
+ _sysCacheService = sysCacheService;
+ _chatHubContext = chatHubContext;
+ }
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鎵�鏈変汉
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ [HttpGet("sysMessage/allUser")]
+ public async Task SendMessageToAllUser(string title, string message, MessageType type)
+ {
+ await _chatHubContext.Clients.All.ReceiveMessage(new { title = title, message = message, messagetype = type });
+ }
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰闄や簡鍙戦�佷汉鐨勫叾浠栦汉
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鍙戦�佷汉</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ [HttpGet("sysMessage/otherUser")]
+ public async Task SendMessageToOtherUser(string title, string message, MessageType type, long userId)
+ {
+ var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+ var user = onlineuserlist.Where(x => x.UserId == userId).ToList();
+
+ if (user != null)
+ {
+ await _chatHubContext.Clients.AllExcept(user[0].ConnectionId).ReceiveMessage(new { title = title, message = message, messagetype = type });
+ }
+ }
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鏌愪釜浜�
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鎺ユ敹浜�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ [HttpGet("sysMessage/user")]
+ public async Task SendMessageToUser(string title, string message, MessageType type, long userId)
+ {
+ var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+ var user = onlineuserlist.Where(x => x.UserId == userId).ToList();
+ if (user != null)
+ {
+ foreach (var item in user)
+ {
+ await _chatHubContext.Clients.Client(item.ConnectionId).ReceiveMessage(new { title = title, message = message, messagetype = type });
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍙戦�佹秷鎭粰鏌愪簺浜�
+ /// </summary>
+ /// <param name="title">鍙戦�佹爣棰�</param>
+ /// <param name="message">鍙戦�佸唴瀹�</param>
+ /// <param name="userId">鎺ユ敹浜哄垪琛�</param>
+ /// <param name="type">娑堟伅绫诲瀷</param>
+ /// <returns></returns>
+ [HttpGet("sysMessage/users")]
+ public async Task SendMessageToUsers(string title, string message, MessageType type, List<long> userId)
+ {
+ var onlineuserlist = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER);
+
+ List<string> userlist = new List<string>();
+
+ foreach (var item in onlineuserlist)
+ {
+ if (userId.Contains(item.UserId))
+ {
+ userlist.Add(item.ConnectionId);
+ }
+ }
+ await _chatHubContext.Clients.Clients(userlist).ReceiveMessage(new { title = title, message = message, messagetype = type });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs
new file mode 100644
index 0000000..c26a278
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/IMachineService.cs
@@ -0,0 +1,26 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface IMachineService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<dynamic> GetMachineBaseInfo();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<dynamic> GetMachineNetWorkInfo();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<dynamic> GetMachineUseInfo();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs
new file mode 100644
index 0000000..f982338
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Monitor/MachineService.cs
@@ -0,0 +1,56 @@
+锘縰sing Admin.NET.Core;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏈嶅姟鍣ㄤ俊鎭湇鍔�
+ /// </summary>
+ [AllowAnonymous]
+ [ApiDescriptionSettings(Name = "Machine", Order = 100)]
+ [Route("api")]
+ public class MachineService : IMachineService, IDynamicApiController, ITransient
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public MachineService()
+ {
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏈嶅姟鍣ㄨ祫婧愪俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysMachine/use")]
+ public async Task<dynamic> GetMachineUseInfo()
+ {
+ var useInfo = MachineUtil.GetMachineUseInfo();
+ return await Task.FromResult(useInfo);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏈嶅姟鍣ㄥ熀鏈弬鏁�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysMachine/base")]
+ public async Task<dynamic> GetMachineBaseInfo()
+ {
+ return await MachineUtil.GetMachineBaseInfo();
+ }
+
+ /// <summary>
+ /// 鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysMachine/network")]
+ public async Task<dynamic> GetMachineNetWorkInfo()
+ {
+ var baseInfo = MachineUtil.GetMachineNetWorkInfo();
+ return await Task.FromResult(baseInfo);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs
new file mode 100644
index 0000000..3305d15
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeBase.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鍙傛暟
+ /// </summary>
+ public class NoticeBase
+ {
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍐呭
+ /// </summary>
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ public int Type { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷浜篒d
+ /// </summary>
+ public long PublicUserId { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷浜哄鍚�
+ /// </summary>
+ public string PublicUserName { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏈烘瀯Id
+ /// </summary>
+ public long PublicOrgId { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏈烘瀯鍚嶇О
+ /// </summary>
+ public string PublicOrgName { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏃堕棿
+ /// </summary>
+ public DateTimeOffset? PublicTime { get; set; }
+
+ /// <summary>
+ /// 鎾ゅ洖鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CancelTime { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ public NoticeStatus Status { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs
new file mode 100644
index 0000000..a4db705
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeDetailOutput.cs
@@ -0,0 +1,46 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绯荤粺閫氱煡鍏憡璇︽儏鍙傛暟
+ /// </summary>
+ public class NoticeDetailOutput : NoticeBase
+ {
+ /// <summary>
+ /// 閫氱煡鍒扮殑鐢ㄦ埛Id闆嗗悎
+ /// </summary>
+ public List<string> NoticeUserIdList { get; set; }
+
+ /// <summary>
+ /// 閫氱煡鍒扮殑鐢ㄦ埛闃呰淇℃伅闆嗗悎
+ /// </summary>
+ public List<NoticeUserRead> NoticeUserReadInfoList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class NoticeUserRead
+ {
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public long UserId { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛鍚嶇О
+ /// </summary>
+ public string UserName { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+ /// </summary>
+ public NoticeUserStatus ReadStatus { get; set; }
+
+ /// <summary>
+ /// 闃呰鏃堕棿
+ /// </summary>
+ public DateTimeOffset? ReadTime { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs
new file mode 100644
index 0000000..d5fffe0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeInput.cs
@@ -0,0 +1,152 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鍙傛暟
+ /// </summary>
+ public class NoticeInput : PageInputBase
+ {
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ public virtual string Title { get; set; }
+
+ /// <summary>
+ /// 鍐呭
+ /// </summary>
+ public virtual string Content { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ public virtual NoticeType Type { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ public virtual NoticeStatus Status { get; set; }
+
+ /// <summary>
+ /// 閫氱煡鍒扮殑浜�
+ /// </summary>
+ public virtual List<long> NoticeUserIdList { get; set; }
+ }
+
+ /// <summary>
+ /// 閫氱煡鍏憡鍙傛暟
+ /// </summary>
+ public class NoticePageInput : PageInputBase
+ {
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ public virtual int Type { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddNoticeInput
+ {
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍐呭
+ /// </summary>
+ [Required(ErrorMessage = "鍐呭涓嶈兘涓虹┖")]
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ [Required(ErrorMessage = "绫诲瀷涓嶈兘涓虹┖")]
+ public int Type { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+ public NoticeStatus Status { get; set; }
+
+ /// <summary>
+ /// 閫氱煡鍒扮殑浜�
+ /// </summary>
+ [Required(ErrorMessage = "閫氱煡鍒扮殑浜轰笉鑳戒负绌�")]
+ public List<long> NoticeUserIdList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteNoticeInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateNoticeInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ [Required(ErrorMessage = "閫氱煡鍏憡Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ [Required(ErrorMessage = "鏍囬涓嶈兘涓虹┖")]
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍐呭
+ /// </summary>
+ [Required(ErrorMessage = "鍐呭涓嶈兘涓虹┖")]
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ [Required(ErrorMessage = "绫诲瀷涓嶈兘涓虹┖")]
+ public int Type { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+ public NoticeStatus Status { get; set; }
+
+ /// <summary>
+ /// 閫氱煡鍒扮殑浜�
+ /// </summary>
+ [Required(ErrorMessage = "閫氱煡鍒扮殑浜轰笉鑳戒负绌�")]
+ public List<long> NoticeUserIdList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryNoticeInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChangeStatusNoticeInput : BaseId
+ {
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ [Required(ErrorMessage = "鐘舵�佷笉鑳戒负绌�")]
+ public NoticeStatus Status { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs
new file mode 100644
index 0000000..3cd16eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/Dto/NoticeReceiveOutput.cs
@@ -0,0 +1,25 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鎺ユ敹鍙傛暟
+ /// </summary>
+ public class NoticeReceiveOutput : NoticeBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 闃呰鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+ /// </summary>
+ public NoticeUserStatus ReadStatus { get; set; }
+
+ /// <summary>
+ /// 闃呰鏃堕棿
+ /// </summary>
+ public DateTimeOffset? ReadTime { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs
new file mode 100644
index 0000000..e88d9cf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeService.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application.Notice
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysNoticeService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddNotice(AddNoticeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ChangeStatus(ChangeStatusNoticeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteNotice(DeleteNoticeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<NoticeDetailOutput> GetNotice([FromQuery] QueryNoticeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysNotice>> QueryNoticePageList([FromQuery] NoticePageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<NoticeReceiveOutput>> ReceivedNoticePageList([FromQuery] NoticePageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateNotice(UpdateNoticeInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> UnReadNoticeList([FromQuery] NoticeInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs
new file mode 100644
index 0000000..1ebfa34
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/ISysNoticeUserService.cs
@@ -0,0 +1,44 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application.Notice
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysNoticeUserService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="noticeUserIdList"></param>
+ /// <param name="noticeUserStatus"></param>
+ /// <returns></returns>
+ Task Add(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <returns></returns>
+ Task<List<SysNoticeUser>> GetNoticeUserListByNoticeId(long noticeId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="userId"></param>
+ /// <param name="status"></param>
+ /// <returns></returns>
+ Task Read(long noticeId, long userId, NoticeUserStatus status);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="noticeUserIdList"></param>
+ /// <param name="noticeUserStatus"></param>
+ /// <returns></returns>
+ Task Update(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs
new file mode 100644
index 0000000..b0caf58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeService.cs
@@ -0,0 +1,320 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application.Notice
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Notice", Order = 100)]
+ [Route("api")]
+ public class SysNoticeService : ISysNoticeService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysNotice> _sysNoticeRep; // 閫氱煡鍏憡琛ㄤ粨鍌�
+ private readonly IRepository<SysNoticeUser> _sysNoticeUserRep; // 閫氱煡鍏憡鐢ㄦ埛琛ㄤ粨鍌�
+ private readonly IRepository<SysEmp> _sysEmpRep;
+ private readonly ISysNoticeUserService _sysNoticeUserService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysNoticeRep"></param>
+ /// <param name="sysNoticeUserRep"></param>
+ /// <param name="sysEmpRep"></param>
+ /// <param name="sysNoticeUserService"></param>
+ public SysNoticeService(IRepository<SysNotice> sysNoticeRep,
+ IRepository<SysNoticeUser> sysNoticeUserRep,
+ IRepository<SysEmp> sysEmpRep,
+ ISysNoticeUserService sysNoticeUserService)
+ {
+ _sysNoticeRep = sysNoticeRep;
+ _sysNoticeUserRep = sysNoticeUserRep;
+ _sysEmpRep = sysEmpRep;
+ _sysNoticeUserService = sysNoticeUserService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ閫氱煡鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysNotice/page")]
+ public async Task<PageResult<SysNotice>> QueryNoticePageList([FromQuery] NoticePageInput input)
+ {
+ var searchValue = !string.IsNullOrEmpty(input.SearchValue?.Trim());
+ var notices = await _sysNoticeRep.DetachedEntities
+ .Where(searchValue, u => EF.Functions.Like(u.Title, $"%{input.SearchValue.Trim()}%") ||
+ EF.Functions.Like(u.Content, $"%{input.SearchValue.Trim()}%"))
+ .Where(input.Type > 0, u => u.Type == input.Type)
+ .Where(u => u.Status != NoticeStatus.DELETED)
+ //閫氱煡鍏憡绠$悊搴斿彧鏈夊彂甯冧汉鍙互绠$悊鑷繁鍙戝竷鐨勶紝鍏朵粬浜哄彧鑳藉湪宸叉敹鍏憡涓湅鍒�
+ .Where(u => u.PublicUserId == CurrentUserInfo.UserId)
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return notices;
+ }
+
+ /// <summary>
+ /// 澧炲姞閫氱煡鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysNotice/add")]
+ public async Task AddNotice(AddNoticeInput input)
+ {
+ if (input.Status != NoticeStatus.DRAFT && input.Status != NoticeStatus.PUBLIC)
+ throw Oops.Oh(ErrorCode.D7000);
+
+ var notice = input.Adapt<SysNotice>();
+ await UpdatePublicInfo(notice);
+ // 濡傛灉鏄彂甯冿紝鍒欒缃彂甯冩椂闂�
+ if (input.Status == NoticeStatus.PUBLIC)
+ notice.PublicTime = DateTimeOffset.Now;
+ var newItem = await notice.InsertNowAsync();
+ //濡傛灉鏄崏绋垮垯灏嗙姸鎬佹爣璁颁负鏆備笉閫氱煡锛屼笅娆℃洿鏀圭姸鎬佸悗鍐嶄慨鏀逛负鏈洿鏀圭姸鎬�
+ if (notice.Status != NoticeStatus.DRAFT)
+ {
+ // 閫氱煡鍒扮殑浜�
+ var noticeUserIdList = input.NoticeUserIdList;
+ var noticeUserStatus = NoticeUserStatus.UNREAD;
+ await _sysNoticeUserService.Add(newItem.Entity.Id, noticeUserIdList, noticeUserStatus);
+ }
+ else
+ {
+ var noticeUserIdList = input.NoticeUserIdList;
+ var noticeUserStatus = NoticeUserStatus.NONOTICE;
+ await _sysNoticeUserService.Add(newItem.Entity.Id, noticeUserIdList, noticeUserStatus);
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎閫氱煡鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysNotice/delete")]
+ public async Task DeleteNotice(DeleteNoticeInput input)
+ {
+ var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (notice.Status != NoticeStatus.DRAFT && notice.Status != NoticeStatus.CANCEL) // 鍙兘鍒犻櫎鑽夌鍜屾挙鍥炵殑鍏憡
+ throw Oops.Oh(ErrorCode.D7001);
+ if (notice.PublicUserId != CurrentUserInfo.UserId)
+ throw Oops.Oh(ErrorCode.D7003);
+ await notice.DeleteAsync();
+ }
+
+ /// <summary>
+ /// 鏇存柊閫氱煡鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysNotice/edit")]
+ public async Task UpdateNotice(UpdateNoticeInput input)
+ {
+ if (input.Status != NoticeStatus.DRAFT && input.Status != NoticeStatus.PUBLIC)
+ throw Oops.Oh(ErrorCode.D7000);
+
+ // 闈炶崏绋跨姸鎬�
+ if (input.Status != NoticeStatus.DRAFT)
+ throw Oops.Oh(ErrorCode.D7002);
+ // 濡傛灉鍙戝竷鑰呴潪鏈汉鍒欎笉鑳戒慨鏀�
+ SysNotice noticeInDb = await _sysNoticeRep.DetachedEntities.Where(u => u.Id == input.Id).FirstOrDefaultAsync();
+ if (noticeInDb.PublicUserId != CurrentUserInfo.UserId)
+ throw Oops.Oh(ErrorCode.D7003);
+
+ var notice = input.Adapt<SysNotice>();
+ if (input.Status == NoticeStatus.PUBLIC)
+ {
+ notice.PublicTime = DateTimeOffset.Now;
+ await UpdatePublicInfo(notice);
+ }
+ await notice.UpdateAsync();
+ //濡傛灉淇敼鍚庣殑鐘舵�佷负闈炶崏绋跨姸鎬佸垯閫氱煡
+ if (notice.Status != NoticeStatus.DRAFT)
+ {
+ // 閫氱煡鍒扮殑浜�
+ var noticeUserIdList = input.NoticeUserIdList;
+ var noticeUserStatus = NoticeUserStatus.UNREAD;
+ await _sysNoticeUserService.Update(input.Id, noticeUserIdList, noticeUserStatus);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫氱煡鍏憡璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysNotice/detail")]
+ public async Task<NoticeDetailOutput> GetNotice([FromQuery] QueryNoticeInput input)
+ {
+ var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+
+ // 鑾峰彇閫氱煡鍒扮殑鐢ㄦ埛
+ var noticeUserList = await _sysNoticeUserService.GetNoticeUserListByNoticeId(input.Id);
+ var noticeUserIdList = new List<string>();
+ var noticeUserReadInfoList = new List<NoticeUserRead>();
+ if (noticeUserList != null)
+ {
+ noticeUserList.ForEach(u =>
+ {
+ noticeUserIdList.Add(u.UserId.ToString());
+ var noticeUserRead = new NoticeUserRead
+ {
+ UserId = u.UserId,
+ UserName = CurrentUserInfo.Name,
+ ReadStatus = u.ReadStatus,
+ ReadTime = u.ReadTime
+ };
+ noticeUserReadInfoList.Add(noticeUserRead);
+ });
+ }
+ var noticeResult = notice.Adapt<NoticeDetailOutput>();
+ noticeResult.NoticeUserIdList = noticeUserIdList;
+ noticeResult.NoticeUserReadInfoList = noticeUserReadInfoList;
+ if (noticeResult.Status == NoticeStatus.CANCEL)
+ {
+ noticeResult.Content = "<h1 style=\"text-align: center; \">璇ュ唴瀹瑰凡琚彂甯冭�呮挙鍥�</h1>";
+ }
+ // 濡傛灉璇ユ潯閫氱煡鍏憡涓哄凡鍙戝竷锛屽垯灏嗗綋鍓嶇敤鎴风殑璇ユ潯閫氱煡鍏憡璁剧疆涓哄凡璇�
+ if (notice.Status == NoticeStatus.PUBLIC || notice.Status == NoticeStatus.CANCEL)
+ await _sysNoticeUserService.Read(notice.Id, CurrentUserInfo.UserId, NoticeUserStatus.READ);
+ return noticeResult;
+ }
+
+ /// <summary>
+ /// 淇敼閫氱煡鍏憡鐘舵��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysNotice/changeStatus")]
+ public async Task ChangeStatus(ChangeStatusNoticeInput input)
+ {
+ // 鐘舵�佸簲涓烘挙鍥炴垨鍒犻櫎鎴栧彂甯�
+ if (input.Status != NoticeStatus.CANCEL && input.Status != NoticeStatus.DELETED && input.Status != NoticeStatus.PUBLIC)
+ throw Oops.Oh(ErrorCode.D7000);
+
+ var noticeuser = await _sysNoticeUserRep.DetachedEntities.Where(u => u.NoticeId == input.Id).Select(u => u.UserId).ToListAsync();
+
+ var notice = await _sysNoticeRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (notice.PublicUserId != CurrentUserInfo.UserId)
+ {
+ throw Oops.Oh(ErrorCode.D7003);
+ }
+ notice.Status = input.Status;
+ if (input.Status == NoticeStatus.CANCEL)
+ {
+ notice.CancelTime = DateTimeOffset.Now;
+ }
+ else if (input.Status == NoticeStatus.PUBLIC)
+ {
+ notice.PublicTime = DateTimeOffset.Now;
+ }
+ await notice.UpdateAsync();
+ if (notice.Status != NoticeStatus.DRAFT)
+ {
+ // 閫氱煡鍒扮殑浜�
+ var noticeUserIdList = noticeuser;
+ var noticeUserStatus = NoticeUserStatus.UNREAD;
+ await _sysNoticeUserService.Update(input.Id, noticeUserIdList, noticeUserStatus);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎺ユ敹鐨勯�氱煡鍏憡
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysNotice/received")]
+ public async Task<PageResult<NoticeReceiveOutput>> ReceivedNoticePageList([FromQuery] NoticePageInput input)
+ {
+ var searchValue = !string.IsNullOrEmpty(input.SearchValue?.Trim());
+ var notices = await _sysNoticeRep.DetachedEntities.Join(_sysNoticeUserRep.DetachedEntities, u => u.Id, e => e.NoticeId, (u, e) => new { u, e })
+ .Where(u => u.e.UserId == CurrentUserInfo.UserId)
+ .Where(searchValue, u => EF.Functions.Like(u.u.Title, $"%{input.SearchValue.Trim()}%") ||
+ EF.Functions.Like(u.u.Content, $"%{input.SearchValue.Trim()}%"))
+ .Where(input.Type > 0, u => u.u.Type == input.Type)
+ .Where(u => u.u.Status != NoticeStatus.DELETED && u.u.Status != NoticeStatus.DRAFT)
+ .Select(u => u.u.Adapt(u.e.Adapt<NoticeReceiveOutput>()))
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return notices;
+ }
+
+ /// <summary>
+ /// 鏇存柊鍙戝竷淇℃伅
+ /// </summary>
+ /// <param name="notice"></param>
+ [NonAction]
+ private async Task UpdatePublicInfo(SysNotice notice)
+ {
+ var currUserId = CurrentUserInfo.UserId;
+ var emp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == currUserId, false);
+ notice.PublicUserId = currUserId;
+ notice.PublicUserName = CurrentUserInfo.Name;
+ notice.PublicOrgId = emp.OrgId;
+ notice.PublicOrgName = emp.OrgName;
+ }
+
+ /// <summary>
+ /// 鏈鐞嗘秷鎭�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysNotice/unread")]
+ public async Task<dynamic> UnReadNoticeList([FromQuery] NoticeInput input)
+ {
+ var dic = typeof(NoticeType).EnumToList();
+ var notices = await (from n in _sysNoticeRep.AsQueryable()
+ join u in _sysNoticeUserRep.AsQueryable() on n.Id equals u.NoticeId
+ where u.UserId == CurrentUserInfo.UserId
+ && u.ReadStatus == NoticeUserStatus.UNREAD
+ orderby n.CreatedTime descending
+ select new NoticeReceiveOutput
+ {
+ CancelTime = n.CancelTime,
+ Id = n.Id,
+ Content = n.Content,
+ Title = n.Title,
+ Status = n.Status,
+ Type = n.Type,
+ PublicOrgId = n.PublicOrgId,
+ PublicOrgName = n.PublicOrgName,
+ PublicTime = n.PublicTime,
+ PublicUserId = n.PublicUserId,
+ PublicUserName = n.PublicUserName,
+ ReadStatus = u.ReadStatus,
+ ReadTime = u.ReadTime
+ })
+ .Skip(input.PageNo > 0 ? input.PageNo - 1 : input.PageNo)
+ .Take(input.PageSize)
+ .ToListAsync();
+
+ var count = notices.Count();
+
+ List<dynamic> noticeClays = new List<dynamic>();
+ int index = 0;
+ foreach (var item in dic)
+ {
+ noticeClays.Add(
+ new
+ {
+ Index = index++,
+ Key = item.Describe,
+ Value = item.Value,
+ NoticeData = notices.Where(m => m.Type == item.Value).ToList()
+ }
+ );
+ }
+ return new
+ {
+ Rows = noticeClays,
+ TotalRows = count
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs
new file mode 100644
index 0000000..a714429
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Notice/SysNoticeUserService.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application.Notice
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鐢ㄦ埛
+ /// </summary>
+ public class SysNoticeUserService : ISysNoticeUserService, ITransient
+ {
+ private readonly IRepository<SysNoticeUser> _sysNoticeUserRep; // 閫氱煡鍏憡鐢ㄦ埛琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysNoticeUserRep"></param>
+ public SysNoticeUserService(IRepository<SysNoticeUser> sysNoticeUserRep)
+ {
+ _sysNoticeUserRep = sysNoticeUserRep;
+ }
+
+ /// <summary>
+ /// 澧炲姞
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="noticeUserIdList"></param>
+ /// <param name="noticeUserStatus"></param>
+ /// <returns></returns>
+ public async Task Add(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
+ {
+ var noticeUserList = noticeUserIdList.Select(u => new SysNoticeUser
+ {
+ NoticeId = noticeId,
+ UserId = u,
+ ReadStatus = noticeUserStatus
+ });
+ await _sysNoticeUserRep.InsertAsync(noticeUserList);
+ }
+
+ /// <summary>
+ /// 鏇存柊
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="noticeUserIdList"></param>
+ /// <param name="noticeUserStatus"></param>
+ /// <returns></returns>
+ public async Task Update(long noticeId, List<long> noticeUserIdList, NoticeUserStatus noticeUserStatus)
+ {
+ var noticeUsers = await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
+ await _sysNoticeUserRep.DeleteAsync(noticeUsers);
+
+ await Add(noticeId, noticeUserIdList, noticeUserStatus);
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫氱煡鍏憡鐢ㄦ埛鍒楄〃
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <returns></returns>
+ public async Task<List<SysNoticeUser>> GetNoticeUserListByNoticeId(long noticeId)
+ {
+ return await _sysNoticeUserRep.Where(u => u.NoticeId == noticeId).ToListAsync();
+ }
+
+ /// <summary>
+ /// 璁剧疆閫氱煡鍏憡璇诲彇鐘舵��
+ /// </summary>
+ /// <param name="noticeId"></param>
+ /// <param name="userId"></param>
+ /// <param name="status"></param>
+ /// <returns></returns>
+ public async Task Read(long noticeId, long userId, NoticeUserStatus status)
+ {
+ var noticeUser = await _sysNoticeUserRep.FirstOrDefaultAsync(u => u.NoticeId == noticeId && u.UserId == userId);
+ if (noticeUser != null)
+ {
+ noticeUser.ReadStatus = status;
+ noticeUser.ReadTime = DateTimeOffset.Now;
+ await noticeUser.UpdateAsync();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs
new file mode 100644
index 0000000..79657ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/Dto/OnlineUserOutput.cs
@@ -0,0 +1,58 @@
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class OnlineUserOutput
+ {
+ /// <summary>
+ /// 杩炴帴Id
+ /// </summary>
+ public string ConnectionId { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public long UserId { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庤繛鎺ユ椂闂�
+ /// </summary>
+ public DateTimeOffset LastTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰旾P
+ /// </summary>
+ public string LastLoginIp { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+ /// </summary>
+ public string LastLoginBrowser { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+ /// </summary>
+ public string LastLoginOs { get; set; }
+
+ ///// <summary>
+ ///// 绉熸埛id
+ ///// </summary>
+ //public long TenantId { get; set; }
+
+ /// <summary>
+ /// 绉熸埛鍚嶇О
+ /// </summary>
+ public string TenantName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs
new file mode 100644
index 0000000..1258de7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/ISysOnlineUserService.cs
@@ -0,0 +1,37 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysOnlineUserService
+ {
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<OnlineUserOutput>> QueryOnlineUserPageList(PageInputBase input);
+
+ /// <summary>
+ /// 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ Task<List<OnlineUserOutput>> List();
+
+ /// <summary>
+ /// 寮哄埗涓嬬嚎
+ /// </summary>
+ /// <param name="onlineUser">鍦ㄧ嚎鐢ㄦ埛淇℃伅</param>
+ /// <returns></returns>
+ Task ForceExist(OnlineUser onlineUser);
+
+ /// <summary>
+ /// 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ Task SingleLoginForceExist(OnlineUser user);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs
new file mode 100644
index 0000000..44400f1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/OnlineUser/SysOnlineUserService.cs
@@ -0,0 +1,105 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍦ㄧ嚎鐢ㄦ埛鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "OnlineUser", Order = 100)]
+ [Route("api")]
+ public class SysOnlineUserService : ISysOnlineUserService, IDynamicApiController, ITransient
+ {
+ private readonly ISysCacheService _sysCacheService;
+ private readonly IRepository<SysUser> _sysUserRep;// 鐢ㄦ埛琛ㄤ粨鍌�
+ //private readonly IRepository<SysTenant, MultiTenantDbContextLocator> _sysTenantRep;// 绉熸埛浠撳偍
+ private readonly IHubContext<ChatHub, IChatClient> _chatHubContext;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysCacheService"></param>
+ /// <param name="sysUerRep"></param>
+ /// <param name="chatHubContext"></param>
+ public SysOnlineUserService(ISysCacheService sysCacheService, IRepository<SysUser> sysUerRep,
+ //IRepository<SysTenant, MultiTenantDbContextLocator> sysTenantRep,
+ IHubContext<ChatHub, IChatClient> chatHubContext)
+ {
+ _sysCacheService = sysCacheService;
+ _sysUserRep = sysUerRep;
+ //_sysTenantRep = sysTenantRep;
+ _chatHubContext = chatHubContext;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysOnlineUser/page")]
+ public async Task<PageResult<OnlineUserOutput>> QueryOnlineUserPageList([FromQuery] PageInputBase input)
+ {
+ var onlineUsers = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+ var currUser = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+ var onlineUserOutputs = onlineUsers
+ //.Where(!CurrentUserInfo.IsSuperAdmin, o => o.TenantId == currUser.TenantId)
+ .Where(!string.IsNullOrWhiteSpace(input.SearchValue), o => o.Account.Contains(input.SearchValue) || o.Name.Contains(input.SearchValue))
+ .Select(o => o.Adapt<OnlineUserOutput>());
+
+ var currentPageData = onlineUserOutputs.ToADPagedList(input.PageNo, input.PageSize);
+
+ //濉厖绉熸埛鍚嶇О
+ //var tenants = await _sysTenantRep.DetachedEntities.ToListAsync();
+ //currentPageData.Rows.ToList().ForEach(o => o.TenantName = tenants.FirstOrDefault(p => p.Id == o.TenantId)?.Name);
+
+ return currentPageData;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍦ㄧ嚎鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysOnlineUser/list")]
+ public async Task<List<OnlineUserOutput>> List()
+ {
+ var onlineUsers = await _sysCacheService.GetAsync<List<OnlineUser>>(CommonConst.CACHE_KEY_ONLINE_USER) ?? new List<OnlineUser>();
+ var currUser = _sysUserRep.FirstOrDefault(u => u.Id == CurrentUserInfo.UserId, false);
+ var onlineUserOutputs = onlineUsers
+ //.Where(!CurrentUserInfo.IsSuperAdmin, o => o.TenantId == currUser.TenantId)
+ .Select(o => o.Adapt<OnlineUserOutput>())
+ .ToList();
+
+ //濉厖绉熸埛鍚嶇О
+ //var tenants = await _sysTenantRep.DetachedEntities.ToListAsync();
+ //onlineUserOutputs.ForEach(o => o.TenantName = tenants.FirstOrDefault(p => p.Id == o.TenantId)?.Name);
+
+ return onlineUserOutputs;
+ }
+
+ /// <summary>
+ /// 寮哄埗涓嬬嚎
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ [HttpPost("sysOnlineUser/forceExist")]
+ public async Task ForceExist([FromBody] OnlineUser user)
+ {
+ await _chatHubContext.Clients.Client(user.ConnectionId).ForceExist();
+ }
+ /// <summary>
+ /// 鍗曠敤鎴风櫥褰曞己鍒朵笅绾�
+ /// </summary>
+ /// <param name="user"></param>
+ /// <returns></returns>
+ public async Task SingleLoginForceExist([FromBody] OnlineUser user)
+ {
+ await _chatHubContext.Clients.Client(user.ConnectionId).SingleLoginForceExist();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs
new file mode 100644
index 0000000..17e7d9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgInput.cs
@@ -0,0 +1,180 @@
+锘縰sing Admin.NET.Core;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 缁勭粐鏈烘瀯鍙傛暟
+ /// </summary>
+ public class OrgListInput
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public string Pid { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class OrgAddInput
+ {
+ /// <summary>
+ /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ /// </summary>
+ [Required(ErrorMessage = "璇烽�夋嫨鏈烘瀯绫诲瀷")]
+ public string OrgType { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public string Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteOrgInput
+ {
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+ public string Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateOrgInput
+ {
+ /// <summary>
+ /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ /// </summary>
+ [Required(ErrorMessage = "璇烽�夋嫨鏈烘瀯绫诲瀷")]
+ public string OrgType { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+ public string Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public string Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryOrgInput
+ {
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Required(ErrorMessage = "鏈烘瀯Id涓嶈兘涓虹┖")]
+ public string Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class OrgPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鏈烘瀯绫诲瀷-鍝佺墝_1銆佹�诲簵(鍔犵洘/鐩磋惀)_2銆佺洿钀ュ簵_3銆佸姞鐩熷簵_4
+ /// </summary>
+ public string OrgType { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public string Pid { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs
new file mode 100644
index 0000000..b50cc25
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgOutput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 缁勭粐鏈烘瀯鍙傛暟
+ /// </summary>
+ public class OrgOutput
+ {
+ /// <summary>
+ /// 鏈烘瀯绫诲瀷
+ /// </summary>
+ public string OrgType { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs
new file mode 100644
index 0000000..3554821
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/Dto/OrgTreeNode.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core;
+using System.Collections;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 缁勭粐鏈烘瀯鏍�
+ /// </summary>
+ public class OrgTreeNode : ITreeNode
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ public long ParentId { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ public long Value { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭锛岃秺灏忎紭鍏堢骇瓒婇珮
+ /// </summary>
+ public int Weight { get; set; }
+
+ /// <summary>
+ /// 瀛愯妭鐐�
+ /// </summary>
+ public List<OrgTreeNode> Children { get; set; } = new List<OrgTreeNode>();
+
+ /// <summary>
+ /// 涓婁竴绾d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetId()
+ {
+ return Id;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ public long GetPid()
+ {
+ return ParentId;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="children"></param>
+ public void SetChildren(IList children)
+ {
+ Children = (List<OrgTreeNode>)children;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs
new file mode 100644
index 0000000..a20196b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/ISysOrgService.cs
@@ -0,0 +1,79 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysOrgService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddOrg(OrgAddInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteOrg(DeleteOrgInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="dataScopeType"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetDataScopeListByDataScopeType(int dataScopeType, long orgId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysOrg> GetOrg([FromQuery] QueryOrgInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<OrgOutput>> GetOrgList([FromQuery] OrgListInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<dynamic> GetOrgTree();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<OrgOutput>> QueryOrgPageList([FromQuery] OrgPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateOrg(UpdateOrgInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<long>> GetAllDataScopeIdList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<long>> GetUserDataScopeIdList();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs
new file mode 100644
index 0000000..15e318f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Org/SysOrgService.cs
@@ -0,0 +1,383 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 缁勭粐鏈烘瀯鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Org", Order = 148)]
+ [Route("api")]
+ public class SysOrgService : ISysOrgService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysOrg> _sysOrgRep; // 缁勭粐鏈烘瀯琛ㄤ粨鍌�
+ private readonly ISysCacheService _sysCacheService;
+ private readonly ISysEmpService _sysEmpService;
+ private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+ private readonly ISysRoleDataScopeService _sysRoleDataScopeService;
+ private readonly ISysUserDataScopeService _sysUserDataScopeService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysOrgRep"></param>
+ /// <param name="sysCacheService"></param>
+ /// <param name="sysEmpService"></param>
+ /// <param name="sysEmpExtOrgPosService"></param>
+ /// <param name="sysRoleDataScopeService"></param>
+ /// <param name="sysUserDataScopeService"></param>
+ public SysOrgService(IRepository<SysOrg> sysOrgRep,
+ ISysCacheService sysCacheService,
+ ISysEmpService sysEmpService,
+ ISysEmpExtOrgPosService sysEmpExtOrgPosService,
+ ISysRoleDataScopeService sysRoleDataScopeService,
+ ISysUserDataScopeService sysUserDataScopeService)
+ {
+ _sysOrgRep = sysOrgRep;
+ _sysCacheService = sysCacheService;
+ _sysEmpService = sysEmpService;
+ _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+ _sysRoleDataScopeService = sysRoleDataScopeService;
+ _sysUserDataScopeService = sysUserDataScopeService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ缁勭粐鏈烘瀯
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysOrg/page")]
+ public async Task<PageResult<OrgOutput>> QueryOrgPageList([FromQuery] OrgPageInput input)
+ {
+ var dataScopeList = GetDataScopeList(await GetUserDataScopeIdList());
+
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var id = !string.IsNullOrEmpty(input.Id?.Trim());
+ var pId = !string.IsNullOrEmpty(input.Pid?.Trim());
+ var orgs = await _sysOrgRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")), // 鏍规嵁鏈烘瀯鍚嶇О妯$硦鏌ヨ
+ (id, u => u.Id == long.Parse(input.Id.Trim())), // 鏍规嵁鏈烘瀯id鏌ヨ
+ (pId, u => EF.Functions.Like(u.Pids, $"%{input.Pid.Trim()}%")
+ || u.Id == long.Parse(input.Pid.Trim()))) // 鏍规嵁鐖舵満鏋刬d鏌ヨ
+ .Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id)) // 闈炵鐞嗗憳鑼冨洿闄愬埗
+ .Where(u => u.Status != CommonStatus.DELETED).OrderBy(u => u.Sort)
+ .ProjectToType<OrgOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return orgs;
+ }
+
+ /// <summary>
+ /// (闈炵鐞嗗憳)鑾峰彇褰撳墠鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d锛�
+ /// </summary>
+ /// <param name="dataScopes"></param>
+ /// <returns></returns>
+ private List<long> GetDataScopeList(List<long> dataScopes)
+ {
+ var dataScopeList = new List<long>();
+ // 濡傛灉鏄秴绾х鐞嗗憳鍒欒幏鍙栨墍鏈夌粍缁囨満鏋勶紝鍚﹀垯鍙幏鍙栧叾鏁版嵁鑼冨洿鐨勬満鏋勬暟鎹�
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ if (dataScopes.Count < 1)
+ return dataScopeList;
+
+ // 姝ゅ鑾峰彇鎵�鏈夌殑涓婄骇鑺傜偣锛岀敤浜庢瀯閫犲畬鏁存爲
+ dataScopes.ForEach(u =>
+ {
+ var sysOrg = _sysOrgRep.DetachedEntities.FirstOrDefault(c => c.Id == u);
+ if (sysOrg != null)
+ {
+ var parentAndChildIdListWithSelf = sysOrg.Pids.TrimEnd(',').Replace("[", "").Replace("]", "")
+ .Split(",").Select(u => long.Parse(u)).ToList();
+ parentAndChildIdListWithSelf.Add(sysOrg.Id);
+ dataScopeList.AddRange(parentAndChildIdListWithSelf);
+ }
+ });
+ }
+
+ return dataScopeList;
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭粐鏈烘瀯鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysOrg/list")]
+ public async Task<List<OrgOutput>> GetOrgList([FromQuery] OrgListInput input)
+ {
+ var dataScopeList = GetDataScopeList(await GetUserDataScopeIdList());
+
+ var pId = !string.IsNullOrEmpty(input.Pid?.Trim());
+ var orgs = await _sysOrgRep.DetachedEntities
+ .Where(pId, u => u.Pid == long.Parse(input.Pid))
+ .Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id))
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .OrderBy(u => u.Sort)
+ .ProjectToType<OrgOutput>()
+ .ToListAsync();
+ return orgs;
+ }
+
+ /// <summary>
+ /// 澧炲姞缁勭粐鏈烘瀯
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysOrg/add")]
+ public async Task AddOrg(OrgAddInput input)
+ {
+ var isExist = await _sysOrgRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D2002);
+ var dataScopes = await GetUserDataScopeIdList();
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ // 濡傛灉鏂板鐨勬満鏋勭埗Id涓嶆槸0锛屽垯杩涜鏁版嵁鏉冮檺鏍¢獙
+ if (input.Pid != "0" && !string.IsNullOrEmpty(input.Pid))
+ {
+ // 鏂板缁勭粐鏈烘瀯鐨勭埗鏈烘瀯涓嶅湪鑷繁鐨勬暟鎹寖鍥村唴
+
+ if (dataScopes.Count < 1 || !dataScopes.Contains(long.Parse(input.Pid)))
+ throw Oops.Oh(ErrorCode.D2003);
+ }
+ else
+ throw Oops.Oh(ErrorCode.D2006);
+ }
+
+ var sysOrg = input.Adapt<SysOrg>();
+ await FillPids(sysOrg);
+ var newOrg = await _sysOrgRep.InsertNowAsync(sysOrg);
+ // 褰撳墠鐢ㄦ埛涓嶆槸瓒呯骇绠$悊鍛樻椂锛屽皢鏂板鐨勫叕鍙稿姞鍒扮敤鎴风殑鏁版嵁鏉冮檺
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var userId = CurrentUserInfo.UserId;
+ new SysUserDataScope
+ {
+ SysUserId = userId,
+ SysOrgId = newOrg.Entity.Id
+ }.Insert();
+ dataScopes.Add(newOrg.Entity.Id);
+ await _sysCacheService.SetDataScope(userId, dataScopes); // 缂撳瓨鏂扮粨鏋�
+ }
+ }
+
+ /// <summary>
+ /// 濉厖鐖禝ds瀛楁
+ /// </summary>
+ /// <param name="sysOrg"></param>
+ /// <returns></returns>
+ private async Task FillPids(SysOrg sysOrg)
+ {
+ if (sysOrg.Pid == 0L)
+ {
+ sysOrg.Pids = "[" + 0 + "],";
+ }
+ else
+ {
+ var t = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == sysOrg.Pid);
+ sysOrg.Pids = t.Pids + "[" + t.Id + "],";
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎缁勭粐鏈烘瀯
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysOrg/delete")]
+ [UnitOfWork]
+ public async Task DeleteOrg(DeleteOrgInput input)
+ {
+ var sysOrg = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+
+ // 妫�娴嬫暟鎹寖鍥磋兘涓嶈兘鎿嶄綔杩欎釜鏈烘瀯
+ var dataScopes = await GetUserDataScopeIdList();
+ if (!CurrentUserInfo.IsSuperAdmin && (dataScopes.Count < 1 || !dataScopes.Contains(sysOrg.Id)))
+ throw Oops.Oh(ErrorCode.D2003);
+
+ // 璇ユ満鏋勪笅鏈夊憳宸ワ紝鍒欎笉鑳藉垹
+ var hasOrgEmp = await _sysEmpService.HasOrgEmp(sysOrg.Id);
+ if (hasOrgEmp)
+ throw Oops.Oh(ErrorCode.D2004);
+
+ // 璇ユ満鏋勪笅闈㈠瓙鏈烘瀯鑻ユ湁鍛樺伐锛屽垯涓嶈兘鍒�
+ var orgIds = await _sysOrgRep.DetachedEntities.Where(u => u.Pids.Contains(input.Id)).Select(u => u.Id).ToListAsync();
+ var emps = await _sysEmpService.HasOrgEmp(orgIds);
+ if (emps.Count > 0)
+ throw Oops.Oh(ErrorCode.D2004);
+
+ // 璇ラ檮灞炴満鏋勪笅鑻ユ湁鍛樺伐锛屽垯涓嶈兘鍒�
+ var hasExtOrgEmp = await _sysEmpExtOrgPosService.HasExtOrgEmp(sysOrg.Id);
+ if (hasExtOrgEmp)
+ throw Oops.Oh(ErrorCode.D2005);
+
+ // 绾ц仈鍒犻櫎瀛愯妭鐐�
+ var childIdList = await GetChildIdListWithSelfById(sysOrg.Id);
+ var orgs = await _sysOrgRep.Where(u => childIdList.Contains(u.Id)).ToListAsync();
+ await _sysOrgRep.DeleteAsync(orgs);
+
+ // 绾ц仈鍒犻櫎璇ユ満鏋勫強瀛愭満鏋勫搴旂殑瑙掕壊-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ await _sysRoleDataScopeService.DeleteRoleDataScopeListByOrgIdList(childIdList);
+
+ // 绾ц仈鍒犻櫎璇ユ満鏋勫瓙鏈烘瀯瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ await _sysUserDataScopeService.DeleteUserDataScopeListByOrgIdList(childIdList);
+ }
+
+ /// <summary>
+ /// 鏇存柊缁勭粐鏈烘瀯
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysOrg/edit")]
+ [UnitOfWork]
+ public async Task UpdateOrg(UpdateOrgInput input)
+ {
+ if (input.Pid != "0" && !string.IsNullOrEmpty(input.Pid))
+ {
+ var org = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Pid));
+ _ = org ?? throw Oops.Oh(ErrorCode.D2000);
+ }
+ if (input.Id == input.Pid)
+ throw Oops.Oh(ErrorCode.D2001);
+
+ // 濡傛灉鏄紪杈戯紝鐖秈d涓嶈兘涓鸿嚜宸辩殑瀛愯妭鐐�
+ var childIdListById = await GetChildIdListWithSelfById(long.Parse(input.Id));
+ if (childIdListById.Contains(long.Parse(input.Pid)))
+ throw Oops.Oh(ErrorCode.D2001);
+
+ var sysOrg = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+
+ // 妫�娴嬫暟鎹寖鍥磋兘涓嶈兘鎿嶄綔杩欎釜鏈烘瀯
+ var dataScopes = await GetUserDataScopeIdList();
+ if (!CurrentUserInfo.IsSuperAdmin && (dataScopes.Count < 1 || !dataScopes.Contains(sysOrg.Id)))
+ throw Oops.Oh(ErrorCode.D2003);
+
+ var isExist = await _sysOrgRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != sysOrg.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D2002);
+
+ // 濡傛灉鍚嶇О鏈夊彉鍖栵紝鍒欎慨鏀瑰搴斿憳宸ョ殑鏈烘瀯鐩稿叧淇℃伅
+ if (!sysOrg.Name.Equals(input.Name))
+ await _sysEmpService.UpdateEmpOrgInfo(sysOrg.Id, sysOrg.Name);
+
+ sysOrg = input.Adapt<SysOrg>();
+ await FillPids(sysOrg);
+ await sysOrg.UpdateAsync(ignoreNullValues: true);
+
+ //// 灏嗘墍鏈夊瓙鐨勭埗id杩涜鏇存柊
+ //childIdListById.ForEach(u=> {
+ // var child = _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == u.Id);
+ // var newInput = child.Adapt<UpdateOrgInput>();
+ // UpdateOrg(newInput).GetAwaiter();
+ //});
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭粐鏈烘瀯淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysOrg/detail")]
+ public async Task<SysOrg> GetOrg([FromQuery] QueryOrgInput input)
+ {
+ return await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == long.Parse(input.Id));
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑺傜偣Id鑾峰彇鎵�鏈夊瓙鑺傜偣Id闆嗗悎锛屽寘鍚嚜宸�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ private async Task<List<long>> GetChildIdListWithSelfById(long id)
+ {
+ var childIdList = await _sysOrgRep.DetachedEntities
+ .Where(u => EF.Functions.Like(u.Pids, $"%{id}%"))
+ .Select(u => u.Id).ToListAsync();
+ childIdList.Add(id);
+ return childIdList;
+ }
+
+ /// <summary>
+ /// 鑾峰彇缁勭粐鏈烘瀯鏍�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysOrg/tree")]
+ public async Task<dynamic> GetOrgTree()
+ {
+ var dataScopeList = new List<long>();
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var dataScopes = await GetUserDataScopeIdList();
+ if (dataScopes.Count < 1)
+ return dataScopeList;
+ dataScopeList = GetDataScopeList(dataScopes);
+ }
+ var orgs = await _sysOrgRep.DetachedEntities.Where(dataScopeList.Count > 0, u => dataScopeList.Contains(u.Id))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .OrderBy(u => u.Sort)
+ .ProjectToType<OrgTreeNode>()
+ .ToListAsync();
+
+ return new TreeBuildUtil<OrgTreeNode>().Build(orgs);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏁版嵁鑼冨洿绫诲瀷鑾峰彇褰撳墠鐢ㄦ埛鐨勬暟鎹寖鍥达紙鏈烘瀯Id锛夐泦鍚�
+ /// </summary>
+ /// <param name="dataScopeType"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetDataScopeListByDataScopeType(int dataScopeType, long orgId)
+ {
+ var orgIdList = new List<long>();
+ if (orgId < 0)
+ return orgIdList;
+
+ // 濡傛灉鏄寖鍥寸被鍨嬫槸鍏ㄩ儴鏁版嵁锛屽垯鑾峰彇褰撳墠鎵�鏈夌殑缁勭粐鏋舵瀯Id
+ if (dataScopeType == (int)DataScopeType.ALL)
+ {
+ orgIdList = await _sysOrgRep.DetachedEntities.Where(u => u.Status == CommonStatus.ENABLE).Select(u => u.Id).ToListAsync();
+ }
+ // 濡傛灉鑼冨洿绫诲瀷鏄湰閮ㄩ棬鍙婁互涓嬮儴闂紝鍒欐煡璇㈡湰鑺傜偣鍜屽瓙鑺傜偣闆嗗悎锛屽寘鍚湰鑺傜偣
+ else if (dataScopeType == (int)DataScopeType.DEPT_WITH_CHILD)
+ {
+ orgIdList = await GetChildIdListWithSelfById(orgId);
+ }
+ // 濡傛灉鏁版嵁鑼冨洿鏄湰閮ㄩ棬锛屼笉鍚瓙鑺傜偣锛屽垯鐩存帴杩斿洖鏈儴闂�
+ else if (dataScopeType == (int)DataScopeType.DEPT)
+ {
+ orgIdList.Add(orgId);
+ }
+ return orgIdList;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夌殑鏈烘瀯缁勭粐Id闆嗗悎
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetAllDataScopeIdList()
+ {
+ return await _sysOrgRep.DetachedEntities.Select(u => u.Id).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetUserDataScopeIdList()
+ {
+ return await App.GetService<ISysUserService>().GetUserDataScopeIdList();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs
new file mode 100644
index 0000000..dbc199d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/Dto/PosInput.cs
@@ -0,0 +1,132 @@
+锘縰sing Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑱屼綅鍙傛暟
+ /// </summary>
+ public class PosInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+
+ /// <summary>
+ /// 褰撳墠椤电爜
+ /// </summary>
+ public int PageNo { get; set; } = 1;
+
+ /// <summary>
+ /// 椤电爜瀹归噺
+ /// </summary>
+ public int PageSize { get; set; } = 20;
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddPosInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鑱屼綅鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鑱屼綅缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeletePosInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdatePosInput
+ {
+ /// <summary>
+ /// 鑱屼綅Id
+ /// </summary>
+ [Required(ErrorMessage = "鑱屼綅Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "鑱屼綅鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "鑱屼綅缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public int Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryPosInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs
new file mode 100644
index 0000000..6564992
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/ISysPosService.cs
@@ -0,0 +1,53 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysPosService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddPos(AddPosInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeletePos(DeletePosInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysPos> GetPos([FromQuery] QueryPosInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<SysPos>> GetPosList([FromQuery] PosInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysPos>> QueryPosPageList([FromQuery] PosInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdatePos(UpdatePosInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs
new file mode 100644
index 0000000..d5afeee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Pos/SysPosService.cs
@@ -0,0 +1,137 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑱屼綅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Pos", Order = 147)]
+ [Route("api")]
+ public class SysPosService : ISysPosService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysPos> _sysPosRep; // 鑱屼綅琛ㄤ粨鍌�
+
+ private readonly ISysEmpPosService _sysEmpPosService;
+ private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysPosRep"></param>
+ /// <param name="sysEmpPosService"></param>
+ /// <param name="sysEmpExtOrgPosService"></param>
+ public SysPosService(IRepository<SysPos> sysPosRep,
+ ISysEmpPosService sysEmpPosService,
+ ISysEmpExtOrgPosService sysEmpExtOrgPosService)
+ {
+ _sysPosRep = sysPosRep;
+ _sysEmpPosService = sysEmpPosService;
+ _sysEmpExtOrgPosService = sysEmpExtOrgPosService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鑱屼綅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysPos/page")]
+ public async Task<PageResult<SysPos>> QueryPosPageList([FromQuery] PosInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var pos = await _sysPosRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+ (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .OrderBy(u => u.Sort)
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return pos;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鑱屼綅鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysPos/list")]
+ public async Task<List<SysPos>> GetPosList([FromQuery] PosInput input)
+ {
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ return await _sysPosRep.DetachedEntities.Where(code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%"))
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .OrderBy(u => u.Sort).ToListAsync();
+ }
+
+ /// <summary>
+ /// 澧炲姞鑱屼綅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysPos/add")]
+ public async Task AddPos(AddPosInput input)
+ {
+ var isExist = await _sysPosRep.DetachedEntities.AnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D6000);
+
+ var pos = input.Adapt<SysPos>();
+ await pos.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鑱屼綅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysPos/delete")]
+ public async Task DeletePos(DeletePosInput input)
+ {
+ // 璇ヨ亴浣嶄笅鏄惁鏈夊憳宸�
+ var hasPosEmp = await _sysEmpPosService.HasPosEmp(input.Id);
+ if (hasPosEmp)
+ throw Oops.Oh(ErrorCode.D6001);
+
+ // 璇ラ檮灞炶亴浣嶄笅鏄惁鏈夊憳宸�
+ var hasExtPosEmp = await _sysEmpExtOrgPosService.HasExtPosEmp(input.Id);
+ if (hasExtPosEmp)
+ throw Oops.Oh(ErrorCode.D6001);
+
+ var pos = await _sysPosRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await pos.DeleteAsync();
+ }
+
+ /// <summary>
+ /// 鏇存柊鑱屼綅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysPos/edit")]
+ public async Task UpdatePos(UpdatePosInput input)
+ {
+ var isExist = await _sysPosRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D6000);
+
+ var pos = input.Adapt<SysPos>();
+ await pos.UpdateAsync(ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鑱屼綅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysPos/detail")]
+ public async Task<SysPos> GetPos([FromQuery] QueryPosInput input)
+ {
+ return await _sysPosRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs
new file mode 100644
index 0000000..4937334
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleInput.cs
@@ -0,0 +1,251 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瑙掕壊鍙傛暟
+ /// </summary>
+ public class RoleInput
+ {
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class RolePageInput : PageInputBase
+ {
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public virtual string Code { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddRoleInput
+ {
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ /// </summary>
+ public int DataScopeType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteRoleInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateRoleInput
+ {
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ [Required(ErrorMessage = "璇烽�夋嫨瑙掕壊绫诲瀷")]
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊鍚嶇О涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊缂栫爜涓嶈兘涓虹┖")]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ /// </summary>
+ public int DataScopeType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryRoleInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class GrantRoleMenuInput : IXnInputBase
+ {
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ /// </summary>
+ public int DataScopeType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantMenuIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantRoleIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantOrgIdList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class GrantRoleDataInput : IXnInputBase
+ {
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Required(ErrorMessage = "瑙掕壊Id涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ /// </summary>
+ public int DataScopeType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantMenuIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantRoleIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantOrgIdList { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs
new file mode 100644
index 0000000..0a4bdc8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/Dto/RoleOutput.cs
@@ -0,0 +1,30 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐧诲綍鐢ㄦ埛瑙掕壊鍙傛暟
+ /// </summary>
+ public class RoleOutput
+ {
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs
new file mode 100644
index 0000000..a342714
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleDataScopeService.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysRoleDataScopeService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgIdList"></param>
+ /// <returns></returns>
+ Task DeleteRoleDataScopeListByOrgIdList(List<long> orgIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ Task DeleteRoleDataScopeListByRoleId(long roleId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <returns></returns>
+ Task<List<long>> GetRoleDataScopeIdList(List<long> roleIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantDataScope(GrantRoleDataInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs
new file mode 100644
index 0000000..4057fdf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleMenuService.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysRoleMenuService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="menuIdList"></param>
+ /// <returns></returns>
+ Task DeleteRoleMenuListByMenuIdList(List<long> menuIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ Task DeleteRoleMenuListByRoleId(long roleId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <returns></returns>
+ Task<List<long>> GetRoleMenuIdList(List<long> roleIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantMenu(GrantRoleMenuInput input);
+
+ Task GrantPdaMenu(GrantRoleMenuInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs
new file mode 100644
index 0000000..067a158
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/ISysRoleService.cs
@@ -0,0 +1,109 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysRoleService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddRole(AddRoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteRole(DeleteRoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ Task<string> GetNameByRoleId(long roleId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<RoleOutput>> GetRoleDropDown();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysRole> GetRoleInfo([FromQuery] QueryRoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<dynamic> GetRoleList([FromQuery] RoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserDataScopeIdList(List<long> roleIdList, long orgId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<RoleOutput>> GetUserRoleList(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantData(GrantRoleDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantMenu(GrantRoleMenuInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<long>> OwnData([FromQuery] QueryRoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<long>> OwnMenu([FromQuery] QueryRoleInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<SysRole>> QueryRolePageList([FromQuery] RolePageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateRole(UpdateRoleInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs
new file mode 100644
index 0000000..8bce560
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleDataScopeService.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瑙掕壊鏁版嵁鑼冨洿鏈嶅姟
+ /// </summary>
+ public class SysRoleDataScopeService : ISysRoleDataScopeService, ITransient
+ {
+ private readonly IRepository<SysRoleDataScope> _sysRoleDataScopeRep; // 瑙掕壊鏁版嵁鑼冨洿琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysRoleDataScopeRep"></param>
+ public SysRoleDataScopeService(IRepository<SysRoleDataScope> sysRoleDataScopeRep)
+ {
+ _sysRoleDataScopeRep = sysRoleDataScopeRep;
+ }
+
+ /// <summary>
+ /// 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task GrantDataScope(GrantRoleDataInput input)
+ {
+ var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+ await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+
+ var roleDataScopes = input.GrantOrgIdList.Select(u => new SysRoleDataScope
+ {
+ SysRoleId = input.Id,
+ SysOrgId = u
+ }).ToList();
+ await _sysRoleDataScopeRep.InsertAsync(roleDataScopes);
+ }
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇瑙掕壊鏁版嵁鑼冨洿闆嗗悎
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <returns></returns>
+ public async Task<List<long>> GetRoleDataScopeIdList(List<long> roleIdList)
+ {
+ return await _sysRoleDataScopeRep.DetachedEntities
+ .Where(u => roleIdList.Contains(u.SysRoleId))
+ .Select(u => u.SysOrgId).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ /// </summary>
+ /// <param name="orgIdList"></param>
+ /// <returns></returns>
+ public async Task DeleteRoleDataScopeListByOrgIdList(List<long> orgIdList)
+ {
+ var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => orgIdList.Contains(u.SysOrgId)).ToListAsync();
+ await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+ }
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ public async Task DeleteRoleDataScopeListByRoleId(long roleId)
+ {
+ var dataScopes = await _sysRoleDataScopeRep.DetachedEntities.Where(u => u.SysRoleId == roleId).ToListAsync();
+ await _sysRoleDataScopeRep.DeleteAsync(dataScopes);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs
new file mode 100644
index 0000000..228c2f3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleMenuService.cs
@@ -0,0 +1,129 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core.Entity.WmsBase;
+using System.Text.RegularExpressions;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瑙掕壊鑿滃崟
+ /// </summary>
+ public class SysRoleMenuService : ISysRoleMenuService, ITransient
+ {
+ private readonly IRepository<SysRoleMenu> _sysRoleMenuRep; // 瑙掕壊鑿滃崟琛ㄤ粨鍌�
+ private readonly IRepository<WmsRolePdaMenu> _wmsRolePdaMenu; // 瑙掕壊鑿滃崟琛ㄤ粨鍌�
+ private readonly IRepository<SysMenu> _sysMenuRep; // 鑿滃崟琛ㄤ粨鍌�
+ private readonly ISysCacheService _sysCacheService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysRoleMenuRep"></param>
+ /// <param name="sysMenuRep"></param>
+ /// <param name="sysCacheService"></param>
+ public SysRoleMenuService(
+ IRepository<SysRoleMenu> sysRoleMenuRep,
+ IRepository<WmsRolePdaMenu> wmsRolePdaMenu,
+ IRepository<SysMenu> sysMenuRep,
+ ISysCacheService sysCacheService)
+ {
+ _sysRoleMenuRep = sysRoleMenuRep;
+ _wmsRolePdaMenu = wmsRolePdaMenu;
+ _sysMenuRep = sysMenuRep;
+ _sysCacheService = sysCacheService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瑙掕壊鐨勮彍鍗旾d闆嗗悎
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <returns></returns>
+ public async Task<List<long>> GetRoleMenuIdList(List<long> roleIdList)
+ {
+ return await _sysRoleMenuRep.DetachedEntities
+ .Where(u => roleIdList.Contains(u.SysRoleId))
+ .Select(u => u.SysMenuId).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鎺堟潈瑙掕壊鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task GrantMenu(GrantRoleMenuInput input)
+ {
+ var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+ await _sysRoleMenuRep.DeleteAsync(roleMenus);
+
+ // 纭繚瀵规寜閽彍鍗曠殑鐖剁骇鑿滃崟鑳芥纭殑鎺堟潈锛屽彂鐜板墠绔瀯閫犵殑鏁版嵁浼氫涪寮冧簡鎸夐挳鑿滃崟鐨勭埗绾ц彍鍗�
+ var roleMenuPidsList = await _sysMenuRep.DetachedEntities.Where(u => input.GrantMenuIdList.Contains(u.Id))
+ .Select(u => u.Pids).ToListAsync();
+ var roleMenuSplitPids = roleMenuPidsList
+ .SelectMany(u => u.Split(',', StringSplitOptions.RemoveEmptyEntries)
+ .Select(v => long.Parse(v[1..^1]))
+ .Where(v => v != 0))
+ .Union(input.GrantMenuIdList);
+ var menus = roleMenuSplitPids.Select(u => new SysRoleMenu
+ {
+ SysRoleId = input.Id,
+ SysMenuId = u
+ }).ToList();
+ //ly-0415 杩囨护琛╯ys_menu涓嶅瓨鍦ㄧ殑id
+ List<SysRoleMenu> menusFilters = new List<SysRoleMenu>();
+ foreach (var item in menus)
+ {
+ var _details = _sysMenuRep.Where(x => x.Id == item.SysMenuId).ToList();
+ if (_details.Count>0)
+ {
+ menusFilters.Add(item);
+ }
+ }
+ await _sysRoleMenuRep.InsertAsync(menusFilters);
+ // 娓呴櫎缂撳瓨
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_MENU);
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_PERMISSION);
+ }
+
+ [UnitOfWork]
+ public async Task GrantPdaMenu(GrantRoleMenuInput input)
+ {
+ var roleMenus = await _wmsRolePdaMenu.DetachedEntities.Where(u => u.SysRoleId == input.Id).ToListAsync();
+ await _wmsRolePdaMenu.DeleteAsync(roleMenus);
+
+ foreach (var item in input.GrantMenuIdList)
+ {
+ await _wmsRolePdaMenu.InsertAsync(new WmsRolePdaMenu
+ {
+ SysRoleId = input.Id,
+ PdaMenuId = item
+ });
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑿滃崟Id闆嗗悎鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄤ俊鎭�
+ /// </summary>
+ /// <param name="menuIdList"></param>
+ /// <returns></returns>
+ public async Task DeleteRoleMenuListByMenuIdList(List<long> menuIdList)
+ {
+ var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => menuIdList.Contains(u.SysMenuId)).ToListAsync();
+ await _sysRoleMenuRep.DeleteAsync(roleMenus);
+ }
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勮鑹�-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ public async Task DeleteRoleMenuListByRoleId(long roleId)
+ {
+ var roleMenus = await _sysRoleMenuRep.DetachedEntities.Where(u => u.SysRoleId == roleId).ToListAsync();
+ await _sysRoleMenuRep.DeleteAsync(roleMenus);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs
new file mode 100644
index 0000000..4ab3f8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRolePdaMenu.cs
@@ -0,0 +1,6 @@
+锘縩amespace Admin.NET.Application
+{
+ internal class SysRolePdaMenu
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs
new file mode 100644
index 0000000..b317a68
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Role/SysRoleService.cs
@@ -0,0 +1,345 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瑙掕壊鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Role", Order = 149)]
+ [Route("api")]
+ public class SysRoleService : ISysRoleService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysRole> _sysRoleRep; // 瑙掕壊琛ㄤ粨鍌�
+ private readonly IRepository<SysUserRole> _sysUserRoleRep; // 鐢ㄦ埛瑙掕壊琛ㄤ粨鍌�
+ private readonly ISysRoleDataScopeService _sysRoleDataScopeService;
+ private readonly ISysOrgService _sysOrgService;
+ private readonly ISysRoleMenuService _sysRoleMenuService;
+ private readonly ISysCacheService _sysCacheService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysRoleRep"></param>
+ /// <param name="sysUserRoleRep"></param>
+ /// <param name="sysRoleDataScopeService"></param>
+ /// <param name="sysOrgService"></param>
+ /// <param name="sysRoleMenuService"></param>
+ /// <param name="sysCacheService"></param>
+ public SysRoleService(IRepository<SysRole> sysRoleRep,
+ IRepository<SysUserRole> sysUserRoleRep,
+ ISysRoleDataScopeService sysRoleDataScopeService,
+ ISysOrgService sysOrgService,
+ ISysRoleMenuService sysRoleMenuService,
+ ISysCacheService sysCacheService)
+ {
+ _sysRoleRep = sysRoleRep;
+ _sysUserRoleRep = sysUserRoleRep;
+ _sysRoleDataScopeService = sysRoleDataScopeService;
+ _sysOrgService = sysOrgService;
+ _sysRoleMenuService = sysRoleMenuService;
+ _sysCacheService = sysCacheService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛瑙掕壊鐩稿叧淇℃伅锛堢櫥褰曪級
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<RoleOutput>> GetUserRoleList(long userId)
+ {
+ return await _sysUserRoleRep.Include(m => m.SysRole, false)
+ .Where(m => m.SysUserId == userId && m.SysRole.Status == CommonStatus.ENABLE)
+ .Select(m => new RoleOutput
+ {
+ Id = m.SysRoleId,
+ Code = m.SysRole.Code,
+ Name = m.SysRole.Name
+ }).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇瑙掕壊鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysRole/page")]
+ public async Task<PageResult<SysRole>> QueryRolePageList([FromQuery] RolePageInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ var roles = await _sysRoleRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+ (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+ .Where(u => u.Status == CommonStatus.ENABLE).OrderBy(u => u.Sort)
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return roles;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瑙掕壊鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<dynamic> GetRoleList([FromQuery] RoleInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var code = !string.IsNullOrEmpty(input.Code?.Trim());
+ return await _sysRoleRep.DetachedEntities
+ .Where((name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%")),
+ (code, u => EF.Functions.Like(u.Code, $"%{input.Code.Trim()}%")))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .OrderBy(u => u.Sort)
+ .Select(u => new
+ {
+ u.Id,
+ Name = u.Name + "[" + u.Code + "]",
+ })
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 瑙掕壊涓嬫媺锛堢敤浜庢巿鏉冭鑹叉椂閫夋嫨锛�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysRole/dropDown")]
+ public async Task<List<RoleOutput>> GetRoleDropDown()
+ {
+ // 濡傛灉涓嶆槸瓒呯骇绠$悊鍛橈紝鍒欐煡璇㈣嚜宸辨嫢鏈夌殑瑙掕壊闆嗗悎
+ var roles = CurrentUserInfo.IsSuperAdmin
+ ? await _sysUserRoleRep.Where(u => u.SysUserId == CurrentUserInfo.UserId).Select(u => u.SysRoleId).ToListAsync()
+ : new List<long>();
+
+ return await _sysRoleRep.DetachedEntities
+ .Where(roles.Count > 0, u => roles.Contains(u.Id))
+ .Where(u => u.Status == CommonStatus.ENABLE)
+ .ProjectToType<RoleOutput>()
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 澧炲姞瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/add")]
+ public async Task AddRole(AddRoleInput input)
+ {
+ var isExist = await _sysRoleRep.DetachedEntities.AnyAsync(u => u.Code == input.Code || u.Name == input.Name);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D1006);
+
+ var role = input.Adapt<SysRole>();
+ role.DataScopeType = DataScopeType.ALL; // 鏂拌鑹查粯璁ゅ叏閮ㄦ暟鎹寖鍥�
+ await role.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/delete")]
+ [UnitOfWork]
+ public async Task DeleteRole(DeleteRoleInput input)
+ {
+ var sysRole = await _sysRoleRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (sysRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+ throw Oops.Oh(ErrorCode.D1019);
+
+ await sysRole.DeleteAsync();
+
+ //绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑瑙掕壊-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ await _sysRoleDataScopeService.DeleteRoleDataScopeListByRoleId(sysRole.Id);
+
+ ////绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑鐢ㄦ埛-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ //await _sysUserRoleService.DeleteUserRoleListByRoleId(sysRole.Id); // 閬垮厤寰幆寮曠敤锛屾晠鐢ㄤ笅闈㈤�昏緫
+ var userRoles = await _sysUserRoleRep.Where(u => u.SysRoleId == sysRole.Id).ToListAsync();
+ await _sysUserRoleRep.DeleteAsync(userRoles);
+
+ //绾ц仈鍒犻櫎璇ヨ鑹插搴旂殑瑙掕壊-鑿滃崟琛ㄥ叧鑱斾俊鎭�
+ await _sysRoleMenuService.DeleteRoleMenuListByRoleId(sysRole.Id);
+ }
+
+ /// <summary>
+ /// 鏇存柊瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/edit")]
+ public async Task UpdateRole(UpdateRoleInput input)
+ {
+ var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+ throw Oops.Oh(ErrorCode.D1020);
+
+ var isExist = await _sysRoleRep.DetachedEntities.AnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D1006);
+
+ var sysRole = input.Adapt<SysRole>();
+ await sysRole.UpdateExcludeAsync(new[] { nameof(SysRole.DataScopeType) }, true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysRole/detail")]
+ public async Task<SysRole> GetRoleInfo([FromQuery] QueryRoleInput input)
+ {
+ return await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鎺堟潈瑙掕壊鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/grantMenu")]
+ public async Task GrantMenu(GrantRoleMenuInput input)
+ {
+ var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (!CurrentUserInfo.IsSuperAdmin && adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+ throw Oops.Oh(ErrorCode.D1021);
+
+ await _sysRoleMenuService.GrantMenu(input);
+ }
+
+ /// <summary>
+ /// 鎺堟潈瑙掕壊PDA鑿滃崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/grantPdaMenu")]
+ public async Task GrantPdaMenu(GrantRoleMenuInput input)
+ {
+ var adminRole = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (!CurrentUserInfo.IsSuperAdmin && adminRole.Code == CommonConst.SYS_MANAGER_ROLE_CODE)
+ throw Oops.Oh(ErrorCode.D1021);
+
+ await _sysRoleMenuService.GrantPdaMenu(input);
+ }
+ /// <summary>
+ /// 鎺堟潈瑙掕壊鏁版嵁鑼冨洿
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysRole/grantData")]
+ public async Task GrantData(GrantRoleDataInput input)
+ {
+ // 娓呴櫎鎵�鏈夌敤鎴锋暟鎹寖鍥寸紦瀛�
+ await _sysCacheService.DelByPatternAsync(CommonConst.CACHE_KEY_DATASCOPE);
+
+ var role = await _sysRoleRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ var dataScopeType = input.DataScopeType;
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ //濡傛灉鎺堟潈鐨勮鑹茬殑鏁版嵁鑼冨洿绫诲瀷涓哄叏閮紝鍒欐病鏉冮檺锛屽彧鏈夎秴绾х鐞嗗憳鏈�
+ if ((int)DataScopeType.ALL == dataScopeType)
+ throw Oops.Oh(ErrorCode.D1016);
+
+ //濡傛灉鎺堟潈鐨勮鑹叉暟鎹寖鍥寸被鍨嬩负鑷畾涔夛紝鍒欒鍒ゆ柇鎺堟潈鐨勬暟鎹寖鍥存槸鍚﹀湪鑷繁鐨勬暟鎹寖鍥村唴
+ if ((int)DataScopeType.DEFINE == dataScopeType)
+ {
+ var dataScopes = await _sysOrgService.GetUserDataScopeIdList();
+ var grantOrgIdList = input.GrantOrgIdList; //瑕佹巿鏉冪殑鏁版嵁鑼冨洿鍒楄〃
+ if (grantOrgIdList.Count > 0)
+ {
+ if (dataScopes.Count < 1)
+ throw Oops.Oh(ErrorCode.D1016);
+ //else if (!dataScopes.All(u => grantOrgIdList.Any(c => c == u)))
+ // throw Oops.Oh(ErrorCode.D1016);
+ else if (!grantOrgIdList.All(u => dataScopes.Any(c => c == u)))
+ throw Oops.Oh(ErrorCode.D1016);
+ }
+ }
+ }
+ role.DataScopeType = (DataScopeType)dataScopeType;
+ await _sysRoleDataScopeService.GrantDataScope(input);
+ }
+
+
+
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id闆嗗悎鑾峰彇鏁版嵁鑼冨洿Id闆嗗悎
+ /// </summary>
+ /// <param name="roleIdList"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetUserDataScopeIdList(List<long> roleIdList, long orgId)
+ {
+ // 瀹氫箟瑙掕壊涓渶澶ф暟鎹寖鍥寸殑绫诲瀷锛岀洰鍓嶆寜鏈�澶ц寖鍥寸瓥鐣ユ潵锛屽鏋滀綘鍚屾椂鎷ユ湁ALL鍜孲ELF鐨勬潈闄愶紝鏈�鍚庢寜ALL杩斿洖
+ int strongerDataScopeType = (int)DataScopeType.SELF;
+
+ var customDataScopeRoleIdList = new List<long>();
+ if (roleIdList != null && roleIdList.Count > 0)
+ {
+ var roles = await _sysRoleRep.DetachedEntities.Where(u => roleIdList.Contains(u.Id)).ToListAsync();
+ roles.ForEach(u =>
+ {
+ if (u.DataScopeType == DataScopeType.DEFINE)
+ customDataScopeRoleIdList.Add(u.Id);
+ else if ((int)u.DataScopeType <= strongerDataScopeType)
+ strongerDataScopeType = (int)u.DataScopeType;
+ });
+ }
+
+ // 鑷畾涔夋暟鎹寖鍥寸殑瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥�
+ var roleDataScopeIdList = await _sysRoleDataScopeService.GetRoleDataScopeIdList(customDataScopeRoleIdList);
+
+ // 瑙掕壊涓嫢鏈夋渶澶ф暟鎹寖鍥寸被鍨嬬殑鏁版嵁鑼冨洿
+ var dataScopeIdList = await _sysOrgService.GetDataScopeListByDataScopeType(strongerDataScopeType, orgId);
+
+ return roleDataScopeIdList.Concat(dataScopeIdList).Distinct().ToList(); //骞堕泦
+ }
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id鑾峰彇瑙掕壊鍚嶇О
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<string> GetNameByRoleId(long roleId)
+ {
+ var role = await _sysRoleRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == roleId);
+ if (role == null)
+ throw Oops.Oh(ErrorCode.D1002);
+ return role.Name;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瑙掕壊鎷ユ湁鑿滃崟Id闆嗗悎
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysRole/ownMenu")]
+ public async Task<List<long>> OwnMenu([FromQuery] QueryRoleInput input)
+ {
+ return await _sysRoleMenuService.GetRoleMenuIdList(new List<long> { input.Id });
+ }
+
+ /// <summary>
+ /// 鑾峰彇瑙掕壊鎷ユ湁鏁版嵁Id闆嗗悎
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysRole/ownData")]
+ public async Task<List<long>> OwnData([FromQuery] QueryRoleInput input)
+ {
+ return await _sysRoleDataScopeService.GetRoleDataScopeIdList(new List<long> { input.Id });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs
new file mode 100644
index 0000000..38e6629
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobInput.cs
@@ -0,0 +1,246 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Furion.TaskScheduler;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠诲姟璋冨害鍙傛暟
+ /// </summary>
+ public class JobPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ /// <example>5</example>
+ public int Interval { get; set; }
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ public SpareTimeTypes TimerType { get; set; }
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ /// </summary>
+ public string RequestParameters { get; set; }
+
+ /// <summary>
+ /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+ /// </summary>
+ public string Headers { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ public RequestTypeEnum RequestType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddJobInput
+ {
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ /// <example>5</example>
+ public int? Interval { get; set; }
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ public SpareTimeTypes TimerType { get; set; }
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ /// </summary>
+ public string RequestParameters { get; set; }
+
+ /// <summary>
+ /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+ /// </summary>
+ public string Headers { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ public RequestTypeEnum RequestType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class StopJobInput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string JobName { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteJobInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+
+ public class UpdateJobInput : BaseId
+ {
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ /// <example>dilon</example>
+ [Required, MaxLength(20)]
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ public SpareTimeExecuteTypes ExecuteType { get; set; } = SpareTimeExecuteTypes.Parallel;
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ /// <example>5</example>
+ public int? Interval { get; set; } = 5;
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ /// <example></example>
+ [MaxLength(200)]
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ public SpareTimeTypes TimerType { get; set; } = SpareTimeTypes.Interval;
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ [MaxLength(200)]
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ /// </summary>
+ public string RequestParameters { get; set; }
+
+ /// <summary>
+ /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+ /// </summary>
+ public string Headers { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ /// <example>2</example>
+ public RequestTypeEnum RequestType { get; set; } = RequestTypeEnum.Post;
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [MaxLength(100)]
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryJobInput : BaseId
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs
new file mode 100644
index 0000000..43c7bb8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/Dto/JobOutput.cs
@@ -0,0 +1,149 @@
+锘縰sing Admin.NET.Core;
+using Furion.TaskScheduler;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠诲姟淇℃伅---浠诲姟璇︽儏
+ /// </summary>
+ public class JobOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 宸叉墽琛屾鏁�
+ /// </summary>
+ public long? RunNumber { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ姸鎬�
+ /// </summary>
+ public SpareTimeStatus TimerStatus { get; set; } = SpareTimeStatus.Stopped;
+
+ /// <summary>
+ /// 寮傚父淇℃伅
+ /// </summary>
+ public string Exception { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ public int Interval { get; set; }
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ public SpareTimeTypes TimerType { get; set; }
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ /// <example>2</example>
+ public RequestTypeEnum RequestType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+
+ /// <summary>
+ /// 浠诲姟鏂规硶淇℃伅
+ /// </summary>
+ public class TaskMethodInfo
+ {
+ /// <summary>
+ /// 鏂规硶鍚�
+ /// </summary>
+ public string MethodName { get; set; }
+
+ /// <summary>
+ /// 鏂规硶鎵�灞炵被鐨凾ype瀵硅薄
+ /// </summary>
+ public Type DeclaringType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ public SpareTimeExecuteTypes ExecuteType { get; set; }
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ public int Interval { get; set; }
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ public SpareTimeTypes TimerType { get; set; }
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ /// <example>2</example>
+ public RequestTypeEnum RequestType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs
new file mode 100644
index 0000000..4912b4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/ISysTimerService.cs
@@ -0,0 +1,70 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysTimerService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddTimer(AddJobInput input);
+
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ void AddTimerJob(AddJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteTimer(DeleteJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<SysTimer> GetTimer([FromQuery] QueryJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<JobOutput>> GetTimerPageList([FromQuery] JobPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ void StartTimerJob(AddJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ void StopTimerJob(StopJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateTimber(UpdateJobInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ void StartTimerJob();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs
new file mode 100644
index 0000000..da76271
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/Timer/SysTimerService.cs
@@ -0,0 +1,323 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.RemoteRequest.Extensions;
+using Furion.TaskScheduler;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Reflection;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠诲姟璋冨害鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "Timer", Order = 100)]
+ [Route("api")]
+ public class SysTimerService : ISysTimerService, IDynamicApiController, IScoped
+ {
+ private readonly IRepository<SysTimer> _sysTimerRep; // 浠诲姟琛ㄤ粨鍌�
+ private readonly ISysCacheService _cache;
+
+ /// <summary>
+ ///鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysTimerRep"></param>
+ /// <param name="cache"></param>
+ public SysTimerService(IRepository<SysTimer> sysTimerRep, ISysCacheService cache)
+ {
+ _sysTimerRep = sysTimerRep;
+ _cache = cache;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇浠诲姟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysTimers/page")]
+ public async Task<PageResult<JobOutput>> GetTimerPageList([FromQuery] JobPageInput input)
+ {
+ var workers = SpareTime.GetWorkers().ToList();
+
+ var timers = await _sysTimerRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.JobName?.Trim()), u => EF.Functions.Like(u.JobName, $"%{input.JobName.Trim()}%"))
+ .ProjectToType<JobOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+ timers.Rows.ToList().ForEach(u =>
+ {
+ var timer = workers.FirstOrDefault(m => m.WorkerName == u.JobName);
+ if (timer != null)
+ {
+ u.TimerStatus = timer.Status;
+ u.RunNumber = timer.Tally;
+ u.Exception = JSON.Serialize(timer.Exception);
+ }
+ });
+ return timers;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysTimers/localJobList")]
+ public async Task<IEnumerable<TaskMethodInfo>> GetLocalJobList()
+ {
+ // 鑾峰彇鏈湴鎵�鏈変换鍔℃柟娉�
+ return await GetTaskMethods();
+ }
+
+ /// <summary>
+ /// 澧炲姞浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysTimers/add")]
+ public async Task AddTimer(AddJobInput input)
+ {
+ var isExist = await _sysTimerRep.AnyAsync(u => u.JobName == input.JobName, false);
+ if (isExist)
+ throw Oops.Oh(ErrorCode.D1100);
+
+ var timer = input.Adapt<SysTimer>();
+ await _sysTimerRep.InsertAsync(timer);
+
+ // 娣诲姞鍒颁换鍔¤皟搴﹂噷
+ AddTimerJob(input);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysTimers/delete")]
+ public async Task DeleteTimer(DeleteJobInput input)
+ {
+ var timer = await _sysTimerRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (timer == null)
+ throw Oops.Oh(ErrorCode.D1101);
+
+ await timer.DeleteAsync();
+
+ // 浠庤皟搴﹀櫒閲屽彇娑�
+ SpareTime.Cancel(timer.JobName);
+ }
+
+ /// <summary>
+ /// 淇敼浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysTimers/edit")]
+ public async Task UpdateTimber(UpdateJobInput input)
+ {
+ // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+ var isExist = await _sysTimerRep.AnyAsync(u => u.JobName == input.JobName && u.Id != input.Id, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D1100);
+
+ // 鍏堜粠璋冨害鍣ㄩ噷鍙栨秷
+ var oldTimer = await _sysTimerRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+ SpareTime.Cancel(oldTimer.JobName);
+
+ var timer = input.Adapt<SysTimer>();
+ await timer.UpdateAsync(ignoreNullValues: true);
+ var addJobInput = input.Adapt<AddJobInput>();
+ // 鍐嶆坊鍔犲埌浠诲姟璋冨害閲�
+ AddTimerJob(addJobInput);
+ }
+
+ /// <summary>
+ /// 鏌ョ湅浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysTimers/detail")]
+ public async Task<SysTimer> GetTimer([FromQuery] QueryJobInput input)
+ {
+ return await _sysTimerRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id);
+ }
+
+ /// <summary>
+ /// 鍋滄浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysTimers/stop")]
+ public void StopTimerJob(StopJobInput input)
+ {
+ SpareTime.Stop(input.JobName);
+ }
+
+ /// <summary>
+ /// 鍚姩浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysTimers/start")]
+ public void StartTimerJob(AddJobInput input)
+ {
+ var timer = SpareTime.GetWorkers().ToList().Find(u => u.WorkerName == input.JobName);
+ if (timer == null)
+ AddTimerJob(input);
+
+ // 濡傛灉 StartNow 涓� flase , 鎵ц AddTimerJob 骞朵笉浼氬惎鍔ㄤ换鍔�
+ SpareTime.Start(input.JobName);
+ }
+
+ /// <summary>
+ /// 鏂板瀹氭椂浠诲姟
+ /// </summary>
+ /// <param name="input"></param>
+ [NonAction]
+ public void AddTimerJob(AddJobInput input)
+ {
+ Func<SpareTimer, long, Task> action = null;
+
+ switch (input.RequestType)
+ {
+ // 鍒涘缓鏈湴鏂规硶濮旀墭
+ case RequestTypeEnum.Run:
+ {
+ // 鏌ヨ绗﹀悎鏉′欢鐨勪换鍔℃柟娉�
+ var taskMethod = GetTaskMethods()?.Result.FirstOrDefault(m => m.RequestUrl == input.RequestUrl);
+ if (taskMethod == null) break;
+
+ // 鍒涘缓浠诲姟瀵硅薄
+ var typeInstance = Activator.CreateInstance(taskMethod.DeclaringType);
+
+ // 鍒涘缓濮旀墭
+ action = (Func<SpareTimer, long, Task>)Delegate.CreateDelegate(typeof(Func<SpareTimer, long, Task>), typeInstance, taskMethod.MethodName);
+ break;
+ }
+ // 鍒涘缓缃戠粶浠诲姟濮旀墭
+ default:
+ {
+ action = async (_, _) =>
+ {
+ var requestUrl = input.RequestUrl.Trim();
+ requestUrl = requestUrl?.IndexOf("http") == 0 ? requestUrl : "http://" + requestUrl;
+ var requestParameters = input.RequestParameters;
+ var headersString = input.Headers;
+ var headers = string.IsNullOrEmpty(headersString)
+ ? null
+ : JSON.Deserialize<Dictionary<string, string>>(headersString);
+
+ switch (input.RequestType)
+ {
+ case RequestTypeEnum.Get:
+ await requestUrl.SetHeaders(headers).GetAsync();
+ break;
+
+ case RequestTypeEnum.Post:
+ await requestUrl.SetHeaders(headers).SetQueries(requestParameters).PostAsync();
+ break;
+
+ case RequestTypeEnum.Put:
+ await requestUrl.SetHeaders(headers).SetQueries(requestParameters).PutAsync();
+ break;
+
+ case RequestTypeEnum.Delete:
+ await requestUrl.SetHeaders(headers).DeleteAsync();
+ break;
+ }
+ };
+ break;
+ }
+ }
+
+ if (action == null) return;
+
+ // 缂撳瓨浠诲姟閰嶇疆鍙傛暟锛屼互渚涗换鍔¤繍琛屾椂璇诲彇
+ if (input.RequestType == RequestTypeEnum.Run)
+ {
+ var jobParametersName = $"{input.JobName}_Parameters";
+ var jobParameters = _cache.Exists(jobParametersName);
+ var requestParametersIsNull = string.IsNullOrEmpty(input.RequestParameters);
+
+ // 濡傛灉娌℃湁浠诲姟閰嶇疆鍗村張瀛樺湪缂撳瓨锛屽垯鍒犻櫎缂撳瓨
+ if (requestParametersIsNull && jobParameters)
+ _cache.RemoveAsync(jobParametersName);
+ else if (!requestParametersIsNull)
+ _cache.SetAsync(jobParametersName, JSON.Deserialize<Dictionary<string, string>>(input.RequestParameters));
+ }
+
+ // 鍒涘缓瀹氭椂浠诲姟
+ switch (input.TimerType)
+ {
+ case SpareTimeTypes.Interval:
+ if (input.DoOnce)
+ SpareTime.DoOnce((int)input.Interval * 1000, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+ else
+ SpareTime.Do((int)input.Interval * 1000, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+ break;
+
+ case SpareTimeTypes.Cron:
+ SpareTime.Do(input.Cron, action, input.JobName, input.Remark, input.StartNow, executeType: input.ExecuteType);
+ break;
+ }
+ }
+
+ /// <summary>
+ /// 鍚姩鑷惎鍔ㄤ换鍔�
+ /// </summary>
+ [NonAction]
+ public void StartTimerJob()
+ {
+ var sysTimerList = _sysTimerRep.DetachedEntities.Where(t => t.StartNow).ProjectToType<AddJobInput>().ToList();
+ sysTimerList.ForEach(AddTimerJob);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵�鏈夋湰鍦颁换鍔�
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<IEnumerable<TaskMethodInfo>> GetTaskMethods()
+ {
+ // 鏈夌紦瀛樺氨杩斿洖缂撳瓨
+ var taskMethods = await _cache.GetAsync<IEnumerable<TaskMethodInfo>>(CommonConst.CACHE_KEY_TIMER_JOB);
+ if (taskMethods != null) return taskMethods;
+
+ // 鑾峰彇鎵�鏈夋湰鍦颁换鍔℃柟娉曪紝蹇呴』鏈塻pareTimeAttribute鐗规��
+ taskMethods = App.EffectiveTypes
+ .Where(u => u.IsClass && !u.IsInterface && !u.IsAbstract && typeof(ISpareTimeWorker).IsAssignableFrom(u))
+ .SelectMany(u => u.GetMethods(BindingFlags.Public | BindingFlags.Instance)
+ .Where(m => m.IsDefined(typeof(SpareTimeAttribute), false) &&
+ m.GetParameters().Length == 2 &&
+ m.GetParameters()[0].ParameterType == typeof(SpareTimer) &&
+ m.GetParameters()[1].ParameterType == typeof(long) && (m.ReturnType == typeof(void) || m.ReturnType == typeof(Task)))
+ .Select(m =>
+ {
+ // 榛樿鑾峰彇绗竴鏉′换鍔$壒鎬�
+ var spareTimeAttribute = m.GetCustomAttribute<SpareTimeAttribute>();
+ return new TaskMethodInfo
+ {
+ JobName = spareTimeAttribute.WorkerName,
+ RequestUrl = $"{m.DeclaringType.Name}/{m.Name}",
+ Cron = spareTimeAttribute.CronExpression,
+ DoOnce = spareTimeAttribute.DoOnce,
+ ExecuteType = spareTimeAttribute.ExecuteType,
+ Interval = (int)spareTimeAttribute.Interval / 1000,
+ StartNow = spareTimeAttribute.StartNow,
+ RequestType = RequestTypeEnum.Run,
+ Remark = spareTimeAttribute.Description,
+ TimerType = string.IsNullOrEmpty(spareTimeAttribute.CronExpression) ? SpareTimeTypes.Interval : SpareTimeTypes.Cron,
+ MethodName = m.Name,
+ DeclaringType = m.DeclaringType
+ };
+ }));
+
+ await _cache.SetAsync(CommonConst.CACHE_KEY_TIMER_JOB, taskMethods);
+ return taskMethods;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs
new file mode 100644
index 0000000..7e4081a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/CurrentUserInfo.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core;
+using Furion;
+using Furion.FriendlyException;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 褰撳墠鐢ㄦ埛
+ /// </summary>
+ public static class CurrentUserInfo
+ {
+ /// <summary>
+ /// 鐢ㄦ埛id
+ /// </summary>
+ public static long UserId => App.User.FindFirst(ClaimConst.CLAINM_USERID) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : long.Parse(App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value);
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public static string Account => App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public static string Name => App.User.FindFirst(ClaimConst.CLAINM_NAME) == null ? throw Oops.Oh(SysConst.SYS_SESSION_OUT) : App.User.FindFirst(ClaimConst.CLAINM_NAME)?.Value;
+
+ /// <summary>
+ /// 鏄惁瓒呯骇绠$悊鍛�
+ /// </summary>
+ public static bool IsSuperAdmin => App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value == ((int)AdminType.SuperAdmin).ToString();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs
new file mode 100644
index 0000000..8034431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthToken.cs
@@ -0,0 +1,98 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ /// AuthToken鍙傛暟
+ /// </summary>
+ public class AuthToken
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string AccessToken { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public int ExpireIn { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string RefreshToken { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Uid { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string OpenId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string AccessCode { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string UnionId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Scope { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string TokenType { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string IdToken { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string MacAlgorithm { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string MacKey { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string OauthToken { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string OauthTokenSecret { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string UserId { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string ScreenName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public bool OauthCallbackConfirmed { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs
new file mode 100644
index 0000000..56b631d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/AuthUserInput.cs
@@ -0,0 +1,75 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// OAuth鐢ㄦ埛鍙傛暟
+ /// </summary>
+ public class AuthUserInput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string Uuid { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Username { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Nickname { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Blog { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Company { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Location { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Email { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Eemark { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public Gender Gender { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Source { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public AuthToken Token { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string RawUserInfo { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs
new file mode 100644
index 0000000..0237511
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserInput.cs
@@ -0,0 +1,455 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛鍙傛暟
+ /// </summary>
+ public class UserPageInput : PageInputBase, IXnInputBase
+ {
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ public string Password { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTime? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+ /// <summary>
+ /// 鎼滅储鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus SearchStatus { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantMenuIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantRoleIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantOrgIdList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UserSelectorInput
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string Name { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class CreateUserInput
+ {
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ public string Password { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTime? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddUserInput
+ {
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ [Required(ErrorMessage = "璐﹀彿鍚嶇О涓嶈兘涓虹┖")]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ [Required(ErrorMessage = "瀵嗙爜涓嶈兘涓虹┖")]
+ public string Password { get; set; }
+
+ /// <summary>
+ /// 纭瀵嗙爜
+ /// </summary>
+ [Required(ErrorMessage = "纭瀵嗙爜涓嶈兘涓虹┖"), Compare(nameof(Password), ErrorMessage = "涓ゆ瀵嗙爜涓嶄竴鑷�")]
+ public string Confirm { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTime? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public CommonStatus Status { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂翠骇绾�
+ /// </summary>
+ public long ProductionlineId { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class CheckUserDataInput
+ {
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteUserInput : BaseId
+ {
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateUserInput : BaseId
+ {
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ [Required(ErrorMessage = "璐﹀彿鍚嶇О涓嶈兘涓虹┖")]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ [Required(ErrorMessage = "濮撳悕涓嶈兘涓虹┖")]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public DateTime? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ public int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂翠骇绾�
+ /// </summary>
+ public long ProductionlineId { get; set; }
+ }
+
+ /// <summary>
+ /// 鏇存柊鐢ㄦ埛鍩烘湰淇℃伅
+ /// </summary>
+ public class UpdateUserBaseInfoInput : BaseId
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ [Required(ErrorMessage = "鏄电О涓嶈兘涓虹┖")]
+ public string NickName { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ [Required(ErrorMessage = "鎵嬫満鍙蜂笉鑳戒负绌�")]
+ public string Phone { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ [Required(ErrorMessage = "鐢靛瓙閭涓嶈兘涓虹┖")]
+ public string Email { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ [Required(ErrorMessage = "鎬у埆涓嶈兘涓虹┖")]
+ public int Sex { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ [Required(ErrorMessage = "鐢熸棩涓嶈兘涓虹┖")]
+ public DateTime? Birthday { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public string Tel { get; set; }
+ }
+
+ /// <summary>
+ /// 鏇存柊鐢ㄦ埛鎺堟潈鏁版嵁瑙掕壊鍜屾暟鎹寖鍥�
+ /// </summary>
+ public class UpdateUserRoleDataInput : BaseId, IXnInputBase
+ {
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput2 SysEmpParam { get; set; } = new EmpOutput2();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantMenuIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantRoleIdList { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<long> GrantOrgIdList { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateUserStatusInput : BaseId
+ {
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public CommonStatus Status { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryUserInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class ChangePasswordUserInput : BaseId
+ {
+ /// <summary>
+ /// 瀵嗙爜
+ /// </summary>
+ [Required(ErrorMessage = "鏃у瘑鐮佷笉鑳戒负绌�")]
+ public string Password { get; set; }
+
+ /// <summary>
+ /// 鏂板瘑鐮�
+ /// </summary>
+ [Required(ErrorMessage = "鏂板瘑鐮佷笉鑳戒负绌�")]
+ [StringLength(32, MinimumLength = 5, ErrorMessage = "瀵嗙爜闇�瑕佸ぇ浜�5涓瓧绗�")]
+ public string NewPassword { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UploadAvatarInput : BaseId
+ {
+ /// <summary>
+ /// 澶村儚鏂囦欢璺緞鏍囪瘑
+ /// </summary>
+ [Required(ErrorMessage = "澶村儚鏂囦欢璺緞鏍囪瘑涓嶈兘涓虹┖")]
+ public long Avatar { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs
new file mode 100644
index 0000000..927d82b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/Dto/UserOutput.cs
@@ -0,0 +1,109 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using NetTopologySuite.Index.Strtree;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛鍙傛暟
+ /// </summary>
+ public class UserOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public virtual string Id { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public virtual string Account { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ public virtual string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ public virtual string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ public virtual DateTimeOffset? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ public virtual int Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ public virtual string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ public virtual string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ public virtual string Tel { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ public virtual int Status { get; set; }
+
+ /// <summary>
+ /// 鍛樺伐淇℃伅
+ /// </summary>
+ public EmpOutput SysEmpInfo { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂翠骇绾�
+ /// </summary>
+ public long ProductionlineId { get; set; }
+ }
+
+ /// <summary>
+ /// 浜х嚎鍙傛暟
+ /// </summary>
+ public class LesWorkShopOutput
+ {
+ /// <summary>
+ /// 浜х嚎Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 浜х嚎鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 浜х嚎缂栫爜
+ /// </summary>
+ public string Code { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs
new file mode 100644
index 0000000..c9b4866
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserDataScopeService.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysUserDataScopeService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="orgIdList"></param>
+ /// <returns></returns>
+ Task DeleteUserDataScopeListByOrgIdList(List<long> orgIdList);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task DeleteUserDataScopeListByUserId(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserDataScopeIdList(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantData(UpdateUserRoleDataInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs
new file mode 100644
index 0000000..3c6875b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserRoleService.cs
@@ -0,0 +1,45 @@
+锘縩amespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysUserRoleService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ Task DeleteUserRoleListByRoleId(long roleId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task DeleteUserRoleListByUserId(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserRoleDataScopeIdList(long userId, long orgId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="checkRoleStatus"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserRoleIdList(long userId, bool checkRoleStatus = true);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantRole(UpdateUserRoleDataInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs
new file mode 100644
index 0000000..42e1129
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/ISysUserService.cs
@@ -0,0 +1,164 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public interface ISysUserService
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task AddUser(AddUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ChangeUserStatus(UpdateUserStatusInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task DeleteUser(DeleteUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<IActionResult> ExportUser();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<UserOutput> GetUser(long id);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<SysUser> GetUserById(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <returns></returns>
+ Task<List<long>> GetUserDataScopeIdList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserDataScopeIdList(long userId);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserOwnData([FromQuery] QueryUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<long>> GetUserOwnRole([FromQuery] QueryUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<List<UserOutput>> GetUserSelector([FromQuery] UserSelectorInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantUserData(UpdateUserRoleDataInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task GrantUserRole(UpdateUserRoleDataInput input);
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ Task<List<UserOutput>> GetSysUserList();
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ Task ImportUser(IFormFile file);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task<PageResult<UserOutput>> QueryUserPageList([FromQuery] UserPageInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task ResetUserPwd(QueryUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="authUser"></param>
+ /// <param name="sysUser"></param>
+ /// <returns></returns>
+ Task SaveAuthUserToUser(AuthUserInput authUser, CreateUserInput sysUser);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateAvatar(UploadAvatarInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateUser(UpdateUserInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateUserInfo(UpdateUserBaseInfoInput input);
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ Task UpdateUserPwd(ChangePasswordUserInput input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs
new file mode 100644
index 0000000..030a432
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserDataScopeService.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛鏁版嵁鑼冨洿鏈嶅姟
+ /// </summary>
+ public class SysUserDataScopeService : ISysUserDataScopeService, ITransient
+ {
+ private readonly IRepository<SysUserDataScope> _sysUserDataScopeRep; // 鐢ㄦ埛鏁版嵁鑼冨洿琛ㄤ粨鍌�
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysUserDataScopeRep"></param>
+ public SysUserDataScopeService(IRepository<SysUserDataScope> sysUserDataScopeRep)
+ {
+ _sysUserDataScopeRep = sysUserDataScopeRep;
+ }
+
+ /// <summary>
+ /// 鎺堟潈鐢ㄦ埛鏁版嵁
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task GrantData(UpdateUserRoleDataInput input)
+ {
+ var dataScopes = await _sysUserDataScopeRep.Where(u => u.SysUserId == input.Id).ToListAsync();
+ await _sysUserDataScopeRep.DeleteAsync(dataScopes);
+
+ var userDataScopes = input.GrantOrgIdList.Select(u => new SysUserDataScope
+ {
+ SysUserId = input.Id,
+ SysOrgId = u
+ }).ToList();
+ await _sysUserDataScopeRep.InsertAsync(userDataScopes);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鐨勬暟鎹寖鍥碔d闆嗗悎
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ public async Task<List<long>> GetUserDataScopeIdList(long userId)
+ {
+ return await _sysUserDataScopeRep.DetachedEntities
+ .Where(u => u.SysUserId == userId)
+ .Select(u => u.SysOrgId).ToListAsync();
+ }
+
+ /// <summary>
+ /// 鏍规嵁鏈烘瀯Id闆嗗悎鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ /// </summary>
+ /// <param name="orgIdList"></param>
+ /// <returns></returns>
+ public async Task DeleteUserDataScopeListByOrgIdList(List<long> orgIdList)
+ {
+ var dataScopes = await _sysUserDataScopeRep.Where(u => orgIdList.Contains(u.SysOrgId), false).ToListAsync();
+ await _sysUserDataScopeRep.DeleteAsync(dataScopes);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-鏁版嵁鑼冨洿鍏宠仈淇℃伅
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ public async Task DeleteUserDataScopeListByUserId(long userId)
+ {
+ var sudsList = await _sysUserDataScopeRep.AsQueryable(m => m.SysUserId == userId, false).ToListAsync();
+ await _sysUserDataScopeRep.DeleteAsync(sudsList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs
new file mode 100644
index 0000000..0fd3303
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserRoleService.cs
@@ -0,0 +1,104 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛瑙掕壊鏈嶅姟
+ /// </summary>
+ public class SysUserRoleService : ISysUserRoleService, ITransient
+ {
+ private readonly IRepository<SysUserRole> _sysUserRoleRep; // 鐢ㄦ埛鏉冮檺琛ㄤ粨鍌�
+
+ private readonly ISysRoleService _sysRoleService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysUserRoleRep"></param>
+ /// <param name="sysRoleService"></param>
+ public SysUserRoleService(IRepository<SysUserRole> sysUserRoleRep, ISysRoleService sysRoleService)
+ {
+ _sysUserRoleRep = sysUserRoleRep;
+ _sysRoleService = sysRoleService;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鐨勮鑹睮d闆嗗悎
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="checkRoleStatus"></param>
+ /// <returns></returns>
+ public async Task<List<long>> GetUserRoleIdList(long userId, bool checkRoleStatus = true)
+ {
+ return await _sysUserRoleRep
+ // 妫�鏌ole鐘舵�侊紝璺宠繃鍏ㄥ眬tenantId&delete杩囨护鍣紝瓒呯骇绠$悊鍛樹娇鐢�
+ .Where(!checkRoleStatus, u => u.SysRole.Status == CommonStatus.ENABLE && u.SysRole.IsDeleted == false, ignoreQueryFilters: true)
+ // 褰撲笉鏄秴绾х鐞嗗憳鐨勬椂鍊欐鏌ole鐘舵�佸拰鍏ㄥ眬tenantId&delete杩囨护鍣�
+ .Where(checkRoleStatus, u => u.SysRole.Status == CommonStatus.ENABLE)
+ .Where(u => u.SysUserId == userId)
+ .Select(u => u.SysRoleId)
+ .ToListAsync();
+ }
+
+ /// <summary>
+ /// 鎺堟潈鐢ㄦ埛瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [UnitOfWork]
+ public async Task GrantRole(UpdateUserRoleDataInput input)
+ {
+ var userRoles = await _sysUserRoleRep.Where(u => u.SysUserId == input.Id).ToListAsync();
+ await _sysUserRoleRep.DeleteAsync(userRoles);
+
+ var roles = input.GrantRoleIdList.Select(u => new SysUserRole
+ {
+ SysUserId = input.Id,
+ SysRoleId = u
+ }).ToList();
+ await _sysUserRoleRep.InsertAsync(roles);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鎵�鏈夎鑹茬殑鏁版嵁鑼冨洿锛堢粍缁囨満鏋処d闆嗗悎锛�
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ public async Task<List<long>> GetUserRoleDataScopeIdList(long userId, long orgId)
+ {
+ var roleIdList = await GetUserRoleIdList(userId);
+
+ // 鑾峰彇杩欎簺瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥�
+ if (roleIdList.Count > 0)
+ return await _sysRoleService.GetUserDataScopeIdList(roleIdList, orgId);
+
+ return roleIdList;
+ }
+
+ /// <summary>
+ /// 鏍规嵁瑙掕壊Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ /// </summary>
+ /// <param name="roleId"></param>
+ /// <returns></returns>
+ public async Task DeleteUserRoleListByRoleId(long roleId)
+ {
+ var userRoles = await _sysUserRoleRep.Where(u => u.SysRoleId == roleId).ToListAsync();
+ await _sysUserRoleRep.DeleteAsync(userRoles);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐢ㄦ埛Id鍒犻櫎瀵瑰簲鐨勭敤鎴�-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ public async Task DeleteUserRoleListByUserId(long userId)
+ {
+ var surList = await _sysUserRoleRep.AsQueryable(m => m.SysUserId == userId, false).ToListAsync();
+ await _sysUserRoleRep.DeleteAsync(surList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs
new file mode 100644
index 0000000..4e7309e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/System/User/SysUserService.cs
@@ -0,0 +1,496 @@
+using Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DataEncryption;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Magicodes.ExporterAndImporter.Excel;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐢ㄦ埛鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings(Name = "User", Order = 150)]
+ [Route("api")]
+ public class SysUserService : ISysUserService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysUser> _sysUserRep; // 鐢ㄦ埛琛ㄤ粨鍌�
+ //private readonly IRepository<LesProductionline> _lesProductionlineRep; // 浜х嚎琛ㄤ粨鍌�
+ private readonly ISysCacheService _sysCacheService;
+ private readonly ISysEmpService _sysEmpService;
+ private readonly ISysUserDataScopeService _sysUserDataScopeService;
+ private readonly ISysUserRoleService _sysUserRoleService;
+ private readonly ISysOrgService _sysOrgService;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysUserRep"></param>
+ /// <param name="lesProductionlineRep"></param>
+ /// <param name="sysCacheService"></param>
+ /// <param name="sysEmpService"></param>
+ /// <param name="sysUserDataScopeService"></param>
+ /// <param name="sysUserRoleService"></param>
+ /// <param name="sysOrgService"></param>
+ public SysUserService(IRepository<SysUser> sysUserRep,
+ //IRepository<LesProductionline> lesProductionlineRep,
+ ISysCacheService sysCacheService,
+ ISysEmpService sysEmpService,
+ ISysUserDataScopeService sysUserDataScopeService,
+ ISysUserRoleService sysUserRoleService,
+ ISysOrgService sysOrgService)
+ {
+ _sysUserRep = sysUserRep;
+ //_lesProductionlineRep = lesProductionlineRep;
+ _sysCacheService = sysCacheService;
+ _sysEmpService = sysEmpService;
+ _sysUserDataScopeService = sysUserDataScopeService;
+ _sysUserRoleService = sysUserRoleService;
+ _sysOrgService = sysOrgService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鐢ㄦ埛
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysUser/page")]
+ public async Task<PageResult<UserOutput>> QueryUserPageList([FromQuery] UserPageInput input)
+ {
+ var searchValue = input.SearchValue;
+ var pid = input.SysEmpParam.OrgId;
+
+ var sysEmpRep = Db.GetRepository<SysEmp>();
+ var sysOrgRep = Db.GetRepository<SysOrg>();
+ var dataScopes = await GetUserDataScopeIdList(CurrentUserInfo.UserId);
+ var users = await _sysUserRep.DetachedEntities
+ .Join(sysEmpRep.DetachedEntities, u => u.Id, e => e.Id, (u, e) => new { u, e })
+ .Join(sysOrgRep.DetachedEntities, n => n.e.OrgId, o => o.Id, (n, o) => new { n, o })
+ .Where(!string.IsNullOrEmpty(searchValue), x => (x.n.u.Account.Contains(input.SearchValue) ||
+ x.n.u.Name.Contains(input.SearchValue) ||
+ x.n.u.Phone.Contains(input.SearchValue)))
+ .Where(!string.IsNullOrEmpty(pid), x => (x.n.e.OrgId == long.Parse(pid) ||
+ x.o.Pids.Contains($"[{pid.Trim()}]")))
+ .Where(input.SearchStatus >= 0, x => x.n.u.Status == input.SearchStatus)
+ .Where(x => x.n.u.AdminType != AdminType.SuperAdmin)//鎺掗櫎瓒呯骇绠$悊鍛�
+ .Where(!CurrentUserInfo.IsSuperAdmin && dataScopes.Count > 0, x => dataScopes.Contains(x.n.e.OrgId))
+ .Select(u => u.n.u.Adapt<UserOutput>())
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+ foreach (var user in users.Rows)
+ {
+ user.SysEmpInfo = await _sysEmpService.GetEmpInfo(long.Parse(user.Id));
+ }
+ return users;
+ }
+
+ /// <summary>
+ /// 鑾峰彇浜х嚎璇︽儏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ //[HttpGet("sysUser/selectLesWorkShopType")]
+ //public async Task<List<LesWorkShopOutput>> selectLesWorkShopType()
+ //{
+ // return await _lesProductionlineRep.DetachedEntities.ProjectToType<LesWorkShopOutput>().ToListAsync();
+ //}
+
+ /// <summary>
+ /// 澧炲姞鐢ㄦ埛
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/add")]
+ public async Task AddUser(AddUserInput input)
+ {
+ // 鏁版嵁鑼冨洿妫�鏌�
+ CheckDataScope(input.SysEmpParam.OrgId);
+
+ var isExist = await _sysUserRep.AnyAsync(u => u.Account == input.Account && u.IsDeleted == false, false, true);
+ if (isExist) throw Oops.Oh(ErrorCode.D1003);
+
+ var user = input.Adapt<SysUser>();
+ user.Password = MD5Encryption.Encrypt(input.Password);
+ if (string.IsNullOrEmpty(user.Name))
+ user.Name = user.Account;
+ if (string.IsNullOrEmpty(user.NickName))
+ user.NickName = user.Account;
+ var newUser = await _sysUserRep.InsertNowAsync(user);
+ input.SysEmpParam.Id = newUser.Entity.Id.ToString();
+ // 澧炲姞鍛樺伐淇℃伅
+ await _sysEmpService.AddOrUpdate(input.SysEmpParam);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鐢ㄦ埛
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/delete")]
+ public async Task DeleteUser(DeleteUserInput input)
+ {
+ // 鏁版嵁鑼冨洿妫�鏌�
+ CheckDataScope(input.SysEmpParam.OrgId);
+
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id, false);
+ if (user == null)
+ throw Oops.Oh(ErrorCode.D1002);
+
+ if (user.AdminType == AdminType.SuperAdmin)
+ throw Oops.Oh(ErrorCode.D1014);
+
+ if (user.AdminType == AdminType.Admin)
+ throw Oops.Oh(ErrorCode.D1018);
+
+ if (user.Id == CurrentUserInfo.UserId)
+ throw Oops.Oh(ErrorCode.D1001);
+
+ // 鐩存帴鍒犻櫎鐢ㄦ埛
+ await user.DeleteAsync();
+
+ // 鍒犻櫎鍛樺伐鍙婇檮灞炴満鏋勮亴浣嶄俊鎭�
+ await _sysEmpService.DeleteEmpInfoByUserId(input.Id);//empId涓巙serId鐩稿悓
+
+ //鍒犻櫎璇ョ敤鎴峰搴旂殑鐢ㄦ埛-瑙掕壊琛ㄥ叧鑱斾俊鎭�
+ await _sysUserRoleService.DeleteUserRoleListByUserId(input.Id);
+
+ //鍒犻櫎璇ョ敤鎴峰搴旂殑鐢ㄦ埛-鏁版嵁鑼冨洿琛ㄥ叧鑱斾俊鎭�
+ await _sysUserDataScopeService.DeleteUserDataScopeListByUserId(input.Id);
+ }
+
+ /// <summary>
+ /// 鏇存柊鐢ㄦ埛
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/edit")]
+ public async Task UpdateUser(UpdateUserInput input)
+ {
+ // 鏁版嵁鑼冨洿妫�鏌�
+ CheckDataScope(input.SysEmpParam.OrgId);
+
+ // 鎺掗櫎鑷繁骞朵笖鍒ゆ柇涓庡叾浠栨槸鍚︾浉鍚�
+ var isExist = await _sysUserRep.AnyAsync(u => u.Account == input.Account && u.Id != input.Id, false);
+ if (isExist) throw Oops.Oh(ErrorCode.D1003);
+ var user = input.Adapt<SysUser>();
+ await user.UpdateExcludeAsync(new[] { nameof(SysUser.Password), nameof(SysUser.Status), nameof(SysUser.AdminType) }, true);
+ input.SysEmpParam.Id = user.Id.ToString();
+ // 鏇存柊鍛樺伐鍙婇檮灞炴満鏋勮亴浣嶄俊鎭�
+ await _sysEmpService.AddOrUpdate(input.SysEmpParam);
+ }
+
+ /// <summary>
+ /// 鏌ョ湅鐢ㄦ埛
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysUser/detail")]
+ public async Task<UserOutput> GetUser(long id)
+ {
+ var user = await _sysUserRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == id);
+ var userDto = user.Adapt<UserOutput>();
+ if (userDto != null)
+ {
+ userDto.SysEmpInfo = await _sysEmpService.GetEmpInfo(user.Id);
+ }
+ return userDto;
+ }
+
+ /// <summary>
+ /// 淇敼鐢ㄦ埛鐘舵��
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/changeStatus")]
+ public async Task ChangeUserStatus(UpdateUserStatusInput input)
+ {
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (user.AdminType == AdminType.SuperAdmin)
+ throw Oops.Oh(ErrorCode.D1015);
+
+ if (!Enum.IsDefined(typeof(CommonStatus), input.Status))
+ throw Oops.Oh(ErrorCode.D3005);
+ user.Status = input.Status;
+ }
+
+ /// <summary>
+ /// 鎺堟潈鐢ㄦ埛瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/grantRole")]
+ public async Task GrantUserRole(UpdateUserRoleDataInput input)
+ {
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (user.AdminType == AdminType.SuperAdmin)
+ throw Oops.Oh(ErrorCode.D1022);
+
+ if (user.AdminType == AdminType.Admin)
+ throw Oops.Oh(ErrorCode.D1008);
+
+ // 鏁版嵁鑼冨洿妫�鏌�
+ CheckDataScope(input.SysEmpParam.OrgId);
+ await _sysUserRoleService.GrantRole(input);
+
+ //鍒犻櫎鏉冮檺,閲嶆柊鍔犺浇
+ await _sysCacheService.RemovePermission(input.Id);
+ }
+
+ /// <summary>
+ /// 鎺堟潈鐢ㄦ埛鏁版嵁鑼冨洿
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/grantData")]
+ public async Task GrantUserData(UpdateUserRoleDataInput input)
+ {
+ // 娓呴櫎缂撳瓨
+ await _sysCacheService.RemoveAsync(CommonConst.CACHE_KEY_DATASCOPE + $"{input.Id}");
+
+ // 鏁版嵁鑼冨洿妫�鏌�
+ CheckDataScope(input.SysEmpParam.OrgId);
+ await _sysUserDataScopeService.GrantData(input);
+ }
+
+ /// <summary>
+ /// 鏇存柊鐢ㄦ埛淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/updateInfo")]
+ public async Task UpdateUserInfo(UpdateUserBaseInfoInput input)
+ {
+ var user = input.Adapt<SysUser>();
+ await user.UpdateExcludeAsync(new[] { nameof(SysUser.AdminType), nameof(SysUser.LastLoginIp), nameof(SysUser.LastLoginTime) });
+ }
+
+ /// <summary>
+ /// 淇敼鐢ㄦ埛瀵嗙爜
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/updatePwd")]
+ public async Task UpdateUserPwd(ChangePasswordUserInput input)
+ {
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (MD5Encryption.Encrypt(input.Password) != user.Password)
+ throw Oops.Oh(ErrorCode.D1004);
+ user.Password = MD5Encryption.Encrypt(input.NewPassword);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鎷ユ湁瑙掕壊
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysUser/ownRole")]
+ public async Task<List<long>> GetUserOwnRole([FromQuery] QueryUserInput input)
+ {
+ return await _sysUserRoleService.GetUserRoleIdList(input.Id);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鎷ユ湁鏁版嵁
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("sysUser/ownData")]
+ public async Task<List<long>> GetUserOwnData([FromQuery] QueryUserInput input)
+ {
+ return await _sysUserDataScopeService.GetUserDataScopeIdList(input.Id);
+ }
+
+ /// <summary>
+ /// 閲嶇疆鐢ㄦ埛瀵嗙爜
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/resetPwd")]
+ public async Task ResetUserPwd(QueryUserInput input)
+ {
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ user.Password = MD5Encryption.Encrypt(CommonConst.DEFAULT_PASSWORD);
+ }
+
+ /// <summary>
+ /// 淇敼鐢ㄦ埛澶村儚
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/updateAvatar")]
+ public async Task UpdateAvatar(UploadAvatarInput input)
+ {
+ var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ user.Avatar = input.Avatar.ToString();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛閫夋嫨鍣�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [AllowAnonymous] //鍏憡涓渶瑕佷娇鐢紝寮�鏀炬潈闄�
+ [HttpGet("sysUser/selector")]
+ public async Task<List<UserOutput>> GetUserSelector([FromQuery] UserSelectorInput input)
+ {
+ var name = !string.IsNullOrEmpty(input.Name?.Trim());
+ var result = await _sysUserRep.DetachedEntities
+ .Where(name, u => EF.Functions.Like(u.Name, $"%{input.Name.Trim()}%"))
+ .Where(u => u.Status != CommonStatus.DELETED)
+ .Where(u => u.AdminType != AdminType.SuperAdmin)
+ .ToListAsync();
+ return result.Adapt<List<UserOutput>>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysUser/userList")]
+ public async Task<List<UserOutput>> GetSysUserList()
+ {
+ var userOut = await _sysUserRep.DetachedEntities.ToListAsync();
+ return userOut.Adapt<List<UserOutput>>();
+ }
+
+ /// <summary>
+ /// 鐢ㄦ埛瀵煎嚭
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("sysUser/export")]
+ public async Task<IActionResult> ExportUser()
+ {
+ var users = await _sysUserRep.DetachedEntities.AsQueryable()
+ .ProjectToType<UserOutput>()
+ .ToListAsync();
+ var exporter = new ExcelExporter();
+ var result = await exporter.ExportAsByteArray(users);
+ var memoryStream = new MemoryStream(result);
+ return await Task.FromResult(new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
+ {
+ FileDownloadName = $"{DateTimeOffset.Now:yyyyMMdd_HHmmss}_user.xlsx"
+ });
+ }
+
+ /// <summary>
+ /// 鐢ㄦ埛瀵煎叆
+ /// </summary>
+ /// <param name="file"></param>
+ /// <returns></returns>
+ [HttpPost("sysUser/import")]
+ public async Task ImportUser(IFormFile file)
+ {
+ var path = Path.Combine(Path.GetTempPath(), $"{YitIdHelper.NextId()}.xlsx");
+ using (var stream = File.Create(path))
+ {
+ await file.CopyToAsync(stream);
+ }
+
+ //var rows = MiniExcel.Query(path); // 瑙f瀽
+ //foreach (var row in rows)
+ //{
+ // var a = row.A;
+ // var b = row.B;
+ // // 鍏ュ簱绛夋搷浣�
+
+ //}
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐢ㄦ埛Id鑾峰彇鐢ㄦ埛
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<SysUser> GetUserById(long userId)
+ {
+ return await _sysUserRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == userId);
+ }
+
+ /// <summary>
+ /// 灏哋Auth璐﹀彿杞崲鎴愯处鍙�
+ /// </summary>
+ /// <param name="authUser"></param>
+ /// <param name="sysUser"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task SaveAuthUserToUser(AuthUserInput authUser, CreateUserInput sysUser)
+ {
+ var user = sysUser.Adapt<SysUser>();
+ user.AdminType = AdminType.None; // 闈炵鐞嗗憳
+
+ // oauth璐﹀彿涓庣郴缁熻处鍙峰垽鏂�
+ var isExist = await _sysUserRep.DetachedEntities.AnyAsync(u => u.Account == authUser.Username);
+ user.Account = isExist ? authUser.Username + DateTime.Now.Ticks : authUser.Username;
+ user.Name = user.NickName = authUser.Nickname;
+ user.Email = authUser.Email;
+ user.Sex = authUser.Gender;
+ await user.InsertAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛夊苟缂撳瓨
+ /// </summary>
+ /// <param name="userId"></param>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetUserDataScopeIdList(long userId)
+ {
+ var dataScopes = await _sysCacheService.GetDataScope(userId); // 鍏堜粠缂撳瓨閲岄潰璇诲彇
+ if (dataScopes == null || dataScopes.Count < 1)
+ {
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var orgId = await _sysEmpService.GetEmpOrgId(userId);
+ // 鑾峰彇璇ョ敤鎴峰搴旂殑鏁版嵁鑼冨洿闆嗗悎
+ var userDataScopeIdListForUser = await _sysUserDataScopeService.GetUserDataScopeIdList(userId);
+ // 鑾峰彇璇ョ敤鎴风殑瑙掕壊瀵瑰簲鐨勬暟鎹寖鍥撮泦鍚�
+ var userDataScopeIdListForRole = await _sysUserRoleService.GetUserRoleDataScopeIdList(userId, orgId);
+ dataScopes = userDataScopeIdListForUser.Concat(userDataScopeIdListForRole).Distinct().ToList(); // 骞堕泦
+ }
+ else
+ {
+ dataScopes = await _sysOrgService.GetAllDataScopeIdList();
+ }
+ await _sysCacheService.SetDataScope(userId, dataScopes); // 缂撳瓨缁撴灉
+ }
+ return dataScopes;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛鏁版嵁鑼冨洿锛堟満鏋処d闆嗗悎锛�
+ /// </summary>
+ /// <returns></returns>
+ [NonAction]
+ public async Task<List<long>> GetUserDataScopeIdList()
+ {
+ var userId = CurrentUserInfo.UserId;
+ var dataScopes = await GetUserDataScopeIdList(userId);
+ return dataScopes;
+ }
+
+ /// <summary>
+ /// 妫�鏌ユ櫘閫氱敤鎴锋暟鎹寖鍥�
+ /// 褰撴湁鐢ㄦ埛鏈夊涓粍缁囨椂锛屽湪鐧诲綍鏃堕�夋嫨涓�涓粍缁囷紝鎵�浠ョ粍缁噄d锛坥rgId锛変粠鍓嶇浼犺繃鏉�
+ /// </summary>
+ /// <param name="orgId"></param>
+ /// <returns></returns>
+ private async void CheckDataScope(string orgId)
+ {
+ // 濡傛灉褰撳墠鐢ㄦ埛涓嶆槸瓒呯骇绠$悊鍛橈紝鍒欒繘琛屾暟鎹寖鍥存牎楠�
+ if (!CurrentUserInfo.IsSuperAdmin)
+ {
+ var dataScopes = await GetUserDataScopeIdList(CurrentUserInfo.UserId);
+ if (dataScopes == null || (orgId != null && !dataScopes.Any(u => u == long.Parse(orgId))))
+ throw Oops.Oh(ErrorCode.D1013);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs
new file mode 100644
index 0000000..fd68f06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentInput.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�
+ /// </summary>
+ public class TestStudentSearch : PageInputBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual List<string> BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class TestStudentSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual List<DateTime>? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class TestStudentInput
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ [Required(ErrorMessage = "瀛︾敓骞撮緞涓嶈兘涓虹┖")]
+ public virtual int Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ [Required(ErrorMessage = "鏄惁鍦ㄦ牎涓嶈兘涓虹┖")]
+ public virtual bool StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ [Required(ErrorMessage = "鎬у埆涓嶈兘涓虹┖")]
+ public virtual Admin.NET.Core.GenderChinese Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ [Required(ErrorMessage = "鍑虹敓鏃ユ湡涓嶈兘涓虹┖")]
+ public virtual DateTime BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ柊澧炲弬鏁�
+ /// </summary>
+ public class AddTestStudentInput : TestStudentInput
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteTestStudentInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateTestStudentInput : TestStudentInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeTestStudentInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs
new file mode 100644
index 0000000..71eb280
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Dto/TestStudentOutput.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ヨ緭鍑哄弬鏁�
+ /// </summary>
+ public class TestStudentOutput
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public int Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public bool StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public Admin.NET.Core.GenderChinese Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public DateTime BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public long? TeacherId { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs
new file mode 100644
index 0000000..284e77c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/ITestStudentService.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface ITestStudentService
+ {
+ Task<TestStudentOutput> Get([FromQuery] QueryeTestStudentInput input);
+ Task<List<TestStudentOutput>> List([FromQuery] TestStudentInput input);
+ Task<PageResult<TestStudentOutput>> Page([FromQuery] TestStudentSearch input);
+ Task<List<TestStudentOutput>> ListNonPageAsync([FromQuery] TestStudentSearchNonPage input);
+
+ Task Add(AddTestStudentInput input);
+ Task Update(UpdateTestStudentInput input);
+ Task Delete(DeleteTestStudentInput input);
+ Task<int> ImportExcelAsync(IFormFile file);
+ IActionResult DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs
new file mode 100644
index 0000000..3d96c44
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/Map/TestStudentMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class TestStudentMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddTestStudentInput, TestStudent>()
+ ;
+ config.ForType<UpdateTestStudentInput, TestStudent>()
+ ;
+ config.ForType<TestStudent, TestStudentOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs
new file mode 100644
index 0000000..f4e29c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent/TestStudentService.cs
@@ -0,0 +1,545 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�1-閭甸暱绁ユ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("TestDemo", Name = "TestStudent", Order = 100)]
+ [Route("api/[Controller]")]
+ public class TestStudentService : ITestStudentService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<TestStudent,MasterDbContextLocator> _testStudentRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public TestStudentService(
+ IRepository<TestStudent,MasterDbContextLocator> testStudentRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _testStudentRep = testStudentRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<TestStudentOutput>> Page([FromQuery] TestStudentSearch input)
+ {
+ var testStudents = await _testStudentRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .Where(input.Age != null, u => u.Age == input.Age)
+ .Where(input.StartName != null, u => u.StartName == input.StartName)
+ .Where(input.Gender != null, u => u.Gender == input.Gender)
+ .Where(input.BrithDate!=null, u => u.BrithDate>= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate<= Convert.ToDateTime(input.BrithDate[1]))
+ .Where(input.TeacherId != null, u => u.TeacherId == input.TeacherId)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<TestStudentSearch>(input))
+ .ProjectToType<TestStudentOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return testStudents;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃1-閭甸暱绁ュ垪琛�
+ /// </summary>
+ /// <param name="input">瀛︾敓淇℃伅琛�1-閭甸暱绁ユ煡璇㈠弬鏁�</param>
+ /// <returns>(瀛︾敓淇℃伅琛�1-閭甸暱绁�)瀹炰緥鍒楄〃</returns>
+ [Description("TestStudent/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<TestStudentOutput>> ListNonPageAsync([FromQuery] TestStudentSearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pAge = input.Age;
+ var pStartName = input.StartName;
+ var pGender = input.Gender;
+ var pBrithDate = input.BrithDate;
+ var pTeacherId = input.TeacherId;
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var testStudents = await _testStudentRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .Where(pAge != null, u => u.Age == pAge)
+ .Where(pStartName != null, u => u.StartName == pStartName)
+ .Where(pGender != null, u => u.Gender == pGender)
+ .Where(input.BrithDate!=null, u => u.BrithDate>= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate<= Convert.ToDateTime(input.BrithDate[1]))
+ .Where(pTeacherId != null, u => u.TeacherId == pTeacherId)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<TestStudentOutput>()
+ .ToListAsync();
+ return testStudents;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/detail")]
+ [HttpGet("detail")]
+ public async Task<TestStudentOutput> Get([FromQuery] QueryeTestStudentInput input)
+ {
+ return (await _testStudentRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudentOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓淇℃伅琛�1-閭甸暱绁ュ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/list")]
+ [HttpGet("list")]
+ public async Task<List<TestStudentOutput>> List([FromQuery] TestStudentInput input)
+ {
+ return await _testStudentRep.DetachedEntities.ProjectToType<TestStudentOutput>().ToListAsync();
+ }
+
+ #region 澧炪�佸垹銆佹敼
+
+ /// <summary>
+ /// 澧炲姞瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/add")]
+ [HttpPost("add")]
+ public async Task Add(AddTestStudentInput input)
+ {
+ var testStudent = input.Adapt<TestStudent>();
+ //楠岃瘉
+ await CheckExisit(testStudent);
+
+ testStudent.CreatedUserId = testStudent.UpdatedUserId = SysHelper.GetUserId();
+ testStudent.CreatedUserName = testStudent.UpdatedUserName = SysHelper.GetUserName();
+ testStudent.CreatedTime = testStudent.UpdatedTime = SysHelper.GetNowTime();
+ await _testStudentRep.InsertAsync(testStudent);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(DeleteTestStudentInput input)
+ {
+ var testStudent = await _testStudentRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _testStudentRep.DeleteAsync(testStudent);
+
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛︾敓淇℃伅琛�1-閭甸暱绁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent/edit")]
+ [HttpPost("edit")]
+ public async Task Update(UpdateTestStudentInput input)
+ {
+ var isExist = await _testStudentRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var testStudent = input.Adapt<TestStudent>();
+ //楠岃瘉
+ await CheckExisit(testStudent,true);
+
+ testStudent.UpdatedUserId = SysHelper.GetUserId();
+ testStudent.UpdatedUserName = SysHelper.GetUserName();
+ testStudent.UpdatedTime = SysHelper.GetNowTime();
+ await _testStudentRep.UpdateAsync(testStudent,ignoreNullValues:true);
+ }
+
+ #endregion
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�1-閭甸暱绁ュ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [Description("TestStudent/importExcel")]
+ [HttpPost("importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _testStudentRep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<TestStudent>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<TestStudent>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new TestStudent()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _Name = "";//瀛︾敓濮撳悕
+ var _Age = "";//瀛︾敓骞撮緞
+ var _StartName = "";//鏄惁鍦ㄦ牎
+ var _Gender = "";//鎬у埆
+ var _BrithDate = "";//鍑虹敓鏃ユ湡
+ var _TeacherId = "";//鍏宠仈鑰佸笀
+ var _Id = "";//Id涓婚敭
+ #endregion
+
+
+ #region 鍙栧��
+ _Name = row["瀛︾敓濮撳悕"]?.ToString() ;
+ _Age = row["瀛︾敓骞撮緞"]?.ToString() ;
+ _StartName = row["鏄惁鍦ㄦ牎"]?.ToString() ;
+ _Gender = row["鎬у埆"]?.ToString() ;
+ _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString() ;
+ _TeacherId = row["鍏宠仈鑰佸笀"]?.ToString() ;
+ _Id = row["Id涓婚敭"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+ if(!string.IsNullOrEmpty(_Name))
+ {
+ addItem.Name = (string)_Name;
+ }
+
+ if (string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_Age))
+ {
+ if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+ }
+ if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Age = outAge;
+ }
+
+ }
+
+ if (string.IsNullOrEmpty(_StartName))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_StartName))
+ {
+ if(!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ bool outStartName = _StartName.Equals("鏄�") ? true : false;
+ addItem.StartName = outStartName;
+ }
+ }
+
+
+ if (string.IsNullOrEmpty(_Gender))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_Gender))
+ {
+ Admin.NET.Core.GenderChinese enumGender = default(Admin.NET.Core.GenderChinese);
+
+ if(!Enum.TryParse<Admin.NET.Core.GenderChinese>(_Gender, out enumGender)&&!string.IsNullOrEmpty(_Gender))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ addItem.Gender = enumGender;
+ }
+
+ }
+
+ if (string.IsNullOrEmpty(_BrithDate))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍑虹敓鏃ユ湡]{_BrithDate}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_BrithDate))
+ {
+ addItem.BrithDate = Convert.ToDateTime(_BrithDate);
+ }
+ if(!string.IsNullOrEmpty(_TeacherId))
+ {
+ if (!long.TryParse(_TeacherId, out long outTeacherId)&&!string.IsNullOrEmpty(_TeacherId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉姝g‘锛�");
+ }
+ if (outTeacherId <= 0&&!string.IsNullOrEmpty(_TeacherId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.TeacherId = outTeacherId;
+ }
+
+ }
+
+ if (string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}涓嶈兘涓虹┖锛�");
+ }
+
+ if(!string.IsNullOrEmpty(_Id))
+ {
+ if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+ }
+ if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Id = outId;
+ }
+
+ }
+ #endregion
+
+
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�1-閭甸暱绁ョ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("TestStudent/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓淇℃伅琛�1-閭甸暱绁�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ #endregion
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( TestStudent input,bool isEdit=false)
+ {
+
+
+
+ bool isExist = false;
+ if (!isEdit)//鏂板
+ {
+ //鏁版嵁鏄惁瀛樺湪閲嶅
+ isExist = await _testStudentRep.AnyAsync(u =>
+ u.Name.Equals(input.Name)
+ &&u.Age.Equals(input.Age)
+ &&u.StartName.Equals(input.StartName)
+ &&u.Gender.Equals(input.Gender)
+ &&u.BrithDate.Equals(input.BrithDate)
+ &&u.TeacherId.Equals(input.TeacherId)
+ &&u.CreatedTime.Equals(input.CreatedTime)
+ &&u.UpdatedTime.Equals(input.UpdatedTime)
+ &&u.CreatedUserName.Equals(input.CreatedUserName)
+ &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+ ,false);
+ }
+ else//缂栬緫
+ {
+
+
+
+ //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ isExist = await _testStudentRep.AnyAsync(u =>
+ u.Id != input.Id
+ &&u.Name.Equals(input.Name)
+ &&u.Age.Equals(input.Age)
+ &&u.StartName.Equals(input.StartName)
+ &&u.Gender.Equals(input.Gender)
+ &&u.BrithDate.Equals(input.BrithDate)
+ &&u.TeacherId.Equals(input.TeacherId)
+ &&u.CreatedTime.Equals(input.CreatedTime)
+ &&u.UpdatedTime.Equals(input.UpdatedTime)
+ &&u.CreatedUserName.Equals(input.CreatedUserName)
+ &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+ ,false);
+ }
+
+
+
+ if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<TestStudent> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ if (inputs?.Count <= 0)
+ {
+ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ }
+ //鏁版嵁鏄惁閲嶅
+ var existExcelItem = inputs.GroupBy(g => new {
+ g.Name
+ ,g.Age
+ ,g.StartName
+ ,g.Gender
+ ,g.BrithDate
+ ,g.TeacherId
+ ,g.CreatedTime
+ ,g.UpdatedTime
+ ,g.CreatedUserName
+ ,g.UpdatedUserName
+ })
+ .Where(g => g.Count() > 1)
+ .Select(s => new {
+ s.Key.Name
+ ,s.Key.Age
+ ,s.Key.StartName
+ ,s.Key.Gender
+ ,s.Key.BrithDate
+ ,s.Key.TeacherId
+ ,s.Key.CreatedTime
+ ,s.Key.UpdatedTime
+ ,s.Key.CreatedUserName
+ ,s.Key.UpdatedUserName
+ }).FirstOrDefault();
+ if (existExcelItem != null)
+ {
+ var testStudent = existExcelItem.Adapt<TestStudent>();
+ var item= existExcelItem.Adapt<TestStudent>();
+ throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀛︾敓濮撳悕[{item.Name}],瀛︾敓骞撮緞[{item.Age}],鏄惁鍦ㄦ牎[{item.StartName}],鎬у埆[{item.Gender}],鍑虹敓鏃ユ湡[{item.BrithDate}],鍏宠仈鑰佸笀[{item.TeacherId}],鍒涘缓鏃堕棿[{item.CreatedTime}],鏇存柊鏃堕棿[{item.UpdatedTime}],鍒涘缓鑰呭悕绉癧{item.CreatedUserName}],淇敼鑰呭悕绉癧{item.UpdatedUserName}]宸插瓨鍦�");
+ }
+
+
+
+
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ var existDBItem = await _testStudentRep.DetachedEntities.FirstOrDefaultAsync(w=>
+ inputs.Select(s=>""
+ +s.Name
+ +s.Age
+ +s.StartName
+ +s.Gender
+ +s.BrithDate
+ +s.TeacherId
+ +s.CreatedTime
+ +s.UpdatedTime
+ +s.CreatedUserName
+ +s.UpdatedUserName
+ )
+ .Contains(""
+ +w.Name
+ +w.Age
+ +w.StartName
+ +w.Gender
+ +w.BrithDate
+ +w.TeacherId
+ +w.CreatedTime
+ +w.UpdatedTime
+ +w.CreatedUserName
+ +w.UpdatedUserName
+ ));
+ if (existDBItem != null)
+ {
+ var testStudent = existExcelItem.Adapt<TestStudent>();
+ var item= existExcelItem.Adapt<TestStudent>();
+ throw Oops.Oh($"绯荤粺涓�,瀛︾敓濮撳悕[{item.Name}],瀛︾敓骞撮緞[{item.Age}],鏄惁鍦ㄦ牎[{item.StartName}],鎬у埆[{item.Gender}],鍑虹敓鏃ユ湡[{item.BrithDate}],鍏宠仈鑰佸笀[{item.TeacherId}],鍒涘缓鏃堕棿[{item.CreatedTime}],鏇存柊鏃堕棿[{item.UpdatedTime}],鍒涘缓鑰呭悕绉癧{item.CreatedUserName}],淇敼鑰呭悕绉癧{item.UpdatedUserName}]宸插瓨鍦�");
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs
new file mode 100644
index 0000000..fec1529
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Input.cs
@@ -0,0 +1,214 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�
+ /// </summary>
+ public class TestStudent3Search : PageInputBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ public virtual decimal? HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual List<string> BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囦笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class TestStudent3SearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ public virtual decimal? HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual List<DateTime>? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍏ュ弬鏁�
+ /// </summary>
+ public class TestStudent3Input
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ [Required(ErrorMessage = "瀛︾敓濮撳悕涓嶈兘涓虹┖")]
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ public virtual decimal? HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨柊澧炲弬鏁�
+ /// </summary>
+ public class AddTestStudent3Input : TestStudent3Input
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteTestStudent3Input : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateTestStudent3Input : TestStudent3Input
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long? Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeTestStudent3Input : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs
new file mode 100644
index 0000000..636ba57
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Dto/TestStudent3Output.cs
@@ -0,0 +1,67 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囪緭鍑哄弬鏁�
+ /// </summary>
+ public class TestStudent3Output
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public int? Age { get; set; }
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ public decimal? HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public Admin.NET.Core.GenderChinese? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs
new file mode 100644
index 0000000..127b5f7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/ITestStudent3Service.cs
@@ -0,0 +1,19 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface ITestStudent3Service
+ {
+ Task<TestStudent3Output> Get([FromQuery] QueryeTestStudent3Input input);
+ Task<List<TestStudent3Output>> List([FromQuery] TestStudent3Input input);
+ Task<PageResult<TestStudent3Output>> Page([FromQuery] TestStudent3Search input);
+ Task<List<TestStudent3Output>> ListNonPageAsync([FromQuery] TestStudent3SearchNonPage input);
+
+
+ Task<IActionResult> ToExcelAsync([FromQuery] TestStudent3SearchNonPage input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs
new file mode 100644
index 0000000..08a1299
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/Map/TestStudent3Mapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class TestStudent3Mapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddTestStudent3Input, TestStudent3>()
+ ;
+ config.ForType<UpdateTestStudent3Input, TestStudent3>()
+ ;
+ config.ForType<TestStudent3, TestStudent3Output>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs
new file mode 100644
index 0000000..9220395
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent3/TestStudent3Service.cs
@@ -0,0 +1,527 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�3-鍒樻枃濂囨湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("TestDemo", Name = "TestStudent3", Order = 100)]
+ [Route("api/[Controller]")]
+ public class TestStudent3Service : ITestStudent3Service, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<TestStudent3, MasterDbContextLocator> _testStudent3Rep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public TestStudent3Service(
+ IRepository<TestStudent3, MasterDbContextLocator> testStudent3Rep
+ , IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ , IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ , ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _testStudent3Rep = testStudent3Rep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<TestStudent3Output>> Page([FromQuery] TestStudent3Search input)
+ {
+ var testStudent3s = await _testStudent3Rep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .Where(input.Age != null, u => u.Age == input.Age)
+ .Where(input.HasMoney != null, u => u.HasMoney == input.HasMoney)
+ .Where(input.StartName != null, u => u.StartName == input.StartName)
+ .Where(input.Gender != null, u => u.Gender == input.Gender)
+ .Where(input.BrithDate != null, u => u.BrithDate >= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate <= Convert.ToDateTime(input.BrithDate[1]))
+ .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<TestStudent3Search>(input))
+ .ProjectToType<TestStudent3Output>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return testStudent3s;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠鐢熶俊鎭〃3-鍒樻枃濂囧垪琛�
+ /// </summary>
+ /// <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+ /// <returns>(瀛︾敓淇℃伅琛�3-鍒樻枃濂�)瀹炰緥鍒楄〃</returns>
+ [Description("TestStudent3/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<TestStudent3Output>> ListNonPageAsync([FromQuery] TestStudent3SearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pAge = input.Age;
+ var pHasMoney = input.HasMoney;
+ var pStartName = input.StartName;
+ var pGender = input.Gender;
+ var pBrithDate = input.BrithDate;
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var testStudent3s = await _testStudent3Rep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .Where(pAge != null, u => u.Age == pAge)
+ .Where(pHasMoney != null, u => u.HasMoney == pHasMoney)
+ .Where(pStartName != null, u => u.StartName == pStartName)
+ .Where(pGender != null, u => u.Gender == pGender)
+ .Where(input.BrithDate != null, u => u.BrithDate >= Convert.ToDateTime(input.BrithDate[0]) && u.BrithDate <= Convert.ToDateTime(input.BrithDate[1]))
+ .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<TestStudent3Output>()
+ .ToListAsync();
+ return testStudent3s;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/add")]
+ [HttpPost("add")]
+ public async Task Add(AddTestStudent3Input input)
+ {
+ var testStudent3 = input.Adapt<TestStudent3>();
+ //楠岃瘉
+ await CheckExisit(testStudent3);
+
+ testStudent3.CreatedUserId = testStudent3.UpdatedUserId = SysHelper.GetUserId();
+ testStudent3.CreatedUserName = testStudent3.UpdatedUserName = SysHelper.GetUserName();
+ testStudent3.CreatedTime = testStudent3.UpdatedTime = SysHelper.GetNowTime();
+ await _testStudent3Rep.InsertAsync(testStudent3);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(DeleteTestStudent3Input input)
+ {
+ var testStudent3 = await _testStudent3Rep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _testStudent3Rep.DeleteAsync(testStudent3);
+
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/edit")]
+ [HttpPost("edit")]
+ public async Task Update(UpdateTestStudent3Input input)
+ {
+ var isExist = await _testStudent3Rep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var testStudent3 = input.Adapt<TestStudent3>();
+ //楠岃瘉
+ await CheckExisit(testStudent3, true);
+
+ testStudent3.UpdatedUserId = SysHelper.GetUserId();
+ testStudent3.UpdatedUserName = SysHelper.GetUserName();
+ testStudent3.UpdatedTime = SysHelper.GetNowTime();
+ await _testStudent3Rep.UpdateAsync(testStudent3, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/detail")]
+ [HttpGet("detail")]
+ public async Task<TestStudent3Output> Get([FromQuery] QueryeTestStudent3Input input)
+ {
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ return (await _testStudent3Rep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudent3Output>();
+ return null;
+ return null;
+ return null;
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓淇℃伅琛�3-鍒樻枃濂囧垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent3/list")]
+ [HttpGet("list")]
+ public async Task<List<TestStudent3Output>> List([FromQuery] TestStudent3Input input)
+ {
+ return await _testStudent3Rep.DetachedEntities.ProjectToType<TestStudent3Output>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆瀛︾敓淇℃伅琛�3-鍒樻枃濂囧姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList = await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _testStudent3Rep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<TestStudent3>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<TestStudent3>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new TestStudent3()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _Name = "";//瀛︾敓濮撳悕
+ var _Age = "";//瀛︾敓骞撮緞
+ var _HasMoney = "";//闆惰姳閽�
+ var _StartName = "";//鏄惁鍦ㄦ牎
+ var _Gender = "";//鎬у埆
+ var _BrithDate = "";//鍑虹敓鏃ユ湡
+ var _CreatedTime = "";//鍒涘缓鏃堕棿
+ var _UpdatedTime = "";//鏇存柊鏃堕棿
+ var _CreatedUserName = "";//鍒涘缓鑰呭悕绉�
+ var _UpdatedUserName = "";//淇敼鑰呭悕绉�
+ #endregion
+
+
+ #region 鍙栧��
+ _Name = row["瀛︾敓濮撳悕"]?.ToString();
+ _Age = row["瀛︾敓骞撮緞"]?.ToString();
+ _HasMoney = row["闆惰姳閽�"]?.ToString();
+ _StartName = row["鏄惁鍦ㄦ牎"]?.ToString();
+ _Gender = row["鎬у埆"]?.ToString();
+ _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString();
+ _CreatedTime = row["鍒涘缓鏃堕棿"]?.ToString();
+ _UpdatedTime = row["鏇存柊鏃堕棿"]?.ToString();
+ _CreatedUserName = row["鍒涘缓鑰呭悕绉�"]?.ToString();
+ _UpdatedUserName = row["淇敼鑰呭悕绉�"]?.ToString();
+ #endregion
+
+
+ #region 楠岃瘉
+
+ if (string.IsNullOrEmpty(_Name))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓濮撳悕]{_Name}涓嶈兘涓虹┖锛�");
+ }
+
+ if (!string.IsNullOrEmpty(_Name))
+ {
+ addItem.Name = (string)_Name;
+ }
+ if (!string.IsNullOrEmpty(_Age))
+ {
+ if (!int.TryParse(_Age, out int outAge) && !string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+ }
+ if (outAge <= 0 && !string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Age = outAge;
+ }
+
+ }
+ if (!string.IsNullOrEmpty(_HasMoney))
+ {
+ if (!decimal.TryParse(_HasMoney, out decimal outHasMoney) && !string.IsNullOrEmpty(_HasMoney))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾闆惰姳閽盷{_HasMoney}鍊间笉姝g‘锛�");
+ }
+ if (outHasMoney <= 0 && !string.IsNullOrEmpty(_HasMoney))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾闆惰姳閽盷{_HasMoney}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.HasMoney = outHasMoney;
+ }
+
+ }
+ if (!string.IsNullOrEmpty(_StartName))
+ {
+ if (!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ bool outStartName = _StartName.Equals("鏄�") ? true : false;
+ addItem.StartName = outStartName;
+ }
+ }
+
+ if (!string.IsNullOrEmpty(_Gender))
+ {
+ Admin.NET.Core.GenderChinese enumGender = default(Admin.NET.Core.GenderChinese);
+
+ if (!Enum.TryParse<Admin.NET.Core.GenderChinese>(_Gender, out enumGender) && !string.IsNullOrEmpty(_Gender))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ addItem.Gender = enumGender;
+ }
+
+ }
+ if (!string.IsNullOrEmpty(_BrithDate))
+ {
+ addItem.BrithDate = Convert.ToDateTime(_BrithDate);
+ }
+ if (!string.IsNullOrEmpty(_CreatedTime))
+ {
+ addItem.CreatedTime = Convert.ToDateTime(_CreatedTime);
+ }
+ if (!string.IsNullOrEmpty(_UpdatedTime))
+ {
+ addItem.UpdatedTime = Convert.ToDateTime(_UpdatedTime);
+ }
+ if (!string.IsNullOrEmpty(_CreatedUserName))
+ {
+ addItem.CreatedUserName = (string)_CreatedUserName;
+ }
+ if (!string.IsNullOrEmpty(_UpdatedUserName))
+ {
+ addItem.UpdatedUserName = (string)_UpdatedUserName;
+ }
+ #endregion
+
+
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓淇℃伅琛�3-鍒樻枃濂囩殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("TestStudent3/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent3{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓淇℃伅琛�3-鍒樻枃濂�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">瀛︾敓淇℃伅琛�3-鍒樻枃濂囨煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [Description("TestStudent3/toExcel")]
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] TestStudent3SearchNonPage input)
+ {
+ var testStudent3List = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(testStudent3List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestStudent3", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+
+
+
+
+
+
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ /// <returns></returns>
+ private async Task CheckExisit(TestStudent3 input, bool isEdit = false)
+ {
+
+
+
+ bool isExist = false;
+ if (!isEdit)//鏂板
+ {
+ //鏁版嵁鏄惁瀛樺湪閲嶅
+ isExist = await _testStudent3Rep.AnyAsync(u =>
+ u.Name.Equals(input.Name)
+ , false);
+ }
+ else//缂栬緫
+ {
+
+
+
+ //褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ isExist = await _testStudent3Rep.AnyAsync(u =>
+ u.Id != input.Id
+ && u.Name.Equals(input.Name)
+ , false);
+ }
+
+
+
+ if (isExist) throw Oops.Oh(ErrorCode.E0001);
+
+
+
+
+
+ }
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<TestStudent3> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ if (inputs?.Count <= 0)
+ {
+ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ }
+ //鏁版嵁鏄惁閲嶅
+ var existExcelItem = inputs.GroupBy(g => new
+ {
+ g.Name
+ })
+ .Where(g => g.Count() > 1)
+ .Select(s => new
+ {
+ s.Key.Name
+ }).FirstOrDefault();
+ if (existExcelItem != null)
+ {
+ var testStudent3 = existExcelItem.Adapt<TestStudent3>();
+ var item = existExcelItem.Adapt<TestStudent3>();
+ throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑,瀛︾敓濮撳悕[{item.Name}]宸插瓨鍦�");
+ }
+
+
+
+
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ var existDBItem = await _testStudent3Rep.DetachedEntities.FirstOrDefaultAsync(w =>
+ inputs.Select(s => ""
+ + s.Name
+ )
+ .Contains(""
+ + w.Name
+ ));
+ if (existDBItem != null)
+ {
+ var testStudent3 = existExcelItem.Adapt<TestStudent3>();
+ var item = existExcelItem.Adapt<TestStudent3>();
+ throw Oops.Oh($"绯荤粺涓�,瀛︾敓濮撳悕[{item.Name}]宸插瓨鍦�");
+ }
+
+
+ }
+
+
+ #region 澧炪�佸垹銆佹敼
+ #endregion
+
+ #region 瀵煎叆
+ #endregion
+
+ #region 瀵煎嚭
+ #endregion
+
+ #region 绉佹湁鏂规硶
+ #endregion
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs
new file mode 100644
index 0000000..f67a916
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Dto.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class TestStudent5Dto
+ {
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public int Age { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs
new file mode 100644
index 0000000..61df6de
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Input.cs
@@ -0,0 +1,153 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class TestStudent5Search : PageInputBase
+ {
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<string> CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<string> UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class TestStudent5SearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual List<DateTimeOffset>? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class TestStudent5Input
+ {
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public virtual int Age { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public virtual string UpdatedUserName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄦ柊澧炲弬鏁�
+ /// </summary>
+ public class AddTestStudent5Input : TestStudent5Input
+ {
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄥ垹闄ゅ弬鏁�
+ /// </summary>
+ public class DeleteTestStudent5Input : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄦ洿鏂板弬鏁�
+ /// </summary>
+ public class UpdateTestStudent5Input : TestStudent5Input
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄨ幏鍙栧崟涓弬鏁�
+ /// </summary>
+ public class QueryeTestStudent5Input : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs
new file mode 100644
index 0000000..be2f367
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Dto/TestStudent5Output.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class TestStudent5Output
+ {
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ public int Age { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ public string UpdatedUserName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs
new file mode 100644
index 0000000..9904552
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/ITestStudent5Service.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface ITestStudent5Service
+ {
+ Task Add(AddTestStudent5Input input);
+ Task Delete(DeleteTestStudent5Input input);
+ Task<TestStudent5Output> Get([FromQuery] QueryeTestStudent5Input input);
+ Task<List<TestStudent5Output>> List([FromQuery] TestStudent5Input input);
+ Task<PageResult<TestStudent5Output>> Page([FromQuery] TestStudent5Search input);
+ Task Update(UpdateTestStudent5Input input);
+
+ Task<List<TestStudent5Output>> ListNonPageAsync([FromQuery] TestStudent5SearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ IActionResult DownloadExcelTemplate(string version);
+
+ Task<IActionResult> ToExcelAsync([FromQuery] TestStudent5SearchNonPage input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs
new file mode 100644
index 0000000..74a4adb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/Map/TestStudent5Mapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class TestStudent5Mapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddTestStudent5Input, TestStudent5>()
+ ;
+ config.ForType<UpdateTestStudent5Input, TestStudent5>()
+ ;
+ config.ForType<TestStudent5, TestStudent5Output>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs
new file mode 100644
index 0000000..562d651
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestStudent5/TestStudent5Service.cs
@@ -0,0 +1,391 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("TestDemo", Name = "TestStudent5", Order = 100)]
+ [Route("api/[Controller]")]
+ public class TestStudent5Service : ITestStudent5Service, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<TestStudent5,MasterDbContextLocator> _testStudent5Rep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public TestStudent5Service(
+ IRepository<TestStudent5,MasterDbContextLocator> testStudent5Rep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _testStudent5Rep = testStudent5Rep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<TestStudent5Output>> Page([FromQuery] TestStudent5Search input)
+ {
+ var testStudent5s = await _testStudent5Rep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .Where(input.Age != null, u => u.Age == input.Age)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
+ .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
+ .OrderBy(PageInputOrder.OrderBuilder<TestStudent5Search>(input))
+ .ProjectToType<TestStudent5Output>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return testStudent5s;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡祴璇曞鐢熻〃鍒楄〃
+ /// </summary>
+ /// <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(娴嬭瘯瀛︾敓琛�)瀹炰緥鍒楄〃</returns>
+ [Description("TestStudent5/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<TestStudent5Output>> ListNonPageAsync([FromQuery] TestStudent5SearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var pAge = input.Age;
+ var pCreatedTime = input.CreatedTime;
+ var pUpdatedTime = input.UpdatedTime;
+ var pCreatedUserName = input.CreatedUserName?.Trim() ?? "";
+ var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? "";
+ var testStudent5s = await _testStudent5Rep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .Where(pAge != null, u => u.Age == pAge)
+ .Where(input.CreatedTime!=null, u => u.CreatedTime>= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
+ .Where(input.UpdatedTime!=null, u => u.UpdatedTime>= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
+ .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
+ .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<TestStudent5Output>()
+ .ToListAsync();
+ return testStudent5s;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/add")]
+ [HttpPost("add")]
+ public async Task Add(AddTestStudent5Input input)
+ {
+ var testStudent5 = input.Adapt<TestStudent5>();
+ //楠岃瘉
+ await CheckExisit(testStudent5);
+ await _testStudent5Rep.InsertAsync(testStudent5);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(DeleteTestStudent5Input input)
+ {
+ var testStudent5 = await _testStudent5Rep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _testStudent5Rep.DeleteAsync(testStudent5);
+ }
+
+ /// <summary>
+ /// 鏇存柊娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/edit")]
+ [HttpPost("edit")]
+ public async Task Update(UpdateTestStudent5Input input)
+ {
+ var isExist = await _testStudent5Rep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var testStudent5 = input.Adapt<TestStudent5>();
+ //楠岃瘉
+ await CheckExisit(testStudent5,true);
+ await _testStudent5Rep.UpdateAsync(testStudent5,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/detail")]
+ [HttpGet("detail")]
+ public async Task<TestStudent5Output> Get([FromQuery] QueryeTestStudent5Input input)
+ {
+ return (await _testStudent5Rep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestStudent5Output>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇娴嬭瘯瀛︾敓琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("TestStudent5/list")]
+ [HttpGet("list")]
+ public async Task<List<TestStudent5Output>> List([FromQuery] TestStudent5Input input)
+ {
+ return await _testStudent5Rep.DetachedEntities.ProjectToType<TestStudent5Output>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆娴嬭瘯瀛︾敓琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _testStudent5Rep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<TestStudent5>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<TestStudent5>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new TestStudent5()
+ {
+ CreatedTime = DateTime.Now,
+ CreatedUserId = CurrentUserInfo.UserId,
+ CreatedUserName = CurrentUserInfo.Name,
+ UpdatedTime = DateTime.Now,
+ UpdatedUserId = CurrentUserInfo.UserId,
+ UpdatedUserName = CurrentUserInfo.Name
+ };
+ #region 瀹氫箟鍙橀噺
+ var _Name = "";//濮撳悕
+ var _Age = "";//骞撮緞
+ #endregion
+
+
+ #region 鍙栧��
+ _Name = row["濮撳悕"]?.ToString() ;
+ _Age = row["骞撮緞"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+ if(!string.IsNullOrEmpty(_Name))
+ {
+ addItem.Name = (string)_Name;
+ }
+ if(!string.IsNullOrEmpty(_Age))
+ {
+ if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾骞撮緞]{_Age}鍊间笉姝g‘锛�");
+ }
+ if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Age = outAge;
+ }
+
+ }
+ #endregion
+
+
+ //楠岄噸
+ await CheckExisit(details, addItem,index);
+ details.Add(addItem);
+ }
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯瀛︾敓琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("TestStudent5/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\TestStudent5{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(娴嬭瘯瀛︾敓琛�).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">娴嬭瘯瀛︾敓琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [Description("TestStudent5/toExcel")]
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] TestStudent5SearchNonPage input)
+ {
+ var testStudent5List = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(testStudent5List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestStudent5", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+
+
+
+
+
+
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ /// <returns></returns>
+ private async Task CheckExisit( TestStudent5 input,bool isEdit=false,int index=0)
+ {
+
+
+
+ bool isExist = false;
+ if (!isEdit)//鏂板
+ {
+ //鏁版嵁鏄惁閲嶅
+ isExist = await _testStudent5Rep.AnyAsync(u =>
+ u.Name.Equals(input.Name)
+ &&u.Age.Equals(input.Age)
+ &&u.CreatedTime.Equals(input.CreatedTime)
+ &&u.UpdatedTime.Equals(input.UpdatedTime)
+ &&u.CreatedUserName.Equals(input.CreatedUserName)
+ &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+ ,false);
+ }
+ else//缂栬緫
+ {
+
+
+
+ //鏁版嵁鏄惁閲嶅
+ isExist = await _testStudent5Rep.AnyAsync(u =>
+ u.Id == input.Id
+ &&u.Age.Equals(input.Age)
+ &&u.CreatedTime.Equals(input.CreatedTime)
+ &&u.UpdatedTime.Equals(input.UpdatedTime)
+ &&u.CreatedUserName.Equals(input.CreatedUserName)
+ &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+ ,false);
+ }
+
+
+
+ if (index > 0)
+ {
+ if (isExist) throw Oops.Oh($"绗瑊index}琛屾暟鎹凡瀛樺湪");
+ }
+ else
+ {
+ if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+
+
+
+
+
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <param name="input"></param>
+ /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ private async Task CheckExisit(List<TestStudent5> inputs,TestStudent5 input, int index)
+ {
+
+ //瀵煎叆鐨勯泦鍚堟槸鍚﹀凡瀛樺湪鐩稿悓鏁版嵁
+ var isExist = inputs.Any(u =>
+ u.Name.Equals(input.Name)
+ &&u.Age.Equals(input.Age)
+ &&u.CreatedTime.Equals(input.CreatedTime)
+ &&u.UpdatedTime.Equals(input.UpdatedTime)
+ &&u.CreatedUserName.Equals(input.CreatedUserName)
+ &&u.UpdatedUserName.Equals(input.UpdatedUserName)
+ );
+ if(isExist) throw Oops.Oh($"绗瑊index}琛屾暟鎹凡瀛樺湪");
+ //鏁版嵁搴撴槸鍚﹀凡瀛樺湪鐩稿悓鏁�
+ await CheckExisit(input,false,index);
+
+
+ }
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs
new file mode 100644
index 0000000..9be56b5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherDto.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class TestTeacherDto
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs
new file mode 100644
index 0000000..b83e393
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherInput.cs
@@ -0,0 +1,66 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class TestTeacherSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class TestTeacherSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class TestTeacherInput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ }
+
+ public class AddTestTeacherInput : TestTeacherInput
+ {
+ }
+
+ public class DeleteTestTeacherInput : BaseId
+ {
+ }
+
+ public class UpdateTestTeacherInput : TestTeacherInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeTestTeacherInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs
new file mode 100644
index 0000000..fff233c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Dto/TestTeacherOutput.cs
@@ -0,0 +1,22 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class TestTeacherOutput
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs
new file mode 100644
index 0000000..465cd8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/ITestTeacherService.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface ITestTeacherService
+ {
+ Task Add(AddTestTeacherInput input);
+ Task Delete(DeleteTestTeacherInput input);
+ Task<TestTeacherOutput> Get([FromQuery] QueryeTestTeacherInput input);
+ Task<List<TestTeacherOutput>> List([FromQuery] TestTeacherInput input);
+ Task<PageResult<TestTeacherOutput>> Page([FromQuery] TestTeacherSearch input);
+ Task Update(UpdateTestTeacherInput input);
+
+ Task<List<TestTeacherOutput>> ListNonPageAsync([FromQuery] TestTeacherSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+
+ Task<IActionResult> ToExcelAsync([FromQuery] TestTeacherSearchNonPage input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs
new file mode 100644
index 0000000..b287d28
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/Map/TestTeacherMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class TestTeacherMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddTestTeacherInput, TestTeacher>()
+ ;
+ config.ForType<UpdateTestTeacherInput, TestTeacher>()
+ ;
+ config.ForType<TestTeacher, TestTeacherOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs
new file mode 100644
index 0000000..0467d2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/TestTeacher/TestTeacherService.cs
@@ -0,0 +1,241 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛ㄦ湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("娴嬭瘯鑰佸笀琛�", Name = "TestTeacher", Order = 100)]
+ [Route("api/[Controller]")]
+ public class TestTeacherService : ITestTeacherService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<TestTeacher,MasterDbContextLocator> _testTeacherRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public TestTeacherService(
+ IRepository<TestTeacher,MasterDbContextLocator> testTeacherRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _testTeacherRep = testTeacherRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<TestTeacherOutput>> Page([FromQuery] TestTeacherSearch input)
+ {
+ var testTeachers = await _testTeacherRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .OrderBy(PageInputOrder.OrderBuilder<TestTeacherSearch>(input))
+ .ProjectToType<TestTeacherOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return testTeachers;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡祴璇曡�佸笀琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(娴嬭瘯鑰佸笀琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<TestTeacherOutput>> ListNonPageAsync([FromQuery] TestTeacherSearchNonPage input)
+ {
+ var pName = input.Name?.Trim() ?? "";
+ var testTeachers = await _testTeacherRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<TestTeacherOutput>()
+ .ToListAsync();
+ return testTeachers;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddTestTeacherInput input)
+ {
+ var testTeacher = input.Adapt<TestTeacher>();
+ await _testTeacherRep.InsertAsync(testTeacher);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteTestTeacherInput input)
+ {
+ var testTeacher = await _testTeacherRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _testTeacherRep.DeleteAsync(testTeacher);
+ }
+
+ /// <summary>
+ /// 鏇存柊娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateTestTeacherInput input)
+ {
+ var isExist = await _testTeacherRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var testTeacher = input.Adapt<TestTeacher>();
+ await _testTeacherRep.UpdateAsync(testTeacher,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<TestTeacherOutput> Get([FromQuery] QueryeTestTeacherInput input)
+ {
+ return (await _testTeacherRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TestTeacherOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇娴嬭瘯鑰佸笀琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<TestTeacherOutput>> List([FromQuery] TestTeacherInput input)
+ {
+ return await _testTeacherRep.DetachedEntities.ProjectToType<TestTeacherOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆娴嬭瘯鑰佸笀琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<TestTeacherOutput> testTeacherList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, TestTeacherOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = testTeacherList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<TestTeacher>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<TestTeacher, TestTeacherOutput>(selectKeys);
+ List<TestTeacher> updates = new();
+ List<TestTeacher> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var testTeacherExistSubList = _testTeacherRep.Where(filter).Select(selector).ToList();
+ testTeacherExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var testTeacher in testTeacherList)
+ {
+ if (testTeacher.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(testTeacher.Adapt<TestTeacher>());
+ }
+ else
+ {
+ adds.Add(testTeacher.Adapt<TestTeacher>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _testTeacherRep.Update(x));
+
+
+ var maxId = _testTeacherRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<TestTeacher>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇娴嬭瘯鑰佸笀琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">娴嬭瘯鑰佸笀琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] TestTeacherSearchNonPage input)
+ {
+ var testTeacherList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(testTeacherList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("TestTeacher", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs
new file mode 100644
index 0000000..447a979
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentInput.cs
@@ -0,0 +1,177 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鏌ヨ鍙傛暟
+ /// </summary>
+ public class VStudentSearch : PageInputBase
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public virtual long? Id { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual int? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鑰佸笀鍚嶇О
+ /// </summary>
+ public virtual string teacherName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class VStudentSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public virtual long? Id { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual int? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鑰佸笀鍚嶇О
+ /// </summary>
+ public virtual string teacherName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘杈撳叆鍙傛暟
+ /// </summary>
+ public class VStudentInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public virtual long? Id { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public virtual string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public virtual int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public virtual bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public virtual int? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public virtual DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public virtual long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鑰佸笀鍚嶇О
+ /// </summary>
+ public virtual string teacherName { get; set; }
+
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鏂板鍙傛暟
+ /// </summary>
+ public class AddVStudentInput : VStudentInput
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鍒犻櫎鍙傛暟
+ /// </summary>
+ public class DeleteVStudentInput : BaseId
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鏇存柊鍙傛暟
+ /// </summary>
+ public class UpdateVStudentInput : VStudentInput
+ {
+ }
+
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鑾峰彇鍗曚釜鍙傛暟
+ /// </summary>
+ public class QueryeVStudentInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs
new file mode 100644
index 0000000..cbf3ab3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Dto/VStudentOutput.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘杈撳嚭鍙傛暟
+ /// </summary>
+ public class VStudentOutput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ public int? Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ public bool? StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public int? Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ public DateTime? BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ public long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鑰佸笀鍚嶇О
+ /// </summary>
+ public string teacherName { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs
new file mode 100644
index 0000000..eeabeb8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/IVStudentService.cs
@@ -0,0 +1,19 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IVStudentService
+ {
+ Task<VStudentOutput> Get([FromQuery] QueryeVStudentInput input);
+ Task<List<VStudentOutput>> List([FromQuery] VStudentInput input);
+ Task<PageResult<VStudentOutput>> Page([FromQuery] VStudentSearch input);
+ Task<List<VStudentOutput>> ListNonPageAsync([FromQuery] VStudentSearchNonPage input);
+
+
+ Task<IActionResult> ToExcelAsync([FromQuery] VStudentSearchNonPage input);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs
new file mode 100644
index 0000000..993cc71
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/Map/VStudentMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class VStudentMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddVStudentInput, VStudent>()
+ ;
+ config.ForType<UpdateVStudentInput, VStudent>()
+ ;
+ config.ForType<VStudent, VStudentOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs
new file mode 100644
index 0000000..ff7bc2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/TestDemo/VStudent/VStudentService.cs
@@ -0,0 +1,447 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("TestDemo", Name = "VStudent", Order = 100)]
+ [Route("api/[Controller]")]
+ public class VStudentService : IVStudentService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<VStudent,MasterDbContextLocator> _vStudentRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public VStudentService(
+ IRepository<VStudent,MasterDbContextLocator> vStudentRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _vStudentRep = vStudentRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ瀛︾敓瑙嗗浘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<VStudentOutput>> Page([FromQuery] VStudentSearch input)
+ {
+ var vStudents = await _vStudentRep.DetachedEntities
+ .Where(input.Id != null, u => u.Id == input.Id)
+ .Where(!string.IsNullOrEmpty(input.Name), u => u.Name == input.Name)
+ .Where(input.Age != null, u => u.Age == input.Age)
+ .Where(input.StartName != null, u => u.StartName == input.StartName)
+ .Where(input.Gender != null, u => u.Gender == input.Gender)
+ .Where(input.BrithDate != null, u => u.BrithDate == input.BrithDate)
+ .Where(input.TeacherId != null, u => u.TeacherId == input.TeacherId)
+ .Where(!string.IsNullOrEmpty(input.teacherName), u => u.teacherName == input.teacherName)
+ .OrderBy(PageInputOrder.OrderBuilder<VStudentSearch>(input))
+ .ProjectToType<VStudentOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return vStudents;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠鐢熻鍥惧垪琛�
+ /// </summary>
+ /// <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+ /// <returns>(瀛︾敓瑙嗗浘)瀹炰緥鍒楄〃</returns>
+ [Description("VStudent/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<VStudentOutput>> ListNonPageAsync([FromQuery] VStudentSearchNonPage input)
+ {
+ var pId = input.Id;
+ var pName = input.Name?.Trim() ?? "";
+ var pAge = input.Age;
+ var pStartName = input.StartName;
+ var pGender = input.Gender;
+ var pBrithDate = input.BrithDate;
+ var pTeacherId = input.TeacherId;
+ var pteacherName = input.teacherName?.Trim() ?? "";
+ var vStudents = await _vStudentRep.DetachedEntities
+ .Where(pId != null, u => u.Id == pId)
+ .Where(!string.IsNullOrEmpty(pName), u => u.Name == pName)
+ .Where(pAge != null, u => u.Age == pAge)
+ .Where(pStartName != null, u => u.StartName == pStartName)
+ .Where(pGender != null, u => u.Gender == pGender)
+ .Where(pBrithDate != null, u => u.BrithDate == pBrithDate)
+ .Where(pTeacherId != null, u => u.TeacherId == pTeacherId)
+ .Where(!string.IsNullOrEmpty(pteacherName), u => u.teacherName == pteacherName)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<VStudentOutput>()
+ .ToListAsync();
+ return vStudents;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞瀛︾敓瑙嗗浘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/add")]
+ [HttpPost("add")]
+ public async Task Add(AddVStudentInput input)
+ {
+ var vStudent = input.Adapt<VStudent>();
+ //楠岃瘉
+ await CheckExisit(vStudent);
+
+ vStudent.CreatedUserId = vStudent.UpdatedUserId = SysHelper.GetUserId();
+ vStudent.CreatedUserName = vStudent.UpdatedUserName = SysHelper.GetUserName();
+ vStudent.CreatedTime = vStudent.UpdatedTime = SysHelper.GetNowTime();
+ await _vStudentRep.InsertAsync(vStudent);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎瀛︾敓瑙嗗浘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(DeleteVStudentInput input)
+ {
+
+ }
+
+ /// <summary>
+ /// 鏇存柊瀛︾敓瑙嗗浘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/edit")]
+ [HttpPost("edit")]
+ public async Task Update(UpdateVStudentInput input)
+ {
+ var isExist = await _vStudentRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var vStudent = input.Adapt<VStudent>();
+ //楠岃瘉
+ await CheckExisit(vStudent,true);
+
+ vStudent.UpdatedUserId = SysHelper.GetUserId();
+ vStudent.UpdatedUserName = SysHelper.GetUserName();
+ vStudent.UpdatedTime = SysHelper.GetNowTime();
+ await _vStudentRep.UpdateAsync(vStudent,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓瑙嗗浘
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/detail")]
+ [HttpGet("detail")]
+ public async Task<VStudentOutput> Get([FromQuery] QueryeVStudentInput input)
+ {
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ return null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛︾敓瑙嗗浘鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("VStudent/list")]
+ [HttpGet("list")]
+ public async Task<List<VStudentOutput>> List([FromQuery] VStudentInput input)
+ {
+ return await _vStudentRep.DetachedEntities.ProjectToType<VStudentOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆瀛︾敓瑙嗗浘鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _vStudentRep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<VStudent>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<VStudent>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+
+ var addItem = new VStudent()
+ {
+ CreatedTime = SysHelper.GetNowTime(),
+ CreatedUserId = SysHelper.GetUserId(),
+ CreatedUserName = SysHelper.GetUserName(),
+ UpdatedTime = SysHelper.GetNowTime(),
+ UpdatedUserId = SysHelper.GetUserId(),
+ UpdatedUserName = SysHelper.GetUserName()
+ };
+ #region 瀹氫箟鍙橀噺
+ var _Id = "";//Id涓婚敭
+ var _Name = "";//瀛︾敓濮撳悕
+ var _Age = "";//瀛︾敓骞撮緞
+ var _StartName = "";//鏄惁鍦ㄦ牎
+ var _Gender = "";//鎬у埆
+ var _BrithDate = "";//鍑虹敓鏃ユ湡
+ var _TeacherId = "";//鍏宠仈鑰佸笀
+ var _teacherName = "";//鑰佸笀鍚嶇О
+ #endregion
+
+
+ #region 鍙栧��
+ _Id = row["Id涓婚敭"]?.ToString() ;
+ _Name = row["瀛︾敓濮撳悕"]?.ToString() ;
+ _Age = row["瀛︾敓骞撮緞"]?.ToString() ;
+ _StartName = row["鏄惁鍦ㄦ牎"]?.ToString() ;
+ _Gender = row["鎬у埆"]?.ToString() ;
+ _BrithDate = row["鍑虹敓鏃ユ湡"]?.ToString() ;
+ _TeacherId = row["鍏宠仈鑰佸笀"]?.ToString() ;
+ _teacherName = row["鑰佸笀鍚嶇О"]?.ToString() ;
+ #endregion
+
+
+ #region 楠岃瘉
+ if(!string.IsNullOrEmpty(_Id))
+ {
+ if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉姝g‘锛�");
+ }
+ if (outId <= 0&&!string.IsNullOrEmpty(_Id))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾Id涓婚敭]{_Id}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Id = outId;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_Name))
+ {
+ addItem.Name = (string)_Name;
+ }
+ if(!string.IsNullOrEmpty(_Age))
+ {
+ if (!int.TryParse(_Age, out int outAge)&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉姝g‘锛�");
+ }
+ if (outAge <= 0&&!string.IsNullOrEmpty(_Age))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾瀛︾敓骞撮緞]{_Age}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.Age = outAge;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_StartName))
+ {
+ if(!_StartName.Equals("鏄�") && !_StartName.Equals("鍚�"))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鏄惁鍦ㄦ牎]{_StartName}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ bool outStartName = _StartName.Equals("鏄�") ? true : false;
+ addItem.StartName = outStartName;
+ }
+ }
+
+ if(!string.IsNullOrEmpty(_Gender))
+ {
+ System.Int32 enumGender = default(System.Int32);
+
+ if(!Enum.TryParse<System.Int32>(_Gender, out enumGender)&&!string.IsNullOrEmpty(_Gender))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎬у埆]{_Gender}鍊间笉姝g‘锛�");
+ }
+ else
+ {
+ addItem.Gender = enumGender;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_BrithDate))
+ {
+ addItem.BrithDate = Convert.ToDateTime(Convert.ToDateTime(_BrithDate).ToShortDateString());
+ }
+ if(!string.IsNullOrEmpty(_TeacherId))
+ {
+ if (!long.TryParse(_TeacherId, out long outTeacherId)&&!string.IsNullOrEmpty(_TeacherId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉姝g‘锛�");
+ }
+ if (outTeacherId <= 0&&!string.IsNullOrEmpty(_TeacherId))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍏宠仈鑰佸笀]{_TeacherId}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.TeacherId = outTeacherId;
+ }
+
+ }
+ if(!string.IsNullOrEmpty(_teacherName))
+ {
+ addItem.teacherName = (string)_teacherName;
+ }
+ #endregion
+
+
+ //楠岄噸
+ await CheckExisit(details, addItem,index);
+ details.Add(addItem);
+ }
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇瀛︾敓瑙嗗浘鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("VStudent/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\VStudent{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(瀛︾敓瑙嗗浘).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁瀛︾敓瑙嗗浘鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">瀛︾敓瑙嗗浘鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [Description("VStudent/toExcel")]
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] VStudentSearchNonPage input)
+ {
+ var vStudentList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(vStudentList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("VStudent", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+
+
+
+
+
+
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ /// <returns></returns>
+ private async Task CheckExisit( VStudent input,bool isEdit=false,int index=0)
+ {
+
+
+
+
+
+
+
+
+
+ //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+
+
+
+
+
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鐨勬暟鎹泦
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <param name="input"></param>
+ /// <param name="index">瀵煎叆妯℃澘excel琛屽彿</param>
+ private async Task CheckExisit(List<VStudent> inputs,VStudent input, int index)
+ {
+
+ //娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+
+
+ }
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs
new file mode 100644
index 0000000..19601a7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveInput.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+ /// </summary>
+ public class AssembleInteractiveInput
+ {
+ /// <summary>
+ /// 涓嬬嚎鍙�
+ /// </summary>
+ public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ //public List<DestinationsInput> destinations { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AssembleDestinationsInput
+ {
+ /// <summary>
+ /// 浣嶇疆锛堣捣鐐癸級/ 浣嶇疆锛堢粓鐐癸級
+ /// </summary>
+ /// <example>001H01B0101</example>
+ public string locationName { get; set; }
+
+ /// <summary>
+ /// 鍙栬揣鍔ㄤ綔锛氬眰鏁� / 鏀捐揣鍔ㄤ綔锛氬眰鏁� 2
+ /// </summary>
+ /// <example>Load cargo:00</example>
+ public string operation { get; set; }
+ }
+
+ /// <summary>
+ /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+ /// </summary>
+ public class UpdateAssembleTaskInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 璁惧浠诲姟鐘舵��
+ /// </summary>
+ public TaskAssembleDodeviceStatusEnum TaskAssembleDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+ }
+
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ public class FinishAssembleTaskInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ }
+ /// <summary>
+ ///鏇存柊agv鎶ラ敊淇℃伅
+ /// </summary>
+ public class UpdateAgvWaring
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs
new file mode 100644
index 0000000..8e2519c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/AssembleInteractiveOutput.cs
@@ -0,0 +1,47 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+ /// </summary>
+ public class GetAssembleTaskOutput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+ /// <summary>
+ /// 浠诲姟浼樺厛绾у埆
+ /// </summary>
+ public int TaskLevel { get; set; }
+ /// <summary>
+ /// 宸烽亾/鎻愬崌鏈�
+ /// </summary>
+ public int Aisle { get; set; }
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+ }
+ /// <summary>
+ /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨刟gv鎶ヨ淇℃伅
+ /// </summary>
+ public class GetAgvWaring
+ {
+ /// <summary>
+ /// 宸烽亾/鎻愬崌鏈�
+ /// </summary>
+ public int Aisle { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs
new file mode 100644
index 0000000..0179a80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveInput.cs
@@ -0,0 +1,126 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒涘缓涓讳换鍔°�丄GV浠诲姟杈撳叆鍙傛暟
+ /// </summary>
+ public class InteractiveInput
+ {
+ /// <summary>
+ /// 涓嬬嚎鍙�
+ /// </summary>
+ public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+ /// <summary>
+ ///
+ /// </summary>
+ //public List<DestinationsInput> destinations { get; set; }
+ }
+
+ /// <summary>
+ /// 鏌ヨ鎵�鏈夌┖闂插簱浣嶈緭鍏ュ弬鏁�
+ /// </summary>
+ public class GetPlaceInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ }
+
+ /// <summary>
+ /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+ /// </summary>
+ public class UpdateTaskInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ //public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 璁惧浠诲姟鐘舵��
+ /// </summary>
+ public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ //public int Aisle { get; set; }
+
+ /// <summary>
+ /// 绉伴噸閲嶉噺
+ /// </summary>
+ public decimal weight { get; set; }
+ }
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ public class FinishTaskInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ }
+
+
+ /// <summary>
+ /// 鏇存柊浠诲姟杈撳叆鍙傛暟
+ /// </summary>
+ public class CreateRelocationInput
+ {
+ /// <summary>
+ /// 浠诲姟璧风偣
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ }
+
+ /// <summary>
+ /// 娣诲姞璁惧鎶ヨ淇℃伅杈撳叆鍙傛暟
+ /// </summary>
+ public class AddDeviceWaringInput
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public int WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public DateTimeOffset? EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public int RunningTime { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs
new file mode 100644
index 0000000..39376d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/Dto/InteractiveOutput.cs
@@ -0,0 +1,120 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏌ヨ鎵�鏈塛CS鍙互璇诲彇鐨勪换鍔¤緭鍑哄弬鏁�
+ /// </summary>
+ public class GetSendTaskOutput
+ {
+ /// <summary>
+ /// 浠诲姟璇︽儏
+ /// </summary>
+ public SendTaskDetailOutput taskDetail { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡璇︽儏
+ /// </summary>
+ public SendMaterialDetailOutput materialDetail { get; set; }
+ }
+
+ /// <summary>
+ /// 浠诲姟璇︽儏
+ /// </summary>
+ public class SendTaskDetailOutput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+ /// <summary>
+ /// 浠诲姟浼樺厛绾у埆
+ /// </summary>
+ public int TaskLevel { get; set; }
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+ /// <summary>
+ /// 浠诲姟鐨勮捣鐐�
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ public string ContainerCode { get; set; }
+ }
+
+ /// <summary>
+ /// 鐗╂枡璇︽儏
+ /// </summary>
+ public class SendMaterialDetailOutput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+ }
+
+ /// <summary>
+ ///鑾峰彇绌洪棽鐨勫簱浣�
+ /// </summary>
+ public class GetPlaceOutput
+ {
+ /// <summary>
+ /// 鍏ュ簱搴撲綅鐩爣鐐�
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 绉诲簱搴撲綅璧风偣
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏄惁瀛樺湪
+ /// </summary>
+ public bool TaskIsExist { get; set; } = true;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绉诲簱搴撲綅
+ /// </summary>
+ public class GetYiKuPlaceOutput
+ {
+ /// <summary>
+ /// 绉诲簱搴撲綅鐩爣鐐�
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs
new file mode 100644
index 0000000..5178d45
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WcsToWms/WareWcsToWmsService.cs
@@ -0,0 +1,1062 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎷涘晢LES WCS璋冪敤鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鎷涘晢LES WCS璋冪敤鏈嶅姟", Name = "WareWcsToWmsService", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WareWcsToWmsService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep;
+ private readonly IRepository<LesDeviceWaring, MasterDbContextLocator> _lesDeviceWaringRep;
+
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WareWcsToWmsService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep,
+ IRepository<LesDeviceWaring, MasterDbContextLocator> lesDeviceWaringRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _agvTaskRep = agvTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsContainerRep = wmsContainerRep;
+ _lesPackWarehouseRep = lesPackWarehouseRep;
+ _lesDeviceWaringRep = lesDeviceWaringRep;
+ }
+
+
+ /// <summary>
+ /// 瀹氭椂鏌ヨWCS鍙互涓嬪彂鐨勫嚭鍏ュ簱浠诲姟(10鏉�)
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetSendTask")]
+ [AllowAnonymous]
+ public async Task<List<SendTaskDetailOutput>> GetSendTask()
+ {
+ var outputList = new List<SendTaskDetailOutput>();
+ var alllist = await _wmsTaskRep.DetachedEntities
+ .Where(z => z.IsRead == true)
+ .Take(10)
+ .OrderByDescending(n => n.TaskLevel)
+ .OrderBy(p => p.CreatedTime).ToListAsync();
+ foreach (var item in alllist)
+ {
+ var sendTaskDetail = new SendTaskDetailOutput(); //浠诲姟璇︽儏
+ sendTaskDetail.TaskNo = item.TaskNo;
+ if (item.TaskType == TaskType.RUKU) sendTaskDetail.SourcePlace = item.ToPlace;
+ else sendTaskDetail.SourcePlace = item.SourcePlace;
+ sendTaskDetail.Aisle = item.Aisle;
+ sendTaskDetail.TaskType = item.TaskType;
+ sendTaskDetail.TaskLevel = item.TaskLevel;
+ sendTaskDetail.ContainerCode = item.ContainerCode;
+ sendTaskDetail.TaskStatus = item.TaskStatus;
+ outputList.Add(sendTaskDetail);
+
+ //item.IsRead=false;
+ //item.TaskStatus = TaskStatusEnum.DAIZHIXING;
+ //await _wmsTaskRep.UpdateAsync(item);
+ }
+ return outputList;
+ }
+
+
+ /// <summary>
+ /// 鏇存柊浠诲姟淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("UpdateTask")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task UpdateTask([FromBody] UpdateTaskInput input)
+ {
+ //鏍规嵁浠诲姟鍙锋煡璇换鍔′俊鎭�
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(z => z.TaskNo == input.TaskNo);
+ if (wmsTask == null) throw Oops.Oh(errorMessage: "浠诲姟涓嶅瓨鍦紒");
+ wmsTask.TaskDodeviceStatus = input.TaskDodeviceStatus;
+ wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+ wmsTask.IsRead = false;
+
+ WmsPlace wmsPlace = new WmsPlace();
+ //鍒ゆ柇鍏ュ簱杩樻槸鍑哄簱
+ if (wmsTask.TaskType == TaskType.RUKU)
+ {
+ //搴撲綅淇℃伅
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.ToPlace);
+ }
+ else if (wmsTask.TaskType == TaskType.CHUKU)
+ {
+ //搴撲綅淇℃伅
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(z => z.PlaceCode == wmsTask.SourcePlace);
+ }
+ if (wmsPlace == null) throw Oops.Oh(errorMessage: "搴撲綅涓嶅瓨鍦紒");
+
+ // 鏌ヨ鎵樼洏淇℃伅
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ if (wmsContainer == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦紒");
+
+ //鍏ュ簱绉伴噸
+ //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RKCZ)
+ //{
+ //}
+ //鍏ュ簱杈撻�佺嚎寮�濮�
+ //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX)
+ //{
+ //}
+ //鍏ュ簱杈撻�佺嚎缁撴潫
+ //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RSSX)
+ //{
+ //}
+ //鍏ュ簱RGV寮�濮�
+ //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RGV)
+ //{
+ //}
+ //鍏ュ簱RGV缁撴潫
+ //if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_RGV)
+ //{
+ //}
+ //鍏ュ簱寮�濮�
+ if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_DDJ)
+ {
+ // 鏇存柊搴撲綅鐘舵��
+ wmsPlace.PlaceStatus = PlaceStatus.DAIRU;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+ }
+ //鍏ュ簱瀹屾垚
+ if (wmsTask.TaskType == TaskType.RUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+ {
+ //棣栧厛鏇存柊浠诲姟鐘舵�佸畬鎴�
+ wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ //鏇存柊璁惧鐘舵��
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+
+ // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+ wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+ //搴撲綅淇℃伅
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+
+ // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+ wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ if (wmsTask.Description == "绌烘墭") wmsPlace.EmptyContainer = YesOrNot.Y;
+ else wmsPlace.EmptyContainer = YesOrNot.N;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+ var wmsContainerPlaceModel = new WmsContainerPlace()
+ {
+ PlaceId = wmsPlace.Id,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ ContainerPlaceStatus = CommonStatus.ENABLE
+ };
+ await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+ // 鏇存柊搴撳瓨
+ var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+ .Where(p => p.OrderNo == wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+ foreach (var item in wmsMaterialContainerList)
+ {
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+ && p.MaterialBatch == item.MaterialBatch);
+ if (wmsMaterialStock != null)
+ {
+ wmsMaterialStock.Source = RuKuSourceEnum.WULIAO;
+ wmsMaterialStock.AreaId = wmsPlace.AreaId;
+ wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+ wmsMaterialStock.StockNumber = item.BindQuantity;
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+ else
+ {
+ wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = item.MaterialNo,
+ MaterialType = MaterialType.CHENGPING,
+ MaterialName = item.MaterialName,
+ MaterialSpec = item.MaterialSpec,
+ MaterialBatch = item.MaterialBatch,
+ MaterialDensity = item.MaterialDensity,
+ StockNumber = item.BindQuantity,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.WULIAO
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ }
+ // 绌烘枡绠卞叆搴�
+ if (wmsTask.Description == "绌烘墭")
+ {
+ var wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = "N/A",
+ MaterialType = MaterialType.KONGTUO,
+ MaterialName = "N/A",
+ MaterialSpec = "N/A",
+ MaterialBatch = "N/A",
+ MaterialDensity = "N/A",
+ StockNumber = 0,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.KONGTUO
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ }
+ //鍑哄簱鍫嗗灈鏈哄畬鎴�,鎵ц搴撳瓨锛屽簱浣嶏紝鎵樼洏瀵瑰簲鍏崇郴杩涜鏇存柊
+ else if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+ {
+
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("搴撲綅寮傚父璐�!");
+
+ // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+ && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+
+ // 鏌ヨ搴撳瓨淇℃伅
+ var wmsMaterialStockList = await _wmsMaterialStockRep.DetachedEntities.Where(u => u.ContainerCode == wmsTask.ContainerCode).ToListAsync();
+ if (wmsMaterialStockList.Count <= 0) throw Oops.Oh("搴撳瓨鏁版嵁寮傚父!");
+
+ ////鏌ヨ鐗╂枡涓庢墭鐩樼粍鐩樺叧绯伙紙鐘舵�侊細姝e父锛�
+ var wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode
+ && p.BindStatus == CommonStatus.ENABLE && p.OrderNo == wmsTask.OrderNo).ToListAsync();
+ //鍒ゆ柇鐗╂枡鏄惁鏄┖鎵橈紝濡傛灉鏄┖鎵樼洿鎺ュ垹闄わ紝涓嶆槸绌烘墭鏌ヨ鐗╂枡
+ if (wmsMaterialContainerList.Count == 0)
+ {
+ //鍒犻櫎搴撳瓨
+ foreach (var item in wmsMaterialStockList)
+ {
+ await _wmsMaterialStockRep.DeleteAsync(item);
+ }
+ // 鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+ wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+
+ }
+ else
+ {
+ //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+ var orderNo = "N/A";
+ if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+ foreach (var item in wmsMaterialContainerList)
+ {
+ //鏇存柊鐘舵�佷负鈥濆垹闄も��
+ item.BindStatus = CommonStatus.DELETED;
+ await _wmsMaterialContainerRep.UpdateNowAsync(item);
+
+ //鏂板缁勭洏缁戝畾璁板綍 姝e父
+ var wmsMaterialContainer = item;
+ wmsMaterialContainer.Id = YitIdHelper.NextId();
+ wmsMaterialContainer.OrderNo = orderNo;
+ wmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+ await _wmsMaterialContainerRep.InsertNowAsync(wmsMaterialContainer);
+ //鏇存敼搴撳瓨鐨勫簱浣嶅彿涓篘/A
+ foreach (var stock in wmsMaterialStockList)
+ {
+ stock.PlaceCode = "N/A";
+ await _wmsMaterialStockRep.UpdateAsync(stock);
+ }
+ }
+ wmsContainer.ContainerStatus = ContainerStatus.FENJIAN;
+ }
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+ //鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+ wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ wmsPlace.Islock = YesOrNot.N;
+ wmsPlace.EmptyContainer = YesOrNot.N;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ //鏇存柊鍛ㄨ浆绠卞彿涓庡簱浣嶅叧绯讳负鈥滃垹闄も��
+ wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+ }
+ if (wmsTask.TaskType == TaskType.CHUKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_CSSX)
+ {
+ wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ }
+ else //绉诲簱
+ {
+ if (wmsTask.TaskType == TaskType.YIKU && input.TaskDodeviceStatus == TaskDodeviceStatusEnum.WC_DDJ)
+ {
+ wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ // 璧风偣搴撲綅淇℃伅
+ var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+ SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ await _wmsPlaceRep.UpdateAsync(SourcePlace);
+ //鐩爣搴撲綅淇℃伅
+ var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+ ToPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ await _wmsPlaceRep.UpdateAsync(ToPlace);
+ //鎵樼洏搴撲綅鍏崇郴琛�
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode
+ && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+ await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace()
+ {
+ PlaceId = ToPlace.Id,
+ PlaceCode = ToPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ ContainerPlaceStatus = CommonStatus.ENABLE
+ });
+ //搴撳瓨搴撲綅鏇存柊
+ var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync();
+ if (stockModel != null)
+ {
+ stockModel.PlaceCode = ToPlace.PlaceCode;
+ }
+ }
+ }
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("GetPlace")]
+ [AllowAnonymous]
+ public async Task<GetPlaceOutput> GetPlace([FromBody] GetPlaceInput input)
+ {
+ //1.鍒� 浼樺厛1鎺掑拰4鎺� 灞備紭鍏堜粠涓嬪埌涓�
+ //2.淇濈暀10涓唴渚хЩ搴撳簱浣�
+ var taskModel = await _wmsTaskRep.Where(p => p.TaskNo == input.TaskNo).FirstOrDefaultAsync();
+ if (taskModel == null) return new GetPlaceOutput() { TaskIsExist = false };
+ if (taskModel.TaskStatus == TaskStatusEnum.CHEHUI || taskModel.TaskStatus == TaskStatusEnum.QUXIAO || taskModel.TaskStatus == TaskStatusEnum.WANCHENG || taskModel.TaskStatus == TaskStatusEnum.ZANTING)
+ {
+ throw Oops.Oh("浠诲姟鐘舵�佹湭婊¤冻鑾峰彇鐨勫簱浣嶆潯浠�");
+ }
+ taskModel.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+ //瀹氫箟鍏ュ簱瀵硅薄,绉诲簱瀵硅薄
+ var ToPlace = new WmsPlace();
+ var SourcePlace = new WmsPlace();
+ var rowNumber = 0;
+
+ //鍏ュ簱娴佺▼
+ if (taskModel.TaskType == TaskType.RUKU)
+ {
+ //闃查噸鎿嶄綔
+ if (taskModel != null && !string.IsNullOrEmpty(taskModel.ToPlace))
+ {
+ ToPlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.PlaceCode == taskModel.ToPlace).FirstOrDefaultAsync();
+ if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle) || ToPlace.RowNo == GetFourRowByAisle(taskModel.Aisle))
+ {
+ if (ToPlace.RowNo == GetOneRowByAisle(taskModel.Aisle))
+ rowNumber = GetTwoRowByAisle(taskModel.Aisle);
+ else
+ rowNumber = GetThreeRowByAisle(taskModel.Aisle);
+ SourcePlace = await _wmsPlaceRep.Where(p => p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && p.Aisle == taskModel.Aisle && p.RowNo == rowNumber && p.ColumnNo == ToPlace.ColumnNo && p.LayerNo == ToPlace.LayerNo).FirstOrDefaultAsync();
+ if (SourcePlace != null && SourcePlace.PlaceStatus == PlaceStatus.CUNHUO)
+ return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+ }
+ return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+ }
+ //鑾峰彇绔嬩綋搴撳彲鐢ㄥ簱浣�
+ var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN
+ && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+ && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ProjectToType<WmsPlace>().ToListAsync();
+
+ //鑾峰彇褰撳墠绔嬩綋搴撻渶瑕佸嚭搴撳簱浣嶉泦鍚�
+ var placeCodeList = await _wmsTaskRep.DetachedEntities.Where(p => p.IsRead == true
+ && p.TaskType == TaskType.CHUKU && p.Aisle == taskModel.Aisle).Select(n => n.SourcePlace).ToListAsync();
+
+ var ckPlaceModelList = await _wmsPlaceRep.DetachedEntities.Where(z => placeCodeList.Contains(z.PlaceCode)
+ && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+ && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == taskModel.Aisle).ToListAsync();
+
+ //閰嶇疆鏂囦欢涓缃槸鍚﹀紑鍚寚瀹氬簱浣嶅叆搴撳拰绉诲簱鎿嶄綔
+ //if (Convert.ToBoolean(App.Configuration["YiKuTestPalce:IsStart"]))
+ //{
+ // var rukuPoint = App.Configuration["YiKuTestPalce:rukuPoint"].Split('.'); //鍏ュ簱璧风偣
+ // var yikuPoint = App.Configuration["YiKuTestPalce:yikuPoint"].Split('.'); //绉诲簱璧风偣
+ // ToPlace = placeList.Where(p => p.RowNo == Convert.ToInt32(rukuPoint[0])
+ // && p.ColumnNo == Convert.ToInt32(rukuPoint[1]) && p.LayerNo == Convert.ToInt32(rukuPoint[2])).FirstOrDefault();
+ // if (ToPlace != null)
+ // {
+ // ToPlace.PlaceStatus = PlaceStatus.DAIRU;
+ // await _wmsPlaceRep.UpdateAsync(ToPlace);
+ // taskModel.ToPlace = ToPlace.PlaceCode;
+ // taskModel.AreaName = ToPlace.WmsArea.AreaName;
+ // await _wmsTaskRep.UpdateAsync(taskModel);
+ // if (yikuPoint.Length > 1)
+ // {
+ // SourcePlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.RowNo == Convert.ToInt32(yikuPoint[0])
+ // && p.ColumnNo == Convert.ToInt32(yikuPoint[1]) && p.LayerNo == Convert.ToInt32(yikuPoint[2])
+ // && p.Aisle == taskModel.Aisle && p.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+ // && p.WmsArea.AreaType == AreaType.LITIKU
+ // );
+ // }
+ // return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+ // }
+ //}
+ var maxColumn = placeList.Max(selector: n => n.ColumnNo);
+ var maxLayerNo = 0;
+
+ //鍏堜互鍒椾负杩涜寰幆鍒ゆ柇
+ for (int j = 1; j <= maxColumn; j++)
+ {
+ //鑾峰彇璇ュ垪鐨勬渶澶у眰
+ if (placeList.Where(p => p.ColumnNo == j).Count() <= 1) continue;
+ maxLayerNo = placeList.Where(p => p.ColumnNo == j).Max(selector: n => n.LayerNo);
+ //寰幆姣忓垪姣忓眰鐨勪腑鍒�
+ //鍒嗛厤搴撲綅闇�瑕佽�冭檻澶栦晶鏄惁鏈夊嚭搴撲换鍔★紝鏈夌殑璇濆氨娌℃湁鎵ц
+ for (int f = 1; f <= maxLayerNo; f++)
+ {
+
+ var model = placeList.FirstOrDefault(p => p.RowNo == GetOneRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f);
+ var ckmodel = ckPlaceModelList.FirstOrDefault(p => p.RowNo == GetTwoRowByAisle(taskModel.Aisle) && p.ColumnNo == j && p.LayerNo == f);
+ if (model != null && ckmodel == null)
+ {
+ ToPlace = model;
+ break;
+ }
+ }
+ if (!string.IsNullOrEmpty(ToPlace.PlaceCode)) break;
+ }
+ if (string.IsNullOrEmpty(ToPlace.PlaceCode)) throw Oops.Oh("鏆傛棤鍙互搴撲綅!");
+
+ //杩涜搴撲綅鍜屼换鍔$殑鏇存柊
+ ToPlace.PlaceStatus = PlaceStatus.DAIRU;
+ await _wmsPlaceRep.UpdateAsync(ToPlace);
+ taskModel.ToPlace = ToPlace.PlaceCode;
+ taskModel.AreaName = ToPlace.WmsArea.AreaName;
+ await _wmsTaskRep.UpdateAsync(taskModel);
+ if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+ else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+ }
+ //鍑哄簱娴佺▼
+ if (taskModel.TaskType == TaskType.CHUKU)
+ {
+ //闇�瑕佸垽鏂笅搴撲綅鏄惁宸茬粡杩涜绉诲簱鎿嶄綔锛岄渶瑕侀�氳繃鎵樼洏缂栧彿杩涜閲嶆柊鏌ユ壘
+ var containerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(p => p.ContainerCode == taskModel.ContainerCode
+ && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (containerPlace != null && containerPlace.PlaceCode != taskModel.SourcePlace)
+ {
+ ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == containerPlace.PlaceCode);
+ taskModel.SourcePlace = containerPlace.PlaceCode;
+ }
+ else
+ {
+ ToPlace = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.PlaceCode == taskModel.SourcePlace);
+ }
+ //杩涜搴撲綅鍜屼换鍔$殑鏇存柊
+ ToPlace.PlaceStatus = PlaceStatus.DAICHU;
+ await _wmsPlaceRep.UpdateAsync(ToPlace);
+ taskModel.ToPlace = taskModel.Aisle.ToString();
+ await _wmsTaskRep.UpdateAsync(taskModel);
+ if (SourcePlace == null || string.IsNullOrEmpty(SourcePlace.PlaceCode)) return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode };
+ else return new GetPlaceOutput() { ToPlace = ToPlace.PlaceCode, SourcePlace = SourcePlace.PlaceCode };
+ }
+ else
+ {
+ throw Oops.Oh("浠诲姟寮傚父" + taskModel.TaskNo);
+ }
+ }
+
+
+ /// <summary>
+ /// 鍒涘缓绉诲簱浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("CreateYKTask")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task<GetYiKuPlaceOutput> CreateRelocation(CreateRelocationInput input)
+ {
+ var placeModel = await _wmsPlaceRep.Where(p => p.PlaceCode == input.SourcePlace).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+ if (placeModel == null) throw Oops.Oh("搴撲綅鏁版嵁寮傚父!");
+ placeModel.PlaceStatus = PlaceStatus.DAICHU;
+ await _wmsPlaceRep.UpdateAsync(placeModel);
+ //鏌ヨ缁勭洏鍗曟嵁
+ var containerPlaceModel = await _wmsContainerPlaceRep.Where(p => p.PlaceCode == input.SourcePlace && p.ContainerPlaceStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+ if (containerPlaceModel == null) throw Oops.Oh("绉诲簱搴撲綅鎵樼洏鏁版嵁寮傚父!");
+ var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == containerPlaceModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+ if (materialContainer == null) throw Oops.Oh("缁勭洏鏁版嵁寮傚父!");
+
+ //鑾峰彇绌洪棽搴撲綅闆嗗悎
+ var placeList = await _wmsPlaceRep.DetachedEntities.Where(z => z.PlaceStatus == PlaceStatus.KONGXIAN
+ && z.Islock == YesOrNot.N && z.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN
+ && z.WmsArea.AreaType == AreaType.LITIKU && z.Aisle == input.Aisle).ToListAsync();
+ if (placeList.Count == 0) throw Oops.Oh("鏃犲彲绉诲簱搴撲綅!");
+
+ //瀹氫箟鐩爣鐐�
+ var ToPlaceModel = new WmsPlace();
+ var rowNumber = 0;
+ //1.鎺ㄨ崘澶栦晶搴撲綅
+ var wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetFourRowByAisle(placeModel.Aisle))).ToList();
+ if (placeModel.Aisle == 11)
+ {
+ wcPlaceList = placeList.Where(p => (p.RowNo == GetOneRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).ToList();
+ }
+ //瀹氫箟鏈�浼樺簱浣嶉泦鍚�
+ var zyPlaceList = new List<WmsPlace>();
+ //寰幆鍒ゆ柇瀵瑰簲鐨�2,3鏄湁璐�
+ foreach (var item in wcPlaceList)
+ {
+ if (placeModel.Aisle == 11)
+ {
+ if (item.RowNo == GetOneRowByAisle(placeModel.Aisle))
+ {
+ zyPlaceList.Add(item);
+ }
+ if (item.RowNo == GetThreeRowByAisle(placeModel.Aisle))
+ {
+ rowNumber = GetTwoRowByAisle(placeModel.Aisle);
+ var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault();
+ if (dypalceModel != null)
+ zyPlaceList.Add(item);
+ }
+ }
+ else
+ {
+ if (item.RowNo == GetOneRowByAisle(placeModel.Aisle) || item.RowNo == GetFourRowByAisle(placeModel.Aisle))
+ {
+ if (item.RowNo == GetOneRowByAisle(placeModel.Aisle))
+ rowNumber = GetTwoRowByAisle(placeModel.Aisle);
+ else
+ rowNumber = GetThreeRowByAisle(placeModel.Aisle);
+ var dypalceModel = placeList.Where(p => p.RowNo == rowNumber && p.ColumnNo == item.ColumnNo && p.LayerNo == item.LayerNo).FirstOrDefault();
+ if (dypalceModel != null)
+ zyPlaceList.Add(item);
+ }
+ }
+ }
+ if (zyPlaceList.Count != 0)
+ {
+ //鑾峰彇璺緞鏈�鐭殑搴撲綅 浣跨敤浜屽垎娉�
+ var mindModel = zyPlaceList.Where(p => p.ColumnNo == placeModel.ColumnNo).FirstOrDefault();
+ var leftModel = zyPlaceList.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+ var rightModel = zyPlaceList.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault();
+
+ if (mindModel != null) ToPlaceModel = mindModel;
+ else if (leftModel == null) ToPlaceModel = rightModel;
+ else if (rightModel == null) ToPlaceModel = leftModel;
+ else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel;
+ else ToPlaceModel = leftModel;
+ }
+ if (string.IsNullOrEmpty(ToPlaceModel.PlaceCode))
+ {
+ //2.娆′紭搴撲綅闆嗗悎
+ //娆′紭2,3鎺掑簱浣�
+ var cyPlace = placeList.Where(p => (p.RowNo == GetTwoRowByAisle(placeModel.Aisle) || p.RowNo == GetThreeRowByAisle(placeModel.Aisle))).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList();
+ if (placeModel.Aisle == 11)
+ {
+ cyPlace = placeList.Where(p => p.RowNo == GetTwoRowByAisle(placeModel.Aisle)).OrderByDescending(p => p.ColumnNo).OrderBy(p => p.LayerNo).ToList();
+ }
+ if (cyPlace.Count > 0)
+ {
+ //鑾峰彇璺緞鏈�鐭殑搴撲綅 浣跨敤浜屽垎娉�
+ var mindModel = cyPlace.Where(p => p.ColumnNo == placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+ var leftModel = cyPlace.Where(p => p.ColumnNo < placeModel.ColumnNo).OrderByDescending(p => p.ColumnNo).FirstOrDefault();
+ var rightModel = cyPlace.Where(p => p.ColumnNo > placeModel.ColumnNo).OrderBy(p => p.ColumnNo).FirstOrDefault();
+
+ if (mindModel != null) ToPlaceModel = mindModel;
+ else if (leftModel == null) ToPlaceModel = rightModel;
+ else if (rightModel == null) ToPlaceModel = leftModel;
+ else if ((placeModel.ColumnNo - leftModel.ColumnNo) > (rightModel.ColumnNo - placeModel.ColumnNo)) ToPlaceModel = rightModel;
+ else ToPlaceModel = leftModel;
+ }
+ }
+ ToPlaceModel.PlaceStatus = PlaceStatus.DAIRU;
+ await _wmsPlaceRep.UpdateAsync(ToPlaceModel);
+
+ //鍒涘缓绉诲簱浠诲姟
+ var newWmsTask = new WmsTask()
+ {
+ //TaskNo = _commonOrderServiceRep.GetFYKOrderNo(),
+ TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.YIKU,
+ TaskLevel = 5,
+ TaskStatus = TaskStatusEnum.WEIZHIXING,
+ OrderNo = materialContainer.OrderNo,
+ OrderDetailsId = materialContainer.OrderDetailsId,
+ ContainerCode = materialContainer.ContainerCode,
+ SourcePlace = placeModel.PlaceCode,
+ ToPlace = ToPlaceModel.PlaceCode,
+ AreaName = placeModel.WmsArea.AreaName,
+ IsRead = true, //WCS鏄惁鍙互璇诲彇
+ SendTimes = 1, //鍙戦�佹鏁�
+ Aisle = placeModel.Aisle,
+ Dodevicetype = DodeviceType.AGV,
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX,
+ };
+ await _wmsTaskRep.InsertAsync(newWmsTask);
+
+ return new GetYiKuPlaceOutput()
+ {
+ ToPlace = ToPlaceModel.PlaceCode,
+ TaskNo = newWmsTask.TaskNo,
+ };
+ }
+
+
+ ///// <summary>
+ ///// 寮哄埗瀹屾垚
+ ///// </summary>
+ ///// <returns></returns>
+ //[HttpPost("Finish")]
+ //[UnitOfWork]
+ //[AllowAnonymous]
+ //public async Task Finish([FromBody] FinishTaskInput input)
+ //{
+ // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo);
+ // if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+ // if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("浠诲姟宸插畬鎴愶紝寮哄埗瀹屾垚澶辫触锛�");
+ // var statusList = new List<TaskStatusEnum> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG };
+ // if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("鍙湁鏈墽琛屽拰鎵ц涓殑浠诲姟鎵嶈兘寮哄埗瀹屾垚锛�");
+
+ // if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+ // {
+ // var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+ // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+ // //鏌ヨ搴撲綅
+ // var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace
+ // && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+ // // 鏌ヨ鎵樼洏
+ // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ // if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+ // // 鏇存柊浠诲姟鐘舵��
+ // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ // wmsTask.IsRead = false;
+ // await _wmsTaskRep.UpdateAsync(wmsTask);
+
+ // // 鏇存柊鍗曟嵁鏄庣粏鐘舵�佷负瀹屾垚銆佹洿鏂版墭鐩樼紪鍙枫�佹洿鏂板簱浣嶇紪鍙�
+ // var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().FirstOrDefaultAsync();
+ // if (wmsOrderDetails != null)
+ // {
+ // wmsOrderDetails.ContainerCode = wmsTask.ContainerCode;
+ // wmsOrderDetails.PlaceCode = wmsPlace.PlaceCode;
+ // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WANCHENG;
+ // await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+ // }
+ // // 鍗曟嵁鏄庣粏瀹屾垚鎬绘暟
+ // var orderDetailsCount = (await _wmsOrderDetailsRep.DetachedEntities
+ // .Where(z => z.OrderId == wmsOrderDetails.WareOrder.Id && z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).ToListAsync()).Count;
+
+ // if (orderDetailsCount == wmsOrderDetails.WareOrder.OrderQuantityTotal)
+ // {
+ // wmsOrderDetails.WareOrder.OrderStatus = OrderStatusEnum.WANCHENG;
+ // await _wmsOrderRep.UpdateAsync(wmsOrderDetails.WareOrder);
+ // }
+
+ // // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+ // wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ // await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+ // wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+ // await _wmsContainerRep.UpdateAsync(wmsContainer);
+
+ // // 鐗╂枡涓庢墭鐩樺叧绯�
+ // var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode
+ // && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE);
+
+ // // 鎵樼洏涓庡簱浣嶅叧绯�
+ // var wmsContainerPlace = new WmsContainerPlace()
+ // {
+ // PlaceId = wmsPlace.Id,
+ // PlaceCode = wmsPlace.PlaceCode,
+ // ContainerId = wmsContainer.Id,
+ // ContainerCode = wmsContainer.ContainerCode,
+ // ContainerPlaceStatus = CommonStatus.ENABLE
+ // };
+ // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlace);
+
+ // // 娣诲姞搴撳瓨
+ // var StockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode
+ // && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync();
+ // if (StockModel != null)
+ // {
+ // StockModel.MaterialDensity = wmsOrderDetails.MaterialDensity;
+ // StockModel.PlaceCode = wmsTask.ToPlace;
+ // StockModel.AreaId = wmsPlace.AreaId;
+ // StockModel.StockNumber = wmsOrderDetails.OrderQuantity;
+ // await _wmsMaterialStockRep.UpdateAsync(StockModel);
+ // }
+ // else
+ // {
+ // StockModel = new WmsMaterialStock()
+ // {
+ // MaterialNo = wmsOrderDetails.MaterialNo,
+ // MaterialType = wmsOrderDetails.MaterialType,
+ // MaterialName = "N/A",
+ // Long = wmsOrderDetails.Long,
+ // Wide = wmsOrderDetails.Wide,
+ // High = wmsOrderDetails.High,
+ // MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High,
+ // MaterialBatch = wmsOrderDetails.Batch,
+ // MaterialDensity = wmsOrderDetails.MaterialDensity,
+ // //InspectionMethod = item.WmsMaterial.InspectionMethod,
+ // //UnitType = item.WmsMaterial.UnitType,
+ // //UnitNo = item.WmsMaterial.UnitNo,
+ // StockNumber = wmsOrderDetails.OrderQuantity,
+ // PlaceCode = wmsTask.ToPlace,
+ // ContainerId = wmsContainer.Id,
+ // ContainerCode = wmsContainer.ContainerCode,
+ // AreaId = wmsPlace.AreaId,
+ // };
+ // await _wmsMaterialStockRep.InsertAsync(StockModel);
+ // }
+ // }
+ // else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+ // {
+ // var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+ // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+ // // 鏌ヨ鎵樼洏淇℃伅
+ // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ // if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+ // // 鏌ヨ搴撲綅淇℃伅
+ // var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+ // if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ // // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+ // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+ // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ // if (wmsContainerPlace != null)
+ // {
+ // // 绂佺敤鎵樼洏搴撲綅鍏崇郴
+ // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+ // }
+ // // 鏍规嵁浠诲姟琛ㄤ腑鐨勫崟鎹槑缁咺d鏌ヨ鍗曟嵁鏄庣粏淇℃伅
+ // var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId);
+
+ // wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+ // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.ZX_RGV;
+ // wmsTask.IsRead = false;
+ // await _wmsTaskRep.UpdateAsync(wmsTask);
+
+
+ // // 鏌ヨ鏄惁宸插瓨鍦ㄧ墿鏂欎笌鎵樼洏鍏崇郴
+ // var wmsMaterialContainer = await _wmsMaterialContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode
+ // && z.MaterialNo == wmsOrderDetails.MaterialNo && z.BindStatus == CommonStatus.ENABLE);
+ // //鍏ュ簱鏃剁粍鐩樹俊鎭�昏緫鍒犻櫎
+ // if (wmsMaterialContainer != null)
+ // {
+ // wmsMaterialContainer.BindStatus = CommonStatus.DELETED;
+ // await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainer);
+ // //鏂板鍑哄簱缁戝畾璁板綍 姝e父
+ // var enable = new WmsMaterialContainer()
+ // {
+ // ContainerId = wmsContainer.Id,
+ // ContainerCode = wmsContainer.ContainerCode,
+ // MaterialId = YitIdHelper.NextId(), //绯荤粺鐢熸垚鐨処d
+ // MaterialName = "N/A",
+ // MaterialNo = wmsMaterialContainer.MaterialNo,
+ // MaterialBatch = wmsMaterialContainer.MaterialBatch,
+ // MaterialDensity = wmsMaterialContainer.MaterialDensity,
+ // MaterialSpec = wmsOrderDetails.Long + "*" + wmsOrderDetails.Wide + "*" + wmsOrderDetails.High,
+ // BindQuantity = 1, //涓�涓簱浣嶅彧鏈変竴涓墿鏂�
+ // OrderNo = wmsMaterialContainer.OrderNo,
+ // OrderDetailsId = wmsMaterialContainer.OrderDetailsId,
+ // BindStatus = CommonStatus.ENABLE
+ // };
+ // await _wmsMaterialContainerRep.InsertAsync(enable);
+ // }
+ // //鏇存柊搴撳瓨
+ // var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == wmsTask.SourcePlace
+ // && p.MaterialNo == wmsOrderDetails.MaterialNo && p.MaterialBatch == wmsOrderDetails.Batch).FirstOrDefaultAsync();
+ // if (stockModel != null)
+ // {
+ // await _wmsMaterialStockRep.DeleteAsync(stockModel);
+ // }
+ // // 鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+ // wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ // await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // //鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+ // wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ // await _wmsContainerRep.UpdateAsync(wmsContainer);
+ // }
+ // else //绉诲簱浠诲姟
+ // {
+ // var taskStatusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.ZX_DDJ, TaskDodeviceStatusEnum.WC_DDJ };
+ // if (!taskStatusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛�,鍫嗗灈鏈哄畬鎴愭墠鑳藉己鍒跺畬鎴愶紒");
+ // // 鏌ヨ鎵樼洏
+ // var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ // if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+ // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ // wmsTask.IsRead = false;
+ // // 璧风偣搴撲綅淇℃伅
+ // var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+ // SourcePlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ // await _wmsPlaceRep.UpdateAsync(SourcePlace);
+ // //鐩爣搴撲綅淇℃伅
+ // var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+ // ToPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ // await _wmsPlaceRep.UpdateAsync(ToPlace);
+ // //鎵樼洏搴撲綅鍏崇郴琛�
+ // var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == SourcePlace.Id && z.PlaceCode == SourcePlace.PlaceCode
+ // && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ // wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ // await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+ // await _wmsContainerPlaceRep.InsertAsync(new WmsContainerPlace()
+ // {
+ // PlaceId = ToPlace.Id,
+ // PlaceCode = ToPlace.PlaceCode,
+ // ContainerId = wmsContainer.Id,
+ // ContainerCode = wmsContainer.ContainerCode,
+ // ContainerPlaceStatus = CommonStatus.ENABLE
+ // });
+ // //搴撳瓨搴撲綅鏇存柊
+ // var stockModel = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.PlaceCode == SourcePlace.PlaceCode).FirstOrDefaultAsync();
+ // if (stockModel != null)
+ // {
+ // stockModel.PlaceCode = ToPlace.PlaceCode;
+ // }
+ // }
+ //}
+
+
+ /// <summary>
+ /// 鍙栨秷浠诲姟
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("CancelTask")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task CancelTask([FromBody] FinishTaskInput input)
+ {
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.TaskNo == input.TaskNo);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+ if (wmsTask.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("浠诲姟宸插畬鎴愶紝鍙栨秷澶辫触锛�");
+ if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+ {
+ //var statusList = new List<TaskDodeviceStatusEnum> {TaskDodeviceStatusEnum.ZX_RSSX, TaskDodeviceStatusEnum.WC_RSSX,TaskDodeviceStatusEnum.WZX };
+ //if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍏ュ簱杈撻�佺嚎鎵ц,鍏ュ簱杈撻�佺嚎瀹屾垚鎴栬�呰澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+ //鏇存柊鍗曟嵁鏄庣粏鐘舵�佷负鏈墽琛屻�佹洿鏂版墭鐩樼紪鍙枫�佹洿鏂板簱浣嶇紪鍙�
+ var wmsOrderDetails = await _wmsOrderDetailsRep.Where(z => z.Id == wmsTask.OrderDetailsId).ProjectToType<WmsOrderDetails>().FirstOrDefaultAsync();
+ if (wmsOrderDetails != null)
+ {
+ wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING;
+ await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+ }
+ //鏌ヨ搴撲綅
+ var wmsPlace = await _wmsPlaceRep.DetachedEntities.Where(u => u.PlaceCode == wmsTask.ToPlace && u.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ProjectToType<WmsPlace>().FirstOrDefaultAsync();
+ if (wmsPlace != null)
+ {
+ // 鏇存柊搴撲綅鐘舵�佷负绌洪棽
+ wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+ }
+ var materialContainer = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsTask.ContainerCode && p.BindStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+ if (materialContainer != null)
+ {
+ await _wmsMaterialContainerRep.DeleteNowAsync(materialContainer);
+ }
+ // 鏌ヨ鎵樼洏
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ if (wmsContainer != null)
+ {
+ wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+ // 鏇存柊浠诲姟鐘舵��
+ wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+ wmsTask.IsRead = false;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX;
+ wmsTask.ToPlace = "";
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+ else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+ {
+ var statusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ };
+ if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛屼腑鎴栬澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+ // 鏌ヨ搴撲綅淇℃伅
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ // 鏌ヨ鎵樼洏涓庡簱浣嶇殑鍏崇郴
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+ && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+ // 鏍规嵁浠诲姟琛ㄤ腑鐨勫崟鎹槑缁咺d鏌ヨ鍗曟嵁鏄庣粏淇℃伅
+ var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(z => z.Id == wmsTask.OrderDetailsId);
+ //淇敼鍗曟嵁鏄庣粏,浠诲姟鐘舵��,璁惧浠诲姟鐘舵�佷负鏈墽琛�
+ wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.WEIZHIXING;
+ await _wmsOrderDetailsRep.UpdateNowAsync(wmsOrderDetails);
+ wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.WZX;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+ wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+ }
+ else //绉诲簱浠诲姟
+ {
+ var statusList = new List<TaskDodeviceStatusEnum> { TaskDodeviceStatusEnum.WZX, TaskDodeviceStatusEnum.ZX_DDJ };
+ if (!statusList.Contains(wmsTask.TaskDodeviceStatus)) throw Oops.Oh("鍙湁鍫嗗灈鏈烘墽琛屼腑锛岃澶囨湭鎵ц鎵嶈兘寮哄埗鍙栨秷锛�");
+ // 鏌ヨ鎵樼洏
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ if (wmsContainer == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+ //鍒犻櫎浠诲姟
+ await _wmsTaskRep.DeleteAsync(wmsTask);
+ // 璧风偣搴撲綅淇℃伅
+ var SourcePlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.SourcePlace).FirstOrDefaultAsync();
+ SourcePlace.PlaceStatus = PlaceStatus.CUNHUO;
+ await _wmsPlaceRep.UpdateAsync(SourcePlace);
+ //鐩爣搴撲綅淇℃伅
+ var ToPlace = await _wmsPlaceRep.Where(z => z.PlaceCode == wmsTask.ToPlace).FirstOrDefaultAsync();
+ ToPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ await _wmsPlaceRep.UpdateAsync(ToPlace);
+ }
+ }
+
+
+ /// <summary>
+ /// wcs璇诲彇鎺ュ彛鍒ゆ柇鐗╂枡鏄惁缁勭洏鍑哄簱 true浠h〃宸茬粡缁勭洏鍑哄簱
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("CheckPack")]
+ [AllowAnonymous]
+ [NonAction]
+ public async Task<bool> CheckPack()
+ {
+ var packList = await _lesPackWarehouseRep.Where(p => p.LesPackState == LesPackState.WEICHUKU).Select(n => n.OrderNo).Distinct().ToListAsync();
+ if (packList.Count >= 2) return false;
+ else return true;
+ }
+
+ /// <summary>
+ /// 璁惧鎶ヨ淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("AddDeviceWaring")]
+ [AllowAnonymous]
+ [NonAction]
+ public async Task AddDeviceWaring(AddDeviceWaringInput input)
+ {
+ //鍒ゆ柇wcsid鏄惁瀛樺湪
+ var lesDeviceWaring = await _lesDeviceWaringRep.FirstOrDefaultAsync(u => u.WcsId == input.WcsId);
+ if (lesDeviceWaring != null)
+ {
+ await _lesDeviceWaringRep.UpdateAsync(lesDeviceWaring);
+ }
+ else
+ {
+ lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+ await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring);
+ }
+ }
+
+ #region 鍏敤鏂规硶
+ /// <summary>
+ /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+ /// </summary>
+ /// <param name="Aisle"></param>
+ /// <returns></returns>
+ [NonAction]
+ public int GetOneRowByAisle(int Aisle)
+ {
+ if (Aisle >= 7)
+ {
+ return 1;
+ }
+ return (Aisle - 1) * 4 + 1;
+ }
+ /// <summary>
+ /// 鏍规嵁宸烽亾鑾峰彇鍐呬晶绗簩鎺�
+ /// </summary>
+ /// <param name="Aisle"></param>
+ /// <returns></returns>
+ [NonAction]
+ public int GetTwoRowByAisle(int Aisle)
+ {
+ if (Aisle >= 7)
+ {
+ return 2;
+ }
+ return (Aisle - 1) * 4 + 2;
+ }
+ /// <summary>
+ /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗簩鎺�
+ /// </summary>
+ /// <param name="Aisle"></param>
+ /// <returns></returns>
+ [NonAction]
+ public int GetThreeRowByAisle(int Aisle)
+ {
+ if (Aisle >= 7)
+ {
+ return 3;
+ }
+ return (Aisle - 1) * 4 + 3;
+ }
+ /// <summary>
+ /// 鏍规嵁宸烽亾鑾峰彇澶栦晶绗竴鎺�
+ /// </summary>
+ /// <param name="Aisle"></param>
+ /// <returns></returns>
+ [NonAction]
+ public int GetFourRowByAisle(int Aisle)
+ {
+ if (Aisle >= 7)
+ {
+ return 4;
+ }
+ return (Aisle - 1) * 4 + 4;
+ }
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs
new file mode 100644
index 0000000..f5fd610
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsDto.cs
@@ -0,0 +1,90 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+ /// </summary>
+ public class AccessDetailsDto
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绛夌骇
+ /// </summary>
+ public int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡Id
+ /// </summary>
+ public long MaterialId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏁伴噺
+ /// </summary>
+ public decimal BindQuantity { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public CommonStatus BindStatus { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs
new file mode 100644
index 0000000..00ffda4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsInput.cs
@@ -0,0 +1,209 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰曟煡璇㈠弬鏁�
+ /// </summary>
+ public class View_AccessDetailsSearch : PageInputBase
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public virtual TaskModel? TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public virtual TaskType? TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绛夌骇
+ /// </summary>
+ public virtual int? TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮
+ /// </summary>
+ public virtual string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣
+ /// </summary>
+ public virtual string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public virtual long? ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡Id
+ /// </summary>
+ public virtual long? MaterialId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏁伴噺
+ /// </summary>
+ public virtual decimal? BindQuantity { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus? BindStatus { get; set; }
+ }
+
+ /// <summary>
+ /// 鍑哄叆搴撹褰曡緭鍏ュ弬鏁�
+ /// </summary>
+ public class AccessDetailsInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public virtual TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public virtual TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绛夌骇
+ /// </summary>
+ public virtual int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public virtual TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮
+ /// </summary>
+ public virtual string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣
+ /// </summary>
+ public virtual string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public virtual long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡Id
+ /// </summary>
+ public virtual long MaterialId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏁伴噺
+ /// </summary>
+ public virtual decimal BindQuantity { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual CommonStatus BindStatus { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddAccessDetailsInput : AccessDetailsInput
+ {
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteAccessDetailsInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateAccessDetailsInput : AccessDetailsInput
+ {
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeAccessDetailsInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs
new file mode 100644
index 0000000..cef70eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/Dto/WmsAccessDetailsOutput.cs
@@ -0,0 +1,98 @@
+锘縰sing System;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰曡緭鍑哄弬鏁�
+ /// </summary>
+ public class View_AccessDetailsOutput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public TaskModel? TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType? TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public int? TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+ /// </summary>
+ public TaskStatusEnum? TaskStatus { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮
+ /// </summary>
+ public string Description { get; set; }
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ //public string Batch { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 淇敼鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+ //public int? Long { get; set; }
+ //public int? Wide { get; set; }
+ //public int? High { get; set; }
+
+ /// <summary>
+ /// 浠诲姟寮�濮嬫椂闂�
+ /// </summary>
+ public DateTimeOffset? TaskCreatedTime { get; set; }
+
+ /// <summary>
+ /// 浠诲姟缁撴潫鏃堕棿
+ /// </summary>
+ public DateTimeOffset? TaskUpdatedTime { get; set; }
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs
new file mode 100644
index 0000000..0893b1e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsAccessDetails/WmsAccessDetailsService.cs
@@ -0,0 +1,56 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Admin.NET.Core.Entity;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撹褰曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "View_AccessDetails", Order = 105)]
+ [Route("api/[Controller]")]
+ public class AccessDetailsService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<VAccessDetails, MasterDbContextLocator> _vAccessDetailsRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="vAccessDetailsRep"></param>
+ public AccessDetailsService(
+ IRepository<VAccessDetails, MasterDbContextLocator> vAccessDetailsRep
+ )
+ {
+ _vAccessDetailsRep = vAccessDetailsRep;
+ }
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍑哄叆搴撹褰�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<View_AccessDetailsOutput>> Page([FromQuery] View_AccessDetailsSearch input)
+ {
+ var view_AccessDetailss = await _vAccessDetailsRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+ .Where(input.TaskModel != null, u => u.TaskModel == input.TaskModel)
+ .Where(input.TaskType != null, u => u.TaskType == input.TaskType)
+ .Where(u => u.TaskStatus == TaskStatusEnum.WANCHENG || u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG)
+ .Where(u => u.TaskNo != null)
+ .Where(!string.IsNullOrEmpty(input.SourcePlace), u => EF.Functions.Like(u.SourcePlace, $"%{input.SourcePlace.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ToPlace), u => EF.Functions.Like(u.ToPlace, $"%{input.ToPlace.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+ .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) && u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+ .OrderBy(PageInputOrder.OrderBuilder<View_AccessDetailsSearch>(input))
+ .ProjectToType<View_AccessDetailsOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return view_AccessDetailss;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs
new file mode 100644
index 0000000..4adfb5f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringDto.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 璁惧鎶ヨ杈撳嚭鍙傛暟
+ /// </summary>
+ public class LesDeviceWaringDto
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public int WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public DateTimeOffset StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public DateTimeOffset EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public int RunningTime { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs
new file mode 100644
index 0000000..b26954a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringInput.cs
@@ -0,0 +1,156 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 璁惧鎶ヨ鏌ヨ鍙傛暟
+ /// </summary>
+ public class LesDeviceWaringSearch : PageInputBase
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public virtual int? WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public virtual string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public virtual string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public virtual int? RunningTime { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 璁惧鎶ヨ涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class LesDeviceWaringSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public virtual int? WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public virtual string? DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public virtual string? FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public virtual int? RunningTime { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 璁惧鎶ヨ杈撳叆鍙傛暟
+ /// </summary>
+ public class LesDeviceWaringInput
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public virtual int WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public virtual string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public virtual string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public virtual int RunningTime { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddLesDeviceWaringInput : LesDeviceWaringInput
+ {
+ }
+
+ public class DeleteLesDeviceWaringInput : BaseId
+ {
+ }
+
+ public class UpdateLesDeviceWaringInput : LesDeviceWaringInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeLesDeviceWaringInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs
new file mode 100644
index 0000000..114bede
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Dto/LesDeviceWaringOutput.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 璁惧鎶ヨ杈撳嚭鍙傛暟
+ /// </summary>
+ public class LesDeviceWaringOutput
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ public int WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ public string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ public string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ public DateTimeOffset StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ public DateTimeOffset EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ public int RunningTime { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs
new file mode 100644
index 0000000..faf134b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/ILesDeviceWaringService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface ILesDeviceWaringService
+ {
+ Task Add(AddLesDeviceWaringInput input);
+ Task Delete(DeleteLesDeviceWaringInput input);
+ Task<LesDeviceWaringOutput> Get([FromQuery] QueryeLesDeviceWaringInput input);
+ Task<List<LesDeviceWaringOutput>> List([FromQuery] LesDeviceWaringInput input);
+ Task<PageResult<LesDeviceWaringOutput>> Page([FromQuery] LesDeviceWaringSearch input);
+ Task Update(UpdateLesDeviceWaringInput input);
+
+ Task<List<LesDeviceWaringOutput>> ListNonPageAsync([FromQuery] LesDeviceWaringSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs
new file mode 100644
index 0000000..d91b1de
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/LesDeviceWaringService.cs
@@ -0,0 +1,253 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 璁惧鎶ヨ鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "LesDeviceWaring", Order = 100)]
+ [Route("api/[Controller]")]
+ public class LesDeviceWaringService : ILesDeviceWaringService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<LesDeviceWaring,MasterDbContextLocator> _lesDeviceWaringRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ ///
+ /// </summary>
+ public LesDeviceWaringService(
+ IRepository<LesDeviceWaring,MasterDbContextLocator> lesDeviceWaringRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _lesDeviceWaringRep = lesDeviceWaringRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ璁惧鎶ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<LesDeviceWaringOutput>> Page([FromQuery] LesDeviceWaringSearch input)
+ {
+ var lesDeviceWarings = await _lesDeviceWaringRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.DeviceName), u => EF.Functions.Like(u.DeviceName, $"%{input.DeviceName.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.FaultName), u => EF.Functions.Like(u.FaultName, $"%{input.FaultName.Trim()}%"))
+ .Where(input.StartTime != null, u => u.StartTime == input.StartTime)
+ .Where(input.EndTime != null, u => u.EndTime == input.EndTime)
+ .OrderBy(PageInputOrder.OrderBuilder<LesDeviceWaringSearch>(input))
+ .ProjectToType<LesDeviceWaringOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return lesDeviceWarings;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈣澶囨姤璀﹀垪琛�
+ /// </summary>
+ /// <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+ /// <returns>(璁惧鎶ヨ)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<LesDeviceWaringOutput>> ListNonPageAsync([FromQuery] LesDeviceWaringSearchNonPage input)
+ {
+ var pDeviceName = input.DeviceName?.Trim() ?? "";
+ var pFaultName = input.FaultName?.Trim() ?? "";
+ var pStartTime = input.StartTime;
+ var pEndTime = input.EndTime;
+ var lesDeviceWarings = await _lesDeviceWaringRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pDeviceName), u => EF.Functions.Like(u.DeviceName, $"%{pDeviceName}%"))
+ .Where(!string.IsNullOrEmpty(pFaultName), u => EF.Functions.Like(u.FaultName, $"%{pFaultName}%"))
+ .Where(pStartTime != null, u => u.StartTime == pStartTime)
+ .Where(pEndTime != null, u => u.EndTime == pEndTime)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<LesDeviceWaringOutput>()
+ .ToListAsync();
+ return lesDeviceWarings;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞璁惧鎶ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddLesDeviceWaringInput input)
+ {
+ var lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+ await _lesDeviceWaringRep.InsertAsync(lesDeviceWaring);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎璁惧鎶ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteLesDeviceWaringInput input)
+ {
+ var lesDeviceWaring = await _lesDeviceWaringRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _lesDeviceWaringRep.DeleteAsync(lesDeviceWaring);
+ }
+
+ /// <summary>
+ /// 鏇存柊璁惧鎶ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateLesDeviceWaringInput input)
+ {
+ var isExist = await _lesDeviceWaringRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var lesDeviceWaring = input.Adapt<LesDeviceWaring>();
+ await _lesDeviceWaringRep.UpdateAsync(lesDeviceWaring,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇璁惧鎶ヨ
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<LesDeviceWaringOutput> Get([FromQuery] QueryeLesDeviceWaringInput input)
+ {
+ return (await _lesDeviceWaringRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<LesDeviceWaringOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇璁惧鎶ヨ鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<LesDeviceWaringOutput>> List([FromQuery] LesDeviceWaringInput input)
+ {
+ return await _lesDeviceWaringRep.DetachedEntities.ProjectToType<LesDeviceWaringOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆璁惧鎶ヨ鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<LesDeviceWaringOutput> lesDeviceWaringList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, LesDeviceWaringOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = lesDeviceWaringList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<LesDeviceWaring>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<LesDeviceWaring, LesDeviceWaringOutput>(selectKeys);
+ List<LesDeviceWaring> updates = new();
+ List<LesDeviceWaring> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var lesDeviceWaringExistSubList = _lesDeviceWaringRep.Where(filter).Select(selector).ToList();
+ lesDeviceWaringExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var lesDeviceWaring in lesDeviceWaringList)
+ {
+ if (lesDeviceWaring.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(lesDeviceWaring.Adapt<LesDeviceWaring>());
+ }
+ else
+ {
+ adds.Add(lesDeviceWaring.Adapt<LesDeviceWaring>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _lesDeviceWaringRep.Update(x));
+
+
+ var maxId = _lesDeviceWaringRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<LesDeviceWaring>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇璁惧鎶ヨ鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁璁惧鎶ヨ鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">璁惧鎶ヨ鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] LesDeviceWaringSearchNonPage input)
+ {
+ var lesDeviceWaringList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(lesDeviceWaringList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("LesDeviceWaring", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs
new file mode 100644
index 0000000..c3936a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsDeviceWaring/Map/LesDeviceWaringMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class LesDeviceWaringMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddLesDeviceWaringInput, LesDeviceWaring>()
+ ;
+ config.ForType<UpdateLesDeviceWaringInput, LesDeviceWaring>()
+ ;
+ config.ForType<LesDeviceWaring, LesDeviceWaringOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs
new file mode 100644
index 0000000..6806693
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewInput.cs
@@ -0,0 +1,72 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class LocationViewInput
+ {
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅瀵瑰簲鐨勫贩閬�
+ /// </summary>
+ public class GetPalceAisleInput
+ {
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+ public long Areaid { get; set; }
+ }
+ /// <summary>
+ /// 鑾峰彇搴撲綅鍜屽贩閬撹幏鍙栧搴旂殑鎺�
+ /// </summary>
+ public class GetPalceAisleRownoInput
+ {
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+ public long Areaid { get; set; }
+
+ /// <summary>
+ /// 宸烽亾ID
+ /// </summary>
+ [Required(ErrorMessage = "宸烽亾ID涓嶈兘涓虹┖")]
+ public long Aisleid { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅鍒楄〃
+ /// </summary>
+ public class GetPalceListInput
+ {
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+ public long Areaid { get; set; }
+
+ /// <summary>
+ /// 宸烽亾Id
+ /// </summary>
+ [Required(ErrorMessage = "搴撳尯Id涓嶈兘涓虹┖")]
+ public long Aisleid { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ [Required(ErrorMessage = "搴撳尯鎺掍笉鑳戒负绌�")]
+ public int Rowno { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撲綅瀵瑰簲鐨勪俊鎭�
+ /// </summary>
+ public class GetMaterialDetailInput : BaseId
+ {
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs
new file mode 100644
index 0000000..0c856bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/Dto/LocationViewOutput.cs
@@ -0,0 +1,191 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class PalceInfoOtput
+ {
+ /// <summary>
+ /// 鎬诲簱浣嶆暟
+ /// </summary>
+ public int countNum { get; set; }
+
+ /// <summary>
+ /// 鎬诲瓨璐ф暟
+ /// </summary>
+ public int cunhuoNum { get; set; }
+
+ /// <summary>
+ /// 绌哄簱浣嶆暟
+ /// </summary>
+ public int emptyNum { get; set; }
+
+ /// <summary>
+ /// 绌烘墭鐩樻暟
+ /// </summary>
+ public int emptyContainerNum { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鏁伴噺
+ /// </summary>
+ public int materialNum { get; set; }
+
+ /// <summary>
+ /// 閿佸畾搴撲綅鏁�
+ /// </summary>
+ public int lockNum { get; set; }
+
+ /// <summary>
+ /// 寰呭叆搴撲綅鏁�
+ /// </summary>
+ public int DaiRuNum { get; set; }
+
+ /// <summary>
+ /// 寰呭嚭搴撲綅鏁�
+ /// </summary>
+ public int DaichuNum { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public List<WareLocationAisleData> PalceDetails { get; set; }
+ }
+ /// <summary>
+ /// 宸�
+ /// </summary>
+ public class WareLocationAisleData
+ {
+ /// <summary>
+ /// 宸�
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 宸峰睘鎬ф暟鎹�
+ /// </summary>
+ public List<WareLocationRownoData> wareLocationRownoData { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public class WareLocationRownoData
+ {
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int Rowno { get; set; }
+
+ /// <summary>
+ /// 鎺掑睘鎬ф暟鎹�
+ /// </summary>
+ public List<WareLocationLayerData> wareLocationLayerData { get; set; }
+ }
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public class WareLocationLayerData
+ {
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int Layer { get; set; }
+
+ /// <summary>
+ /// 灞傚睘鎬ф暟鎹�
+ /// </summary>
+ public List<PalceDetail> wareLocationColumnNoData { get; set; }
+ }
+
+ ///// <summary>
+ ///// 鍒�
+ ///// </summary>
+ //public class WareLocationColumnNoData
+ //{
+ // /// <summary>
+ // /// 鍒�
+ // /// </summary>
+ // public int ColumnNo { get; set; }
+
+ // /// <summary>
+ // /// 鍒楀睘鎬ф暟鎹�
+ // /// </summary>
+ // public List<PalceDetail> PalceDetail { get; set; }
+ //}
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class MaterialDetailsOutput
+ {
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string Containercode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀵硅薄
+ /// </summary>
+ public PalceDetail PalceDetails { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<WmsMaterialStock> WmsMaterialStocks { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class PalceDetail
+ {
+ /// <summary>
+ /// 搴撲綅缂栧彿
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public PlaceStatus PlaceStatus { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾
+ /// </summary>
+ public YesOrNot Islock { get; set; } = YesOrNot.N;
+
+ /// <summary>
+ /// 鏄惁绌烘墭鐩�
+ /// </summary>
+ public YesOrNot EmptyContainer { get; set; } = YesOrNot.N;
+
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ public int RowNo { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ public int ColumnNo { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ public int LayerNo { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs
new file mode 100644
index 0000000..f6a8355
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsLocationView/LocationViewService.cs
@@ -0,0 +1,280 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撲綅璇曞浘鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "LocationView", Order = 104)]
+ [Route("api/[Controller]")]
+ public class LocationViewService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public LocationViewService(
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRe,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainer
+ )
+ {
+ _wmsAreaRep = wmsAreaRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRe;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsMaterialContainerRep = wmsMaterialContainer;
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳尯淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetArea")]
+ public async Task<List<WmsArea>> GetArea()
+ {
+ var areaList = await _wmsAreaRep.Where(n => n.AreaStatus == CommonStatus.ENABLE && n.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).ToListAsync();
+ return areaList;
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撳尯鑾峰彇宸烽亾
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetAisle")]
+ public async Task<object> GetPalceAisle([FromQuery] GetPalceAisleInput input)
+ {
+
+ var objList=await _wmsPlaceRep.Where(n => n.AreaId == input.Areaid).OrderBy(n=>n.Aisle).Select(n => n.Aisle).Distinct().ToArrayAsync();
+ for (int i = 0; i < objList.Length-1; i++)
+ {
+ for (int j = 0; j < objList.Length-1; j++)
+ {
+ int k = j + 1;
+ if (objList[j] >objList[k])
+ {
+ var temp = objList[k];
+ objList[k] = objList[j];
+ objList[j] = temp;
+ }
+ }
+ }
+ return objList;
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撳尯鍜屽贩閬撹幏鍙栨帓
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetPalceRowno")]
+ public async Task<object> GetPalceRowno([FromQuery] GetPalceAisleRownoInput input)
+ {
+ var objList=await _wmsPlaceRep.Where(n => n.AreaId == input.Areaid && n.Aisle==input.Aisleid && n.WmsArea.WorkShopType == LesWorkShopType.FAPAOCHEJIAN).OrderBy(n => n.RowNo).Select(n => n.RowNo).Distinct().ToArrayAsync();
+
+ for (int i = 0; i < objList.Length - 1; i++)
+ {
+ for (int j = 0; j < objList.Length - 1; j++)
+ {
+ int k = j + 1;
+ if (objList[j] > objList[k])
+ {
+ var temp = objList[k];
+ objList[k] = objList[j];
+ objList[j] = temp;
+ }
+ }
+ }
+ return objList;
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撳尯 鎺掕幏鍙栧簱浣嶄俊鎭�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetPalceList")]
+ public async Task<PalceInfoOtput> GetPalceList([FromQuery] GetPalceListInput input)
+ {
+ var palceList = await _wmsPlaceRep.DetachedEntities
+ .Where(p => p.AreaId == input.Areaid)
+ .Where(input.Aisleid != 0, p => p.Aisle == input.Aisleid)
+ .Where(input.Rowno != 0, p => p.RowNo == input.Rowno)
+ .ToListAsync();
+
+ //鑾峰彇鏈夊灏戝贩,鎺�,鍒�,灞�
+ var Aisles = palceList.OrderBy(n => n.Aisle).Select(n => n.Aisle).Distinct().ToList();
+
+ var locationDataList = new List<WareLocationAisleData>();
+ //宸烽亾
+ foreach (var aisle in Aisles)
+ {
+ var aisleData = new WareLocationAisleData();
+ aisleData.Aisle = aisle;
+ aisleData.wareLocationRownoData = new List<WareLocationRownoData>();
+ //鎺�
+ var RowNos = palceList.Where(p=>p.Aisle==aisle).OrderBy(n => n.RowNo).Select(n => n.RowNo).Distinct().ToList();
+ foreach (var row in RowNos)
+ {
+ var rownoData = new WareLocationRownoData();
+ rownoData.Rowno = row;
+ rownoData.wareLocationLayerData = new List<WareLocationLayerData>();
+ //灞�
+ var LayerNo = palceList.Where(p=>p.Aisle==aisle && p.RowNo==row).OrderByDescending(n => n.LayerNo).Select(n => n.LayerNo).Distinct();
+ foreach (var lay in LayerNo)
+ {
+ var layerData = new WareLocationLayerData();
+ layerData.Layer = lay;
+ layerData.wareLocationColumnNoData = new List<PalceDetail>();
+ //鍒�
+ var ColumnNos = palceList.Where(p=>p.Aisle==aisle && p.RowNo==row).OrderByDescending(n => n.ColumnNo).Select(n => n.ColumnNo).Distinct();
+ foreach (var col in ColumnNos)
+ {
+ var wareLocationMdoel = palceList.Where(p =>p.Aisle==aisle && p.RowNo == row && p.LayerNo == lay && p.ColumnNo == col).FirstOrDefault();
+ if (wareLocationMdoel != null)
+ {
+ var locationDetail = new PalceDetail()
+ {
+ Id = wareLocationMdoel.Id,
+ RowNo = wareLocationMdoel.RowNo,
+ ColumnNo = wareLocationMdoel.ColumnNo,
+ LayerNo = wareLocationMdoel.LayerNo,
+ PlaceCode = wareLocationMdoel.PlaceCode,
+ Islock = wareLocationMdoel.Islock,
+ EmptyContainer = wareLocationMdoel.EmptyContainer,
+ PlaceStatus = wareLocationMdoel.PlaceStatus,
+ };
+ layerData.wareLocationColumnNoData.Add(locationDetail);
+ }
+ else
+ {
+ layerData.wareLocationColumnNoData.Add(null);
+ }
+ }
+ rownoData.wareLocationLayerData.Add(layerData);
+ }
+ aisleData.wareLocationRownoData.Add(rownoData);
+ }
+ locationDataList.Add(aisleData);
+ }
+
+ return new PalceInfoOtput()
+ {
+ countNum = palceList.Count,
+ cunhuoNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+ emptyNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.KONGXIAN).Count(),
+ DaiRuNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.DAIRU).Count(),
+ DaichuNum = palceList.Where(n => n.PlaceStatus == PlaceStatus.DAICHU).Count(),
+ emptyContainerNum = palceList.Where(p => p.EmptyContainer == YesOrNot.Y && p.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+ materialNum = palceList.Where(p => p.EmptyContainer == YesOrNot.N && p.PlaceStatus == PlaceStatus.CUNHUO).Count(),
+ lockNum = palceList.Where(p => p.Islock == YesOrNot.Y).Count(),
+ PalceDetails = locationDataList,
+ };
+ }
+
+ /// <summary>
+ /// 鏍规嵁搴撲綅鑾峰彇瀵瑰簲淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetMaterialDetail")]
+ [UnifyResult(typeof(MaterialDetailsOutput))]
+ public async Task<object> GetMaterialDetail([FromQuery] GetMaterialDetailInput input)
+ {
+ var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+ if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ var MaterialStockList = await _wmsMaterialStockRep.Where(p => p.PlaceCode == palceModel.PlaceCode).ToListAsync();
+ var model = new MaterialDetailsOutput()
+ {
+ PalceDetails = palceModel.Adapt<PalceDetail>()
+ };
+ if (MaterialStockList.Count > 0)
+ {
+ model.Containercode = MaterialStockList.FirstOrDefault().ContainerCode;
+ model.WmsMaterialStocks = MaterialStockList;
+ }
+ return XnRestfulResultProvider.RESTfulResult(model);
+ }
+
+ /// <summary>
+ /// 淇敼搴撲綅閿佸畾淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("UpdatePalceIslock")]
+ [UnifyResult(typeof(object))]
+ public async Task<object> UpdatePalceIslock([FromQuery] GetMaterialDetailInput input)
+ {
+ var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+ if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ if (palceModel.Islock == YesOrNot.Y)
+ {
+ palceModel.Islock = YesOrNot.N;
+ }
+ else
+ {
+ palceModel.Islock = YesOrNot.Y;
+ }
+ await _wmsPlaceRep.UpdateAsync(palceModel);
+ return XnRestfulResultProvider.RESTfulResult();
+ }
+
+ /// <summary>
+ /// 灏嗗簱浣嶇疆涓虹┖闂�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("UpdatePalceKongXian")]
+ [UnifyResult(typeof(object))]
+ [UnitOfWork]
+ public async Task<object> UpdatePalceKongXian([FromQuery] GetMaterialDetailInput input)
+ {
+ var palceModel = await _wmsPlaceRep.FirstOrDefaultAsync(p => p.Id == input.Id);
+ if (palceModel == null) return XnRestfulResultProvider.RESTfulMesaage("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ palceModel.PlaceStatus = PlaceStatus.KONGXIAN;
+ await _wmsPlaceRep.UpdateAsync(palceModel);
+
+ var materialStockModel = await _wmsMaterialStockRep.Where(p => p.PlaceCode == palceModel.PlaceCode).FirstOrDefaultAsync();
+ if (materialStockModel != null)
+ {
+ await _wmsMaterialStockRep.DeleteAsync(materialStockModel);
+ }
+ var containerPlaceModel = await _wmsContainerPlaceRep.Where(p => p.PlaceCode == palceModel.PlaceCode && p.ContainerPlaceStatus == CommonStatus.ENABLE).FirstOrDefaultAsync();
+ if (containerPlaceModel != null)
+ {
+ containerPlaceModel.ContainerPlaceStatus = CommonStatus.DISABLE;
+ await _wmsContainerPlaceRep.UpdateAsync(containerPlaceModel);
+
+ var wmsMaterialContainerModal = await _wmsMaterialContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == containerPlaceModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE);
+ if (containerPlaceModel != null) return XnRestfulResultProvider.RESTfulMesaage("鐗╂枡鎵樼洏淇℃伅涓嶅瓨鍦�!");
+ containerPlaceModel.ContainerPlaceStatus = CommonStatus.DISABLE;
+ await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModal);
+
+ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == containerPlaceModel.ContainerCode);
+ if (containerModel != null)
+ {
+ containerModel.ContainerStatus = ContainerStatus.KOUXIAN;
+ await _wmsContainerRep.UpdateAsync(containerModel);
+ }
+ }
+ return XnRestfulResultProvider.RESTfulResult();
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs
new file mode 100644
index 0000000..9cc5eaf
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockDto.cs
@@ -0,0 +1,102 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+ /// </summary>
+ public class MaterialStockDto
+ {
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string WmsAreaAreaName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨鏁�
+ /// </summary>
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯ID
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs
new file mode 100644
index 0000000..43fa24c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockInput.cs
@@ -0,0 +1,294 @@
+锘縰sing Microsoft.AspNetCore.Components.Web.Virtualization;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳瓨琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsMaterialStockSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷
+ /// </summary>
+ public virtual MaterialType? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public virtual string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�
+ /// </summary>
+ public virtual MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public virtual UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public virtual UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨鏁�
+ /// </summary>
+ public virtual decimal? StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public virtual long? AreaId { get; set; }
+
+ /// <summary>
+ /// 鍥惧彿
+ /// </summary>
+ public virtual string DrawingNo { get; set; }
+
+ /// <summary>
+ /// 鑸瑰彿
+ /// </summary>
+ public virtual string ShipNo { get; set; }
+
+ }
+ /// <summary>
+ /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夋煡璇㈠弬鏁�
+ /// </summary>
+ public class MaterialStockSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷
+ /// </summary>
+ public virtual MaterialType? MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public virtual int? Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public virtual int? Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public virtual int? High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public virtual string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�
+ /// </summary>
+ public virtual MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public virtual UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public virtual UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨鏁�
+ /// </summary>
+ public virtual decimal? StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public virtual long? AreaId { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍏ュ弬鏁�
+ /// </summary>
+ public class MaterialStockInput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷
+ /// </summary>
+ public virtual MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public virtual string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public virtual string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public virtual string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public virtual int? Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public virtual int? Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public virtual int? High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public virtual string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�
+ /// </summary>
+ public virtual MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public virtual UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public virtual UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨鏁�
+ /// </summary>
+ public virtual decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public virtual long AreaId { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddMaterialStockInput : MaterialStockInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteMaterialStockInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateMaterialStockInput : MaterialStockInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeMaterialStockInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs
new file mode 100644
index 0000000..ffd48be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/Dto/MaterialStockOutput.cs
@@ -0,0 +1,120 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鑾峰彇搴撳彛浠撳簱涓嬫媺妗嗚緭鍑哄弬鏁�
+ /// </summary>
+ public class AreaEntranceListOutput
+ {
+ /// <summary>
+ /// 浠撳簱Id
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 浠撳簱鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+ }
+ /// <summary>
+ /// 搴撳瓨淇℃伅锛堢啛鍖栧簱锛夎緭鍑哄弬鏁�
+ /// </summary>
+ public class MaterialStockOutput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲瀷
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨鏁�
+ /// </summary>
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 搴撳尯
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ /// <summary>
+ /// 鍏ュ簱鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs
new file mode 100644
index 0000000..dc45ba4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsCount/WmsMaterialStock/MaterialStockService.cs
@@ -0,0 +1,141 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 搴撳瓨淇℃伅鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsMaterialStock", Order = 106)]
+ [Route("api/[Controller]")]
+ public class MaterialStockService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsArea> _wmsAreaRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public MaterialStockService(
+ IRepository<WmsArea> wmsAreaRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+ )
+ {
+ _wmsAreaRep = wmsAreaRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ搴撳瓨琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<MaterialStockOutput>> Page([FromQuery] WmsMaterialStockSearch input)
+ {
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+ .Where(input.MaterialType != null, u => u.MaterialType == input.MaterialType)
+ .Where(!string.IsNullOrEmpty(input.MaterialBatch), u => EF.Functions.Like(u.MaterialBatch, $"%{input.MaterialBatch.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialSpec), u => EF.Functions.Like(u.MaterialSpec, $"%{input.MaterialSpec.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialDensity), u => EF.Functions.Like(u.MaterialDensity, $"%{input.MaterialDensity.Trim()}%"))
+ .Where(u => u.StockNumber != 0)
+ .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(input.AreaId > 0, u => u.AreaId == input.AreaId)
+ .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+ u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+ .OrderBy(PageInputOrder.OrderBuilder<WmsMaterialStockSearch>(input))
+ .ProjectToType<MaterialStockOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ //鏍规嵁id鑾峰彇鍚嶇О
+ foreach (var item in wmsMaterialStocks.Rows)
+ {
+ //鏍规嵁搴撳尯id鑾峰彇搴撳尯鍚嶇О
+ var data = await _wmsAreaRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == item.AreaId);
+ if (data != null) item.AreaName = data.AreaName;
+ }
+ return wmsMaterialStocks;
+ }
+
+ /// <summary>
+ /// 澧炲姞搴撳瓨琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddMaterialStockInput input)
+ {
+ var wmsMaterialStock = input.Adapt<WmsMaterialStock>();
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎搴撳瓨琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteMaterialStockInput input)
+ {
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+ }
+
+ /// <summary>
+ /// 鏇存柊搴撳瓨琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateMaterialStockInput input)
+ {
+ var isExist = await _wmsMaterialStockRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsMaterialStock = input.Adapt<WmsMaterialStock>();
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳瓨琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<MaterialStockOutput> Get([FromQuery] QueryeMaterialStockInput input)
+ {
+ return (await _wmsMaterialStockRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<MaterialStockOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳瓨琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<MaterialStockOutput>> List([FromQuery] MaterialStockInput input)
+ {
+ return await _wmsMaterialStockRep.DetachedEntities.ProjectToType<MaterialStockOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// 鑾峰彇WmsArea鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("WmsArea")]
+ public async Task<dynamic> FkWmsAreaList()
+ {
+ var list = await _wmsAreaRep.DetachedEntities.ToListAsync();
+ return list.Select(e => new { Code = e.Id, Name = e.AreaName });
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs
new file mode 100644
index 0000000..e63e790
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskDto.cs
@@ -0,0 +1,65 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ /// </summary>
+ public class AgvTaskDto
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ public string TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ public string StartPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ public string EndPlace { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public string AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ public string TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs
new file mode 100644
index 0000000..c44729f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskInput.cs
@@ -0,0 +1,215 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+ /// </summary>
+ public class AgvTaskSearch : PageInputBase
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ public virtual string TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ public virtual string StartPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ public virtual string EndPlace { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual string AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ public virtual string TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ public virtual long? Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class AgvTaskSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ public virtual string? TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ public virtual string? StartPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ public virtual string? EndPlace { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual string? AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ public virtual string? TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ public virtual string? TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ public virtual long? Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string? ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType? WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState? IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+ /// </summary>
+ public class AgvTaskInput
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ public virtual string TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ public virtual string StartPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ public virtual string EndPlace { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public virtual string AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ public virtual string TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ public virtual long Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public virtual LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState IssueState { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddAgvTaskInput : AgvTaskInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteAgvTaskInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateAgvTaskInput : AgvTaskInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeAgvTaskInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ public class AgvTaskFinishInput : BaseId
+ {
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs
new file mode 100644
index 0000000..24ef8ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/Dto/AgvTaskOutput.cs
@@ -0,0 +1,65 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ /// </summary>
+ public class AgvTaskOutput
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ public string TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ public string StartPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ public string EndPlace { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ public string AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ public string TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs
new file mode 100644
index 0000000..aaef017
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsAgvTask/WmsAgvTaskService.cs
@@ -0,0 +1,311 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// AGV鍑哄叆搴撲换鍔$鐞嗘湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsAgvTask", Order = 103)]
+ [Route("api/[Controller]")]
+ public class WmsAgvTaskService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="agvTaskRep"></param>
+ /// <param name="wmsTaskRep"></param>
+ /// <param name="sysExcelTemplateService"></param>
+ public WmsAgvTaskService(
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _agvTaskRep = agvTaskRep;
+ _wmsTaskRep = wmsTaskRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨAGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<AgvTaskOutput>> Page([FromQuery] AgvTaskSearch input)
+ {
+ var agvTasks = await _agvTaskRep.DetachedEntities
+ .Where(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN)
+ .Where(!string.IsNullOrEmpty(input.TaskType), u => u.TaskType == input.TaskType)
+ .Where(!string.IsNullOrEmpty(input.AgvState), u => u.AgvState == input.AgvState)
+ .Where(!string.IsNullOrEmpty(input.TransportOrder), u => EF.Functions.Like(u.TransportOrder, $"%{input.TransportOrder.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .OrderBy(PageInputOrder.OrderBuilder<AgvTaskSearch>(input))
+ .ProjectToType<AgvTaskOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+ foreach (var item in agvTasks.Rows)
+ {
+ if (item.AgvState == "PRISTINE") item.AgvState = "寰呮墽琛�";
+ else if (item.AgvState == "TRAVELLING") item.AgvState = "鎵ц涓�";
+ else item.AgvState = "瀹屾垚";
+ }
+
+ return agvTasks;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇GV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ /// <returns>(AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<AgvTaskOutput>> ListNonPageAsync([FromQuery] AgvTaskSearchNonPage input)
+ {
+ var pTaskType = input.TaskType?.Trim() ?? "";
+ var pAgvState = input.AgvState?.Trim() ?? "";
+ var pTransportOrder = input.TransportOrder?.Trim() ?? "";
+ var pTaskNo = input.TaskNo?.Trim() ?? "";
+ var pContainerCode = input.ContainerCode?.Trim() ?? "";
+ var agvTasks = await _agvTaskRep.DetachedEntities
+ .Where(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN)
+ .Where(!string.IsNullOrEmpty(pTaskType), u => u.TaskType == pTaskType)
+ .Where(!string.IsNullOrEmpty(pAgvState), u => u.AgvState == pAgvState)
+ .Where(!string.IsNullOrEmpty(pTransportOrder), u => EF.Functions.Like(u.TransportOrder, $"%{pTransportOrder}%"))
+ .Where(!string.IsNullOrEmpty(pTaskNo), u => EF.Functions.Like(u.TaskNo, $"%{pTaskNo}%"))
+ .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<AgvTaskOutput>()
+ .ToListAsync();
+ return agvTasks;
+ }
+
+ /// <summary>
+ /// 澧炲姞AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddAgvTaskInput input)
+ {
+ var agvTask = input.Adapt<AgvTask>();
+ await _agvTaskRep.InsertAsync(agvTask);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteAgvTaskInput input)
+ {
+ var agvTask = await _agvTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _agvTaskRep.DeleteAsync(agvTask);
+ }
+
+ /// <summary>
+ /// 鏇存柊AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateAgvTaskInput input)
+ {
+ var isExist = await _agvTaskRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var agvTask = input.Adapt<AgvTask>();
+ await _agvTaskRep.UpdateAsync(agvTask, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("finish")]
+ [UnitOfWork]
+ public async Task Finish([FromBody] AgvTaskFinishInput input)
+ {
+ var wareAgvTask = await _agvTaskRep.FirstOrDefaultAsync(z => z.Id == input.Id);
+ if (wareAgvTask == null) throw Oops.Oh("AGV浠诲姟涓嶅瓨鍦紒");
+ if (wareAgvTask.AgvState == "FINISHED") throw Oops.Oh("AGV浠诲姟宸插畬鎴愶紒");
+
+ if (wareAgvTask.TaskType == "鍏ュ簱") //鍏ュ簱
+ {
+ // 鏇存柊AGV浠诲姟鐘舵��
+ wareAgvTask.AgvState = "FINISHED";
+ await _agvTaskRep.UpdateAsync(wareAgvTask);
+
+ // 鏌ヨ浠诲姟淇℃伅
+ var taskModel = await _wmsTaskRep.FirstOrDefaultAsync(p => p.TaskNo == wareAgvTask.TaskNo);
+ if (taskModel == null) throw Oops.Oh("涓讳换鍔′笉瀛樺湪锛�");
+ if (taskModel.TaskStatus == TaskStatusEnum.WANCHENG) throw Oops.Oh("涓讳换鍔″凡瀹屾垚锛�");
+
+ // 鏇存柊浠诲姟琛╓CS鏄惁鍙互璇诲彇涓篢rue锛岃澶囦换鍔$姸鎬佷负鈥滄墽琛屼腑-AGV鈥�
+ taskModel.IsRead = true;
+ taskModel.TaskDodeviceStatus = TaskDodeviceStatusEnum.ZX_AGV;
+ await _wmsTaskRep.UpdateAsync(taskModel);
+ }
+ else if (wareAgvTask.TaskType == "鍑哄簱") //鍑哄簱
+ {
+
+ }
+ else //绉诲簱
+ {
+
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<AgvTaskOutput> Get([FromQuery] QueryeAgvTaskInput input)
+ {
+ return (await _agvTaskRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<AgvTaskOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<AgvTaskOutput>> List([FromQuery] AgvTaskInput input)
+ {
+ return await _agvTaskRep.DetachedEntities.ProjectToType<AgvTaskOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<AgvTaskOutput> agvTaskList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, AgvTaskOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = agvTaskList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<AgvTask>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<AgvTask, AgvTaskOutput>(selectKeys);
+ List<AgvTask> updates = new();
+ List<AgvTask> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var agvTaskExistSubList = _agvTaskRep.Where(filter).Select(selector).ToList();
+ agvTaskExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+
+ foreach (var agvTask in agvTaskList)
+ {
+ if (agvTask.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(agvTask.Adapt<AgvTask>());
+ }
+ else
+ {
+ adds.Add(agvTask.Adapt<AgvTask>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _agvTaskRep.Update(x));
+ var maxId = _agvTaskRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<AgvTask>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">AGV鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] AgvTaskSearchNonPage input)
+ {
+ var agvTaskList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(agvTaskList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("AgvTask", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs
new file mode 100644
index 0000000..5f62881
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskDto.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ /// </summary>
+ public class TaskDto
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public bool IsRead { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public long OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ public int SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ public int DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ public string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public DodeviceType Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs
new file mode 100644
index 0000000..51b025f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskInput.cs
@@ -0,0 +1,426 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsTaskSearch : PageInputBase
+ {
+
+ /// <summary>
+ /// 鎵规
+ /// </summary>
+ public string Batch { get; set; }
+
+ /// <summary>
+ /// 瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public virtual TaskModel? TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public virtual TaskType? TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public virtual int? TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public virtual bool? IsRead { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public virtual string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public virtual string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public virtual int? Aisle { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public virtual long? OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ public virtual string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ public virtual int? SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ public virtual int? DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ public virtual string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public virtual DodeviceType? Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public virtual TaskDodeviceStatusEnum? TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState? IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsTaskFinishInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 鏇存柊浠诲姟浼樺厛绾�
+ /// </summary>
+ public class UpdateTaskLevelInput : BaseId
+ {
+ /// <summary>
+ /// 浠诲姟浼樺厛绾�
+ /// </summary>
+ //public int TaskLevel { get; set; } = 1;
+ }
+
+ /// <summary>
+ /// 鎵归噺鍙栨秷浠诲姟
+ /// </summary>
+ public class CancelInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鎵归噺鍙栨秷浠诲姟
+ /// </summary>
+ public class BatchCancelInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public List<long> Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鎵归噺鏆傚仠浠诲姟
+ /// </summary>
+ public class BatchBreakInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public List<long> Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鎵归噺缁х画浠诲姟
+ /// </summary>
+ public class BatchContinueInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public List<long> Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsTaskSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public virtual TaskModel? TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public virtual TaskType? TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public virtual int? TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public virtual TaskStatusEnum? TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public virtual bool? IsRead { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public virtual string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public virtual string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public virtual int? Aisle { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public virtual long? OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ public virtual string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ public virtual int? SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ public virtual int? DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ public virtual string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public virtual DodeviceType? Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public virtual TaskDodeviceStatusEnum? TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState? IssueState { get; set; }
+ }
+
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳叆鍙傛暟
+ /// </summary>
+ public class TaskInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public virtual string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public virtual TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public virtual TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public virtual int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public virtual TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public virtual bool IsRead { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public virtual string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public virtual string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public virtual int Aisle { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public virtual string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public virtual long OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ public virtual string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ public virtual int SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ public virtual int DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ public virtual string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public virtual DodeviceType Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public virtual TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual IssueState IssueState { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AddWmsTaskInput : TaskInput
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class DeleteWmsTaskInput : BaseId
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class UpdateWmsTaskInput : TaskInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class QueryeWmsTaskInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs
new file mode 100644
index 0000000..82a3889
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/Dto/TaskOutput.cs
@@ -0,0 +1,160 @@
+锘縰sing Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級杈撳嚭鍙傛暟
+ /// </summary>
+ public class TaskOutput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ public bool IsRead { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇鍚嶇О
+ /// </summary>
+ public string IsReadName { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public long OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ public int SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ public int DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ public string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public DodeviceType Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// Agv鐘舵��
+ /// </summary>
+ public string AgvState { get; set; }
+
+ /// <summary>
+ /// 鎵规
+ /// </summary>
+ public string Batch { get; set; }
+
+ /// <summary>
+ /// 瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 涓嬫枡浜х嚎
+ /// </summary>
+ public BlankingProductionLineEnum BlankingProductionLine { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ public string Description { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs
new file mode 100644
index 0000000..7a7bccc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsJob/WmsTask/WmsTaskService.cs
@@ -0,0 +1,627 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Text;
+using System.Web;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 浠诲姟绠$悊鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("浠撳簱浣滀笟", Name = "WmsTask", Order = 102)]
+ [Route("api/[Controller]")]
+ public class WmsTaskService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<AgvTask, MasterDbContextLocator> _agvTaskRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsTaskService(
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<AgvTask, MasterDbContextLocator> agvTaskRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _agvTaskRep = agvTaskRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsAreaRep= wmsAreaRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍑哄叆搴撲换鍔$鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<TaskOutput>> Page([FromQuery] WmsTaskSearch input)
+ {
+ var wmsTasks = await _wmsTaskRep.DetachedEntities
+ .Where(u => u.AreaName.Contains("缁濈紭绔嬪簱"))
+ .Where(!string.IsNullOrEmpty(input.TaskNo), u => EF.Functions.Like(u.TaskNo, $"%{input.TaskNo.Trim()}%"))
+ .Where(input.TaskModel != null, u => u.TaskModel == input.TaskModel)
+ .Where(input.TaskType != null, u => u.TaskType == input.TaskType)
+ .Where(input.TaskStatus != null, u => u.TaskStatus == input.TaskStatus)
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.AreaName), u => u.AreaName == input.AreaName)
+ .Where(!string.IsNullOrEmpty(input.OrderNo), u => EF.Functions.Like(u.OrderNo, $"%{input.OrderNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.SourcePlace), u => EF.Functions.Like(u.SourcePlace, $"%{input.SourcePlace.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ToPlace), u => EF.Functions.Like(u.ToPlace, $"%{input.ToPlace.Trim()}%"))
+ .Where(input.Aisle != null, u => u.Aisle == input.Aisle)
+ .OrderBy(PageInputOrder.OrderBuilder(input))
+ .ProjectToType<TaskOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsTasks;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠嚭鍏ュ簱浠诲姟绠$悊鍒楄〃
+ /// </summary>
+ /// <param name="input">鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁�</param>
+ /// <returns>(鍑哄叆搴撲换鍔$鐞�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<TaskOutput>> ListNonPageAsync([FromQuery] WmsTaskSearchNonPage input)
+ {
+ var pTaskNo = input.TaskNo?.Trim() ?? "";
+ var pTaskModel = input.TaskModel;
+ var pTaskType = input.TaskType;
+ var pTaskLevel = input.TaskLevel;
+ var pTaskStatus = input.TaskStatus;
+ var pIsRead = input.IsRead;
+ var pContainerCode = input.ContainerCode?.Trim() ?? "";
+ var pAreaName = input.AreaName?.Trim() ?? "";
+ var pOrderNo = input.OrderNo?.Trim() ?? "";
+ var pTaskDodeviceStatus = input.TaskDodeviceStatus;
+ var wmsTasks = await _wmsTaskRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pTaskNo), u => EF.Functions.Like(u.TaskNo, $"%{pTaskNo}%"))
+ .Where(pTaskModel != null, u => u.TaskModel == pTaskModel)
+ .Where(pTaskType != null, u => u.TaskType == pTaskType)
+ .Where(pTaskLevel != null, u => u.TaskLevel == pTaskLevel)
+ .Where(pTaskStatus != null, u => u.TaskStatus == pTaskStatus)
+ .Where(pIsRead != null, u => u.IsRead == pIsRead)
+ .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+ .Where(!string.IsNullOrEmpty(pAreaName), u => u.AreaName == pAreaName)
+ .Where(!string.IsNullOrEmpty(pOrderNo), u => EF.Functions.Like(u.OrderNo, $"%{pOrderNo}%"))
+ .Where(pTaskDodeviceStatus != null, u => u.TaskDodeviceStatus == pTaskDodeviceStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<TaskOutput>()
+ .ToListAsync();
+ return wmsTasks;
+ }
+
+ /// <summary>
+ /// 澧炲姞鍑哄叆搴撲换鍔$鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ [NonAction]
+ public async Task Add(AddWmsTaskInput input)
+ {
+ var wmsTask = input.Adapt<WmsTask>();
+ await _wmsTaskRep.InsertAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍑哄叆搴撲换鍔$鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsTaskInput input)
+ {
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsTaskRep.DeleteAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍑哄叆搴撲换鍔$鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsTaskInput input)
+ {
+ var isExist = await _wmsTaskRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsTask = input.Adapt<WmsTask>();
+ await _wmsTaskRep.UpdateAsync(wmsTask, ignoreNullValues: true);
+ }
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("finish")]
+ [UnitOfWork]
+ public async Task Finish([FromBody] WmsTaskFinishInput input)
+ {
+ //鏌ヨ浠诲姟
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+ // 鏌ヨ娣峰悎鏂欏簱鍖轰俊鎭�
+ var wmsArea = await _wmsAreaRep.FirstOrDefaultAsync(u => u.AreaName.Contains("缁濈紭绔嬪簱"));
+ if (wmsArea == null) throw Oops.Oh("搴撳尯涓嶅瓨鍦紒");
+
+ // 鏌ヨ鎵樼洏淇℃伅,鍛兼晳AGV鏃朵細杩涜缁勭洏鎿嶄綔
+ var wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == wmsTask.ContainerCode);
+ if (wmsContainer == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦紒");
+
+ var statusList = new List<TaskStatusEnum> { TaskStatusEnum.WEIZHIXING, TaskStatusEnum.ZHIXINGZHONG , TaskStatusEnum .DAIZHIXING};
+ if (!statusList.Contains(wmsTask.TaskStatus)) throw Oops.Oh("鍙湁鏈墽琛屽拰鎵ц涓殑浠诲姟鎵嶈兘寮哄埗瀹屾垚锛�");
+
+ if (wmsTask.TaskType == TaskType.RUKU) // 鍏ュ簱浠诲姟
+ {
+ // 鏌ヨ搴撲綅淇℃伅 闅忔満鍒嗛厤搴撲綅
+ var wmsPlace = new WmsPlace();
+ if (string.IsNullOrEmpty(wmsTask.ToPlace))
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.Islock == YesOrNot.N && u.PlaceStatus == PlaceStatus.KONGXIAN);
+ else
+ wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.AreaId == wmsArea.Id && u.PlaceCode == wmsTask.ToPlace);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+ if (wmsPlace.PlaceStatus != PlaceStatus.KONGXIAN) throw Oops.Oh("搴撲綅宸插瓨璐�!");
+ // 鏇存柊搴撲綅鐘舵�佷负鈥滃瓨璐р��
+ wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ if (wmsTask.Description == "绌烘墭") wmsPlace.EmptyContainer = YesOrNot.Y; //鏄惁绌烘墭
+ else wmsPlace.EmptyContainer = YesOrNot.N;
+
+ // 鍒涘缓鎵樼洏鍙峰簱浣嶅叧绯昏〃
+ var wmsContainerPlaceModel = new WmsContainerPlace()
+ {
+ PlaceId = wmsPlace.Id,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ ContainerPlaceStatus = CommonStatus.ENABLE
+ };
+ await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+ // 鏇存柊搴撳瓨
+ var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+ .Where(p => p.OrderNo ==wmsTask.OrderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+ foreach (var item in wmsMaterialContainerList)
+ {
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wmsContainer.ContainerCode
+ && p.MaterialBatch == item.MaterialBatch);
+ if (wmsMaterialStock != null)
+ {
+ wmsMaterialStock.Source = RuKuSourceEnum.KONGTUO;
+ wmsMaterialStock.AreaId = wmsPlace.AreaId;
+ wmsMaterialStock.PlaceCode = wmsPlace.PlaceCode;
+ wmsMaterialStock.StockNumber += item.BindQuantity;
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+ else
+ {
+ wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = item.MaterialNo,
+ MaterialType = MaterialType.CHENGPING,
+ MaterialName = item.MaterialName,
+ MaterialSpec = item.MaterialSpec,
+ MaterialBatch = item.MaterialBatch,
+ MaterialDensity = item.MaterialDensity,
+ StockNumber = 1,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.KONGTUO,
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ }
+ // 绌烘枡绠卞叆搴�
+ if (wmsTask.OrderNo == "N/A")
+ {
+ var wmsMaterialStock = new WmsMaterialStock()
+ {
+ InspectionMethod = MaterialInspection.MIANJIAN,
+ UnitType = UnitType.ZHONGLIANG,
+ UnitNo = UnitNoType.T,
+ MaterialNo = "N/A",
+ MaterialType = MaterialType.KONGTUO,
+ MaterialName = "N/A",
+ MaterialSpec = "N/A",
+ MaterialBatch = "N/A",
+ MaterialDensity = "N/A",
+ StockNumber = 0,
+ PlaceCode = wmsPlace.PlaceCode,
+ ContainerId = wmsContainer.Id,
+ ContainerCode = wmsContainer.ContainerCode,
+ AreaId = wmsPlace.AreaId,
+ Source = RuKuSourceEnum.KONGTUO,
+ };
+ await _wmsMaterialStockRep.InsertAsync(wmsMaterialStock);
+ }
+ // 鏇存柊浠诲姟鐘舵�併�佽澶囦换鍔$姸鎬併�佹墭鐩樼紪鍙枫�佺洰鏍囦綅缃�佸簱鍖哄悕绉�
+ wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ wmsTask.ContainerCode = wmsContainer.ContainerCode;
+ wmsTask.ToPlace = wmsPlace.PlaceCode;
+ wmsTask.AreaName = wmsPlace.WmsArea.AreaName;
+ wmsTask.IsRead = true;
+
+ // 鏇存柊搴撲綅鐘舵�佷负瀛樿揣
+ wmsPlace.PlaceStatus = PlaceStatus.CUNHUO;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // 鏇存柊鎵樼洏鐘舵�佷负鈥滃簱浣嶁��
+ wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+ else if (wmsTask.TaskType == TaskType.CHUKU) //鍑哄簱浠诲姟
+ {
+ var wmsMaterialContainerList = new List<WmsMaterialContainer>();
+ // 鏌ヨ搴撲綅淇℃伅
+ var wmsPlace = await _wmsPlaceRep.FirstOrDefaultAsync(u => u.PlaceCode == wmsTask.SourcePlace);
+ if (wmsPlace == null) throw Oops.Oh("搴撲綅淇℃伅涓嶅瓨鍦�!");
+ if (wmsPlace.Islock == YesOrNot.Y) throw Oops.Oh("搴撲綅琚攣瀹�!");
+ //if (wmsPlace != null && wmsPlace.PlaceStatus != PlaceStatus.DAICHU) throw Oops.Oh("搴撲綅寮傚父璐�!");
+
+ // 鏌ヨ鏄惁宸插瓨鍦ㄦ墭鐩樹笌搴撲綅鐨勫叧绯�
+ var wmsContainerPlace = await _wmsContainerPlaceRep.FirstOrDefaultAsync(z => z.PlaceId == wmsPlace.Id && z.PlaceCode == wmsPlace.PlaceCode
+ && z.ContainerCode == wmsTask.ContainerCode && z.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (wmsContainerPlace == null) throw Oops.Oh("搴撲綅瀹瑰櫒鍏崇郴涓嶅瓨鍦�!");
+
+ // 涓嶆槸绌烘墭鎵嶄細鏈夌粍鐩樺叧绯�
+ if (wmsPlace.EmptyContainer == YesOrNot.N)
+ {
+ // 妫�鏌ョ墿鏂欎笌绌烘墭鍙峰叧绯�
+ wmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ if (wmsMaterialContainerList.Count <= 0) throw Oops.Oh("鎵樼洏鍙蜂笌鐗╂枡鍏崇郴涓嶅瓨鍦�!");
+
+ }
+ else
+ {
+ // 鏇存柊绌烘枡绠卞簱瀛�
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsContainer.ContainerCode);
+ if (wmsMaterialStock.Source == RuKuSourceEnum.KONGTUO)
+ {
+ await _wmsMaterialStockRep.DeleteAsync(wmsMaterialStock);
+ }
+ }
+
+ //鏋勫缓鍑哄簱鐗╂枡鍜屽懆杞鍙峰叧绯�
+ var orderNo = "N/A";
+ if (wmsMaterialContainerList.Count > 0) orderNo = YitIdHelper.NextId().ToString();
+
+ foreach (var wmsMaterialContaine in wmsMaterialContainerList)
+ {
+ //鏇存柊鐘舵�佷负鈥濆垹闄も��
+ wmsMaterialContaine.BindStatus = CommonStatus.DELETED;
+ await _wmsMaterialContainerRep.UpdateNowAsync(wmsMaterialContaine);
+
+ //鏂板缁勭洏缁戝畾璁板綍 姝e父
+ var addWmsMaterialContainer = wmsMaterialContaine;
+ addWmsMaterialContainer.Id = YitIdHelper.NextId();
+ addWmsMaterialContainer.OrderNo = orderNo;
+ addWmsMaterialContainer.BindStatus = CommonStatus.ENABLE;
+ await _wmsMaterialContainerRep.InsertNowAsync(addWmsMaterialContainer);
+ // 杩欓噷娌℃湁鍒嗘嫞鎿嶄綔鐩存帴鏇存柊搴撳瓨淇℃伅
+ var wmsMaterialStock = await _wmsMaterialStockRep.FirstOrDefaultAsync(u => u.ContainerCode == wmsMaterialContaine.ContainerCode);
+ wmsMaterialStock.PlaceCode = "N/A";
+ wmsMaterialStock.StockNumber -= wmsMaterialContaine.BindQuantity;
+ await _wmsMaterialStockRep.UpdateAsync(wmsMaterialStock);
+ }
+
+ //鏇存柊浠诲姟鐘舵��
+ wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ wmsTask.IsRead = true;
+
+ // 绂佺敤鎵樼洏搴撲綅鍏崇郴
+ wmsContainerPlace.ContainerPlaceStatus = CommonStatus.DELETED;
+ await _wmsContainerPlaceRep.UpdateAsync(wmsContainerPlace);
+
+ // 鏇存柊搴撲綅鐘舵�佷负鈥滅┖闂测��
+ wmsPlace.PlaceStatus = PlaceStatus.KONGXIAN;
+ await _wmsPlaceRep.UpdateAsync(wmsPlace);
+
+ // 鏇存柊鎵樼洏鐘舵�佷负鈥滅┖闂测��
+ wmsContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ await _wmsContainerRep.UpdateAsync(wmsContainer);
+ }
+ else //绉诲簱浠诲姟
+ {
+
+ }
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鏇存柊浼樺厛绾�(鍚戜笂)
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("upwardTaskLevel")]
+ public async Task UpwardTaskLevel([FromBody] UpdateTaskLevelInput input)
+ {
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+ if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏇存柊浠诲姟浼樺厛绾э紒");
+ if(wmsTask.TaskLevel==5) throw Oops.Oh("浠诲姟宸蹭负鏈�楂樼骇鍒紒");
+ wmsTask.TaskLevel += 1;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鏇存柊浼樺厛绾�(鍚戜笅)
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("downTaskLevel")]
+ public async Task DownTaskLevel([FromBody] UpdateTaskLevelInput input)
+ {
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+ if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏇存柊浠诲姟浼樺厛绾э紒");
+ if (wmsTask.TaskLevel == 1) throw Oops.Oh("浠诲姟宸蹭负鏈�浣庣骇鍒紒");
+ wmsTask.TaskLevel -= 1;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+
+ /// <summary>
+ /// 鍙栨秷
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("CancelTask")]
+ public async Task CancelTask([FromBody] CancelInput input)
+ {
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+ if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鍙栨秷浠诲姟锛�");
+
+ wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
+ wmsTask.IsRead=true;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+
+
+ /// <summary>
+ /// 鎵归噺鍙栨秷
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("batchCancel")]
+ public async Task BatchCancel([FromBody] BatchCancelInput input)
+ {
+ int length = input.Id.Count;
+ for (int i = 0; i < length; i++)
+ {
+ long Id = input.Id[i];
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+ if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鍙栨秷浠诲姟锛�");
+
+ wmsTask.TaskStatus = TaskStatusEnum.QUXIAO;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺鏆傚仠
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("batchBreak")]
+ public async Task BatchBreak([FromBody] BatchBreakInput input)
+ {
+ int length = input.Id.Count;
+ for (int i = 0; i < length; i++)
+ {
+ long Id = input.Id[i];
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+ if (wmsTask.TaskStatus != TaskStatusEnum.WEIZHIXING) throw Oops.Oh("鍙湁鏈墽琛岀殑浠诲姟鎵嶈兘鏆傚仠浠诲姟锛�");
+
+ wmsTask.TaskStatus = TaskStatusEnum.ZANTING;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+ }
+
+ /// <summary>
+ /// 鎵归噺缁х画
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("batchContinue")]
+ public async Task BatchContinue([FromBody] BatchContinueInput input)
+ {
+ int length = input.Id.Count;
+ for (int i = 0; i < length; i++)
+ {
+ long Id = input.Id[i];
+ var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Id == Id);
+ if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦紒");
+
+ if (wmsTask.TaskStatus != TaskStatusEnum.ZANTING) throw Oops.Oh("鍙湁鏆傚仠鐨勪换鍔℃墠鑳界户缁换鍔★紒");
+
+ wmsTask.TaskStatus = TaskStatusEnum.WEIZHIXING;
+ await _wmsTaskRep.UpdateAsync(wmsTask);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍑哄叆搴撲换鍔$鐞�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<TaskOutput> Get([FromQuery] QueryeWmsTaskInput input)
+ {
+ return (await _wmsTaskRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<TaskOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍑哄叆搴撲换鍔$鐞嗗垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<TaskOutput>> List([FromQuery] TaskInput input)
+ {
+ return await _wmsTaskRep.DetachedEntities.ProjectToType<TaskOutput>().ToListAsync();
+ }
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍑哄叆搴撲换鍔$鐞嗗姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<TaskOutput> wmsTaskList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, TaskOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsTaskList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsTask>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if (!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsTask, TaskOutput>(selectKeys);
+ List<WmsTask> updates = new();
+ List<WmsTask> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsTaskExistSubList = _wmsTaskRep.Where(filter).Select(selector).ToList();
+ wmsTaskExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+
+ foreach (var wmsTask in wmsTaskList)
+ {
+ if (wmsTask.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTask.Adapt<WmsTask>());
+ }
+ else
+ {
+ adds.Add(wmsTask.Adapt<WmsTask>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTaskRep.Update(x));
+
+ var maxId = _wmsTaskRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsTask>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+ }
+
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍑哄叆搴撲换鍔$鐞嗙殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍑哄叆搴撲换鍔$鐞嗘煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鍑哄叆搴撲换鍔$鐞嗭紙鐔熷寲搴擄級鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsTaskSearchNonPage input)
+ {
+ var wmsTaskList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsTaskList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTask", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs
new file mode 100644
index 0000000..04e4d74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderDto.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 杞偍鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsDumpOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ public string Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs
new file mode 100644
index 0000000..e409537
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderInput.cs
@@ -0,0 +1,197 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 杞偍鍗曟煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsDumpOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ public virtual string Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 杞偍鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsDumpOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ public virtual string? Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 杞偍鍗曡緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsDumpOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ public virtual string Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsDumpOrderInput : WmsDumpOrderInput
+ {
+ }
+
+ public class DeleteWmsDumpOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsDumpOrderInput : WmsDumpOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsDumpOrderInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏄庣粏鍙傛暟
+ /// </summary>
+ public class DumpPageDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs
new file mode 100644
index 0000000..220a10a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Dto/WmsDumpOrderOutput.cs
@@ -0,0 +1,149 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 杞偍鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsDumpOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ public string Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 瀵瑰簲YiGo绯荤粺
+ /// </summary>
+ public List<DumpPageDetailOutput> Dtls { get; set; }
+ }
+ /// <summary>
+ /// 杞偍鍗曡鎯呰緭鍑哄弬鏁�
+ /// </summary>
+ public class DumpPageDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨椤圭洰缂栫爜
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鏂板簱瀛橀」鐩紪鐮�
+ /// </summary>
+ public string Projectcode_To { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; }
+ }
+
+ /// <summary>
+ /// yigo杞偍鍗曡幏鍙栧弬鏁�
+ /// </summary>
+ public class WmsDumpOrderOutputByYiGO
+ {
+ public bool Status { get; set; }
+
+ public List<WmsDumpOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs
new file mode 100644
index 0000000..dd5dced
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/IWmsDumpOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsDumpOrderService
+ {
+ Task Add(AddWmsDumpOrderInput input);
+ Task Delete(DeleteWmsDumpOrderInput input);
+ Task<WmsDumpOrderOutput> Get([FromQuery] QueryeWmsDumpOrderInput input);
+ Task<List<WmsDumpOrderOutput>> List([FromQuery] WmsDumpOrderInput input);
+ Task<PageResult<WmsDumpOrderOutput>> Page([FromQuery] WmsDumpOrderSearch input);
+ Task Update(UpdateWmsDumpOrderInput input);
+
+ Task<List<WmsDumpOrderOutput>> ListNonPageAsync([FromQuery] WmsDumpOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs
new file mode 100644
index 0000000..618bb11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/Map/WmsDumpOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsDumpOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsDumpOrderInput, WmsDumpOrder>()
+ ;
+ config.ForType<UpdateWmsDumpOrderInput, WmsDumpOrder>()
+ ;
+ config.ForType<WmsDumpOrder, WmsDumpOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs
new file mode 100644
index 0000000..3e73312
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsDumpOrder/WmsDumpOrderService.cs
@@ -0,0 +1,335 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 杞偍鍗曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("杞偍鍗�", Name = "WmsDumpOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsDumpOrderService : IWmsDumpOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsDumpOrder,MasterDbContextLocator> _wmsDumpOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly IRepository<WmsDumpOrderDetails, MasterDbContextLocator> _wmsDumpOrderDetailsRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+ public WmsDumpOrderService(
+ IRepository<WmsDumpOrder,MasterDbContextLocator> wmsDumpOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,IRepository<WmsDumpOrderDetails, MasterDbContextLocator> wmsDumpOrderDetailsRep
+ , ISysExcelTemplateService sysExcelTemplateService
+ , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+ )
+ {
+ _wmsDumpOrderRep = wmsDumpOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsDumpOrderDetailsRep = wmsDumpOrderDetailsRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsDumpOrderOutput>> Page([FromQuery] WmsDumpOrderSearch input)
+ {
+ var wmsDumpOrders = await _wmsDumpOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(input.Billdate != null, u => u.Billdate == input.Billdate)
+ .Where(!string.IsNullOrEmpty(input.Creator), u => EF.Functions.Like(u.Creator, $"%{input.Creator.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsDumpOrderSearch>(input))
+ .ProjectToType<WmsDumpOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsDumpOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<DumpPageDetailOutput>> PageDetail([FromQuery] DumpPageDetailInput input)
+ {
+ var wmsOrders = await _wmsDumpOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<DumpPageDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 澧炲姞杞偍鍗�(yigo绯荤粺鑾峰彇)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("GetDumpOrder")]
+ [UnitOfWork]
+ public async Task GetDumpOrder()
+ {
+ //鑾峰彇鍏ュ簱閫氱煡鍗�
+ string url = App.Configuration["YiGoWebApi:QueryAllocate"];
+ var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+ var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+ //鍐欐棩蹇楁枃浠�
+ //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+ var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+ .SetBody(new Dictionary<string, object> {
+ { "Billdate_S", Billdate_S },
+ { "Billdate_E", Billdate_E},
+ }, "application/json").PostAsStringAsync();
+ var Data = response.FromJson<WmsDumpOrderOutputByYiGO>();
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("杞偍"));
+ foreach (var item in Data.Data)
+ {
+ item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ var wmsDumpOrder = item.Adapt<WmsDumpOrder>();
+ //鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勫崟鎹彿
+ var isExcit = await _wmsDumpOrderRep.AnyAsync(x => x.NO == item.NO);
+ if (!isExcit)
+ {
+ wmsDumpOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsDumpOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ await _wmsDumpOrderRep.InsertNowAsync(wmsDumpOrder);
+ foreach (var item1 in item.Dtls)
+ {
+ var wmsDumpOrderDeatail = item1.Adapt<WmsDumpOrderDetails>();
+ wmsDumpOrderDeatail.OrderId = item.Id;
+ await _wmsDumpOrderDetailsRep.InsertNowAsync(wmsDumpOrderDeatail);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鎵ц杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("ExecuteDumpOrder")]
+ public async Task ExecuteDumpOrder([FromQuery] DumpPageDetailInput input)
+ {
+ var wmsOrders = await _wmsDumpOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<DumpPageDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈣浆鍌ㄥ崟鍒楄〃
+ /// </summary>
+ /// <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>(杞偍鍗�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsDumpOrderOutput>> ListNonPageAsync([FromQuery] WmsDumpOrderSearchNonPage input)
+ {
+ var pNO = input.NO?.Trim() ?? "";
+ var pBilldate = input.Billdate;
+ var pCreator = input.Creator?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pOrderStatus = input.OrderStatus;
+ var wmsDumpOrders = await _wmsDumpOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(pBilldate != null, u => u.Billdate == pBilldate)
+ .Where(!string.IsNullOrEmpty(pCreator), u => EF.Functions.Like(u.Creator, $"%{pCreator}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsDumpOrderOutput>()
+ .ToListAsync();
+ return wmsDumpOrders;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsDumpOrderInput input)
+ {
+ var wmsDumpOrder = input.Adapt<WmsDumpOrder>();
+ await _wmsDumpOrderRep.InsertAsync(wmsDumpOrder);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsDumpOrderInput input)
+ {
+ var wmsDumpOrder = await _wmsDumpOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsDumpOrderRep.DeleteAsync(wmsDumpOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsDumpOrderInput input)
+ {
+ var isExist = await _wmsDumpOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsDumpOrder = input.Adapt<WmsDumpOrder>();
+ await _wmsDumpOrderRep.UpdateAsync(wmsDumpOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇杞偍鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsDumpOrderOutput> Get([FromQuery] QueryeWmsDumpOrderInput input)
+ {
+ return (await _wmsDumpOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsDumpOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇杞偍鍗曞垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsDumpOrderOutput>> List([FromQuery] WmsDumpOrderInput input)
+ {
+ return await _wmsDumpOrderRep.DetachedEntities.ProjectToType<WmsDumpOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆杞偍鍗曞姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsDumpOrderOutput> wmsDumpOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsDumpOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsDumpOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsDumpOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsDumpOrder, WmsDumpOrderOutput>(selectKeys);
+ List<WmsDumpOrder> updates = new();
+ List<WmsDumpOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsDumpOrderExistSubList = _wmsDumpOrderRep.Where(filter).Select(selector).ToList();
+ wmsDumpOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsDumpOrder in wmsDumpOrderList)
+ {
+ if (wmsDumpOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsDumpOrder.Adapt<WmsDumpOrder>());
+ }
+ else
+ {
+ adds.Add(wmsDumpOrder.Adapt<WmsDumpOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsDumpOrderRep.Update(x));
+
+
+ var maxId = _wmsDumpOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsDumpOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇杞偍鍗曠殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁杞偍鍗曟煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">杞偍鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsDumpOrderSearchNonPage input)
+ {
+ var wmsDumpOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsDumpOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsDumpOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs
new file mode 100644
index 0000000..f495273
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderDto.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�璐у崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsGoodsReturnOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs
new file mode 100644
index 0000000..a11b19d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderInput.cs
@@ -0,0 +1,319 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 閫�璐у崟鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsGoodsReturnOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public virtual Admin.NET.Core.GoodsReturnStatus? GoodsReturnStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�璐у崟涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsGoodsReturnOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string? Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string? Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string? WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string? WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public virtual Admin.NET.Core.GoodsReturnStatus? GoodsReturnStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�璐у崟杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsGoodsReturnOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public virtual Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsGoodsReturnOrderInput : WmsGoodsReturnOrderInput
+ {
+ }
+
+ public class DeleteWmsGoodsReturnOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsGoodsReturnOrderInput : WmsGoodsReturnOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsGoodsReturnOrderInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 閫�璐у崟鑾峰彇鏄庣粏鍙傛暟
+ /// </summary>
+ public class GoodsReturnOrdePageDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+ }
+
+ /// <summary>
+ /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勫弬鏁�
+ /// </summary>
+ public class ReturnGoodsReturnOrderInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// YIGO绯荤粺id
+ /// </summary>
+ public long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱閫氱煡鍗曞彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// WMS閫�璐у崟鍙�
+ /// </summary>
+ public string WMSNO { get; set; }
+
+ /// <summary>
+ ///涓嬫灦鏃堕棿
+ /// </summary>
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫�璐ц鎯�
+ /// </summary>
+ public List<ReturnGoodsReturnOrderInputDetail> Dtls { get; set; }
+ }
+
+ /// <summary>
+ /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ /// </summary>
+ public class ReturnGoodsReturnOrderInputDetail
+ {
+ /// <summary>
+ /// OID
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 閲嶉噺
+ /// </summary>
+ public decimal SumWeight { get; set; }
+
+ /// <summary>
+ /// 搴撳尯
+ /// </summary>
+ public string DestStoreareacode { get; set; }
+
+ /// <summary>
+ /// 鍌ㄤ綅
+ /// </summary>
+ public string DestLocationcode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs
new file mode 100644
index 0000000..703954e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Dto/WmsGoodsReturnOrderOutput.cs
@@ -0,0 +1,233 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�璐у崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsGoodsReturnOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public Admin.NET.Core.GoodsReturnStatus GoodsReturnStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 瀵瑰簲YiGo绯荤粺
+ /// </summary>
+ public List<WmsGoodsReturnOrderDetailOutput> Dtls { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�璐у崟璇︽儏杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsGoodsReturnOrderDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public ReceivingStatus ReceivingStatus { get; set; }
+ }
+
+ /// <summary>
+ /// yigo鑾峰彇閫�璐у崟杩斿洖鍙傛暟
+ /// </summary>
+ public class GetGoodsReturnOrderOutputByYiGo
+ {
+ public bool Status { get; set; }
+
+ public List<WmsGoodsReturnOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+
+ /// <summary>
+ /// 閫�璐т笅鏋惰繑鍥炲弬鏁�
+ /// </summary>
+ public class ReturnGoodsReturnOrderOutput
+ {
+
+ /// <summary>
+ /// 缁撴灉鎻忚堪
+ /// </summary>
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鐘舵��
+ /// </summary>
+ public bool Status { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs
new file mode 100644
index 0000000..cc87721
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/IWmsGoodsReturnOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsGoodsReturnOrderService
+ {
+ Task Add(AddWmsGoodsReturnOrderInput input);
+ Task Delete(DeleteWmsGoodsReturnOrderInput input);
+ Task<WmsGoodsReturnOrderOutput> Get([FromQuery] QueryeWmsGoodsReturnOrderInput input);
+ Task<List<WmsGoodsReturnOrderOutput>> List([FromQuery] WmsGoodsReturnOrderInput input);
+ Task<PageResult<WmsGoodsReturnOrderOutput>> Page([FromQuery] WmsGoodsReturnOrderSearch input);
+ Task Update(UpdateWmsGoodsReturnOrderInput input);
+
+ Task<List<WmsGoodsReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs
new file mode 100644
index 0000000..88ddf2b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/Map/WmsGoodsReturnOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsGoodsReturnOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsGoodsReturnOrderInput, WmsGoodsReturnOrder>()
+ ;
+ config.ForType<UpdateWmsGoodsReturnOrderInput, WmsGoodsReturnOrder>()
+ ;
+ config.ForType<WmsGoodsReturnOrder, WmsGoodsReturnOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs
new file mode 100644
index 0000000..badd3ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsGoodsReturnOrder/WmsGoodsReturnOrderService.cs
@@ -0,0 +1,364 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�璐у崟鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("閫�璐у崟", Name = "WmsGoodsReturnOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsGoodsReturnOrderService : IWmsGoodsReturnOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsGoodsReturnOrder,MasterDbContextLocator> _wmsGoodsReturnOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsGoodsReturnOrderDetails, MasterDbContextLocator> _wmsGoodsReturnOrderDetailsRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+
+ public WmsGoodsReturnOrderService(
+ IRepository<WmsGoodsReturnOrder,MasterDbContextLocator> wmsGoodsReturnOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ , IRepository<WmsGoodsReturnOrderDetails, MasterDbContextLocator> wmsGoodsReturnOrderDetailsRep
+ , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+ )
+ {
+ _wmsGoodsReturnOrderRep = wmsGoodsReturnOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsGoodsReturnOrderDetailsRep = wmsGoodsReturnOrderDetailsRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ閫�璐у崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsGoodsReturnOrderOutput>> Page([FromQuery] WmsGoodsReturnOrderSearch input)
+ {
+ var wmsGoodsReturnOrders = await _wmsGoodsReturnOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+ .Where(input.GoodsReturnStatus != null, u => u.GoodsReturnStatus == input.GoodsReturnStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsGoodsReturnOrderSearch>(input))
+ .ProjectToType<WmsGoodsReturnOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsGoodsReturnOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsGoodsReturnOrderDetailOutput>> PageDetail([FromQuery] GoodsReturnOrdePageDetailInput input)
+ {
+ var wmsOrders = await _wmsGoodsReturnOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsGoodsReturnOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫�璐у崟(yigo绯荤粺)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("GetGoodsReturnOrder")]
+ public async Task GetGoodsReturnOrder()
+ {
+ //鑾峰彇閫�搴撳崟
+ string url = App.Configuration["YiGoWebApi:QueryBackNotice"];
+ var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+ var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+ //鍐欐棩蹇楁枃浠�
+ //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+ var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+ .SetBody(new Dictionary<string, object> {
+ { "Billdate_S", Billdate_S },
+ { "Billdate_E", Billdate_E},
+ }, "application/json").PostAsStringAsync();
+ var Data = response.FromJson<GetGoodsReturnOrderOutputByYiGo>();
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("閫�璐у嚭搴�"));
+ foreach (var item in Data.Data)
+ {
+ item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ var wmsGoodsReturnOrder = item.Adapt<WmsGoodsReturnOrder>();
+ var isExcit = await _wmsGoodsReturnOrderRep.AnyAsync(x => x.NO == item.NO);
+ if (!isExcit)
+ {
+ wmsGoodsReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsGoodsReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ await _wmsGoodsReturnOrderRep.InsertNowAsync(wmsGoodsReturnOrder);
+ foreach (var item1 in item.Dtls)
+ {
+ var WmsGoodsReturnOrderDetail = item1.Adapt<WmsGoodsReturnOrderDetails>();
+ WmsGoodsReturnOrderDetail.OrderId = item.Id;
+ await _wmsGoodsReturnOrderDetailsRep.InsertNowAsync(WmsGoodsReturnOrderDetail);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 閫�璐т笅鏋舵帴鍙�(yigo绯荤粺)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("ReturnGoodsReturnOrder")]
+ [UnifyResult(typeof(object))]
+ [UnitOfWork]
+ public async Task<object> ReturnGoodsReturnOrder([FromBody] ReturnGoodsReturnOrderInput input)
+ {
+ try
+ {
+ //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+ string url = App.Configuration["YiGoWebApi:CreateTXRe211"];
+ //鑾峰彇涓诲崟鎹�
+ var wmsGoodsReturnOrderModal = await _wmsGoodsReturnOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+ if (wmsGoodsReturnOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+ //鏀瑰彉涓诲崟鎹姸鎬�
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsGoodsReturnOrderModal.NO}][url:{url}]");
+
+ var response = await url.SetHttpMethod(HttpMethod.Post)
+ .SetBody(input, "application/json")
+ .PostAsAsync<ReturnGoodsReturnOrderOutput>();
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsGoodsReturnOrderModal.NO}][response:{response.ToJson()}]");
+
+ return XnRestfulResultProvider.RESTfulResult(response);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ }
+ }
+
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈤��璐у崟鍒楄〃
+ /// </summary>
+ /// <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+ /// <returns>(閫�璐у崟)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsGoodsReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input)
+ {
+ var pNO = input.NO?.Trim() ?? "";
+ var pVendorcode = input.Vendorcode?.Trim() ?? "";
+ var pVendorname = input.Vendorname?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+ var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+ var pGoodsReturnStatus = input.GoodsReturnStatus;
+ var wmsGoodsReturnOrders = await _wmsGoodsReturnOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%"))
+ .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%"))
+ .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%"))
+ .Where(pGoodsReturnStatus != null, u => u.GoodsReturnStatus == pGoodsReturnStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsGoodsReturnOrderOutput>()
+ .ToListAsync();
+ return wmsGoodsReturnOrders;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞閫�璐у崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsGoodsReturnOrderInput input)
+ {
+ var wmsGoodsReturnOrder = input.Adapt<WmsGoodsReturnOrder>();
+ await _wmsGoodsReturnOrderRep.InsertAsync(wmsGoodsReturnOrder);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎閫�璐у崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsGoodsReturnOrderInput input)
+ {
+ var wmsGoodsReturnOrder = await _wmsGoodsReturnOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsGoodsReturnOrderRep.DeleteAsync(wmsGoodsReturnOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊閫�璐у崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsGoodsReturnOrderInput input)
+ {
+ var isExist = await _wmsGoodsReturnOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsGoodsReturnOrder = input.Adapt<WmsGoodsReturnOrder>();
+ await _wmsGoodsReturnOrderRep.UpdateAsync(wmsGoodsReturnOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫�璐у崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsGoodsReturnOrderOutput> Get([FromQuery] QueryeWmsGoodsReturnOrderInput input)
+ {
+ return (await _wmsGoodsReturnOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsGoodsReturnOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫�璐у崟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsGoodsReturnOrderOutput>> List([FromQuery] WmsGoodsReturnOrderInput input)
+ {
+ return await _wmsGoodsReturnOrderRep.DetachedEntities.ProjectToType<WmsGoodsReturnOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆閫�璐у崟鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsGoodsReturnOrderOutput> wmsGoodsReturnOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsGoodsReturnOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsGoodsReturnOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsGoodsReturnOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsGoodsReturnOrder, WmsGoodsReturnOrderOutput>(selectKeys);
+ List<WmsGoodsReturnOrder> updates = new();
+ List<WmsGoodsReturnOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsGoodsReturnOrderExistSubList = _wmsGoodsReturnOrderRep.Where(filter).Select(selector).ToList();
+ wmsGoodsReturnOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsGoodsReturnOrder in wmsGoodsReturnOrderList)
+ {
+ if (wmsGoodsReturnOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsGoodsReturnOrder.Adapt<WmsGoodsReturnOrder>());
+ }
+ else
+ {
+ adds.Add(wmsGoodsReturnOrder.Adapt<WmsGoodsReturnOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsGoodsReturnOrderRep.Update(x));
+
+
+ var maxId = _wmsGoodsReturnOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsGoodsReturnOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇閫�璐у崟鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁閫�璐у崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">閫�璐у崟鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsGoodsReturnOrderSearchNonPage input)
+ {
+ var wmsGoodsReturnOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsGoodsReturnOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsGoodsReturnOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs
new file mode 100644
index 0000000..e3ae56f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderDto.cs
@@ -0,0 +1,119 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏄庣粏鍙傛暟
+ /// </summary>
+ public class PageDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs
new file mode 100644
index 0000000..f1e0ce8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderInput.cs
@@ -0,0 +1,329 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鍗曟嵁琛ㄦ煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍗曟嵁琛ㄤ笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string? SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string? Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string? Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string? WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string? WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string? StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string? DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string? Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string? Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍗曟嵁琛ㄨ緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsOrderInput : WmsOrderInput
+ {
+ }
+
+ public class DeleteWmsOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsOrderInput : WmsOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsOrderInput : BaseId
+ {
+
+ }
+ public class DistributeInOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public List<long> Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs
new file mode 100644
index 0000000..bc2a5e4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Dto/WmsOrderOutput.cs
@@ -0,0 +1,224 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁琛ㄨ緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍗曟嵁琛ㄨ鎯呰緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsOrderDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 妫�楠岀粨鏋�
+ /// </summary>
+ public InspectionResultsEnum InspectionResults { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs
new file mode 100644
index 0000000..d785b58
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/IWmsOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsOrderService
+ {
+ Task Add(AddWmsOrderInput input);
+ Task Delete(DeleteWmsOrderInput input);
+ Task<WmsOrderOutput> Get([FromQuery] QueryeWmsOrderInput input);
+ Task<List<WmsOrderOutput>> List([FromQuery] WmsOrderInput input);
+ Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input);
+ Task Update(UpdateWmsOrderInput input);
+
+ Task<List<WmsOrderOutput>> ListNonPageAsync([FromQuery] WmsOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs
new file mode 100644
index 0000000..e81c3ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/Map/WmsOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsOrderInput, WmsOrder>()
+ ;
+ config.ForType<UpdateWmsOrderInput, WmsOrder>()
+ ;
+ config.ForType<WmsOrder, WmsOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs
new file mode 100644
index 0000000..17111c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInOrder/WmsOrderService.cs
@@ -0,0 +1,328 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍏ュ簱閫氱煡鍗曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鍏ュ簱閫氱煡鍗�", Name = "WmsOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsOrderService : IWmsOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+
+ public WmsOrderService(
+ IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+ ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍗曟嵁琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input)
+ {
+ var wmsOrders = await _wmsOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+ .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+ .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+ .OrderBy(PageInputOrder.OrderBuilder<WmsOrderSearch>(input))
+ .ProjectToType<WmsOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsOrderDetailOutput>> PageDetail([FromQuery] PageDetailInput input)
+ {
+ var wmsOrders = await _wmsOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鎵归噺涓嬪彂鍏ュ簱鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("DistributeInOrder")]
+ [UnitOfWork]
+ public async Task DistributeInOrder(DistributeInOrderInput input)
+ {
+ // 鏌ヨ鎵�鏈夊崟鎹姸鎬佷负鈥滄挙鍥炩�濇垨鑰呪�滄湭涓嬪彂鈥濈殑淇℃伅
+ var wmsOrderList = await _wmsOrderRep.DetachedEntities.Where(u => input.Id.Contains(u.Id)
+ && (u.OrderStatus == OrderStatusEnum.CHEHUI || u.OrderStatus == OrderStatusEnum.WEIXIAFA)).ProjectToType<WmsOrder>().ToListAsync();
+ if (wmsOrderList.Count <= 0) throw Oops.Oh(errorMessage: "鏃犱笅鍙戝伐鍗曪紒");
+ //鍥犱负涓嶇煡閬撲笅鍙戝崟鎹椂锛屼竴涓墭鐩樻斁鍑犱釜鏄庣粏锛屾墍浠ユ棤娉曞垽鏂簱浣嶆槸鍚︿笉瓒筹紝鍦ㄥ叆搴撴彁浜ゆ椂鍒ゆ柇
+ lock (_lock)
+ {
+ // 淇敼鍗曟嵁鐘舵��
+ foreach (var order in wmsOrderList)
+ {
+ // 鏇存柊鍗曟嵁鐘舵�佷负鈥滃凡涓嬪彂鈥�
+ order.OrderStatus = OrderStatusEnum.YIXIAFA;
+ _wmsOrderRep.UpdateAsync(order);
+ }
+ }
+ }
+
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠崟鎹〃鍒楄〃
+ /// </summary>
+ /// <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>(鍗曟嵁琛�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsOrderOutput>> ListNonPageAsync([FromQuery] WmsOrderSearchNonPage input)
+ {
+ var pNO = input.NO?.Trim() ?? "";
+ var pSourceBillNo = input.SourceBillNo?.Trim() ?? "";
+ var pVendorcode = input.Vendorcode?.Trim() ?? "";
+ var pVendorname = input.Vendorname?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+ var pTradeMode = input.TradeMode;
+ var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+ var pStoreRoomname = input.StoreRoomname?.Trim() ?? "";
+ var pDeclarationCode = input.DeclarationCode?.Trim() ?? "";
+ var pMajorname = input.Majorname?.Trim() ?? "";
+ var wmsOrders = await _wmsOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(!string.IsNullOrEmpty(pSourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{pSourceBillNo}%"))
+ .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%"))
+ .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%"))
+ .Where(pTradeMode != null, u => u.TradeMode == pTradeMode)
+ .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%"))
+ .Where(!string.IsNullOrEmpty(pStoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{pStoreRoomname}%"))
+ .Where(!string.IsNullOrEmpty(pDeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{pDeclarationCode}%"))
+ .Where(!string.IsNullOrEmpty(pMajorname), u => EF.Functions.Like(u.Majorname, $"%{pMajorname}%"))
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsOrderOutput>()
+ .ToListAsync();
+ return wmsOrders;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞鍗曟嵁琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsOrderInput input)
+ {
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+ var wmsOrder = input.Adapt<WmsOrder>();
+ wmsOrder.SOID = 66666;
+ wmsOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ wmsOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+ await _wmsOrderRep.InsertAsync(wmsOrder);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍗曟嵁琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsOrderInput input)
+ {
+ var wmsOrder = await _wmsOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsOrderRep.DeleteAsync(wmsOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍗曟嵁琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsOrderInput input)
+ {
+ var isExist = await _wmsOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsOrder = input.Adapt<WmsOrder>();
+ await _wmsOrderRep.UpdateAsync(wmsOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsOrderOutput> Get([FromQuery] QueryeWmsOrderInput input)
+ {
+ return (await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁琛ㄥ垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsOrderOutput>> List([FromQuery] WmsOrderInput input)
+ {
+ return await _wmsOrderRep.DetachedEntities.ProjectToType<WmsOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍗曟嵁琛ㄥ姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsOrderOutput> wmsOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsOrder, WmsOrderOutput>(selectKeys);
+ List<WmsOrder> updates = new();
+ List<WmsOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsOrderExistSubList = _wmsOrderRep.Where(filter).Select(selector).ToList();
+ wmsOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsOrder in wmsOrderList)
+ {
+ if (wmsOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsOrder.Adapt<WmsOrder>());
+ }
+ else
+ {
+ adds.Add(wmsOrder.Adapt<WmsOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsOrderRep.Update(x));
+
+
+ var maxId = _wmsOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍗曟嵁琛ㄧ殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁琛ㄦ煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鍗曟嵁琛ㄦ煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsOrderSearchNonPage input)
+ {
+ var wmsOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs
new file mode 100644
index 0000000..e466357
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderInput.cs
@@ -0,0 +1,93 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+
+
+ /// <summary>
+ /// 鎶ユ浼犻�掔粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ /// </summary>
+ public class InspectionDeclarationDetail
+ {
+ /// <summary>
+ /// OID
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 閲嶉噺
+ /// </summary>
+ public decimal SumWeight { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鎶ユ浼犻�掔粰yigo绯荤粺鐨勫弬鏁�
+ /// </summary>
+ public class InspectionDeclarationYiGo
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// YIGO绯荤粺id
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// WMS鏀惰揣鍗曞彿
+ /// </summary>
+ public virtual string WMSNO { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鏃堕棿
+ /// </summary>
+ public virtual string Billdate { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣璇︽儏
+ /// </summary>
+ public ICollection<InspectionDeclarationDetail> Dtls { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎶ユ缁撴灉鍙傛暟
+ /// </summary>
+ public class GetInspectionResultInput
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// SOID
+ /// </summary>
+ public long SOID { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs
new file mode 100644
index 0000000..c1e0473
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/Dto/WmsInspectOrderOutput.cs
@@ -0,0 +1,231 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎶ユ杩斿洖鍙傛暟
+ /// </summary>
+ public class InspectionDeclarationOutput
+ {
+
+ /// <summary>
+ /// 缁撴灉鎻忚堪
+ /// </summary>
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鐘舵��
+ /// </summary>
+ public bool Status { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎶ユ缁撴灉杩斿洖鍙傛暟
+ /// </summary>
+ public class GetInspectionResultOutput
+ {
+
+ /// <summary>
+ /// 缁撴灉鎻忚堪
+ /// </summary>
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鐘舵��
+ /// </summary>
+ public bool Status { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁
+ /// </summary>
+ public GetInspectionResultOutputData Data { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁
+ /// </summary>
+ public class GetInspectionResultOutputData
+ {
+
+ /// <summary>
+ /// SOID
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鍗曞彿
+ /// </summary>
+ public string ON { get; set; }
+
+ /// <summary>
+ /// 璐ㄦ鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 璐ㄦ鍗曞彿
+ /// </summary>
+ public string QCNO { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 璇︽儏
+ /// </summary>
+ public List<GetInspectionResultOutputDataDetail> Dtls { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎶ユ缁撴灉杩斿洖鏁版嵁璇︽儏
+ /// </summary>
+ public class GetInspectionResultOutputDataDetail
+ {
+
+ /// <summary>
+ /// OID
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 璐ㄦ鐘舵��
+ /// </summary>
+ public string FATQuality { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栫爜
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栫爜
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 渚涘簲閾炬壒娆″彿
+ /// </summary>
+ public string BatchNO_SCM { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs
new file mode 100644
index 0000000..87054b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/IWmsInspectOrderService.cs
@@ -0,0 +1,13 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsInspectOrderService
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs
new file mode 100644
index 0000000..5bbe480
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsInspectOrder/WmsInspectOrderService.cs
@@ -0,0 +1,173 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Microsoft.AspNetCore.Authorization;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+using Furion;
+using NetTopologySuite.Algorithm.Locate;
+using Furion.DataValidation;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎶ユ鍗�
+ /// </summary>
+ [ApiDescriptionSettings("鎶ユ鍗�", Name = "WmsInspectOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsInspectOrderService : IWmsInspectOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsReceiptOrder, MasterDbContextLocator> _wmsReceiptOrderRep;
+
+ public WmsInspectOrderService(
+ IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+ ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ ,IRepository<WmsReceiptOrder, MasterDbContextLocator> wmsReceiptOrderRe
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsReceiptOrderRep = wmsReceiptOrderRe;
+ }
+
+ /// <summary>
+ /// 鎶ユ涓婁紶
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("InspectionDeclaration")]
+ [AllowAnonymous]
+ [UnifyResult(typeof(object))]
+ public async Task<object> InspectionDeclaration([FromBody] InspectionDeclarationYiGo input)
+ {
+ try
+ {
+
+ //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+ string url = App.Configuration["YiGoWebApi:Qcnotice"];
+
+ //input.Billdate =Convert.ToDateTime(input.Billdate.ToString("yyy-MM-dd"));
+ //鑾峰彇涓诲崟鎹�
+ //var wmsReceiptOrderModal = await _wmsReceiptOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+ //if (wmsReceiptOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+ input.WMSNO = "505005063098437";
+ input.Billdate = DateTime.Now.ToString("yyyy-MM-dd");
+ // 鍐欐棩蹇楁枃浠�
+ //Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsReceiptOrderModal.NO}][url:{url}]");
+
+ var response = await url.SetHttpMethod(HttpMethod.Post)
+ .SetBody(input, "application/json")
+ .PostAsAsync<InspectionDeclarationOutput>();
+ // 鍐欐棩蹇楁枃浠�
+ //Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{wmsReceiptOrderModal.NO}][response:{response.ToJson()}]");
+
+ return XnRestfulResultProvider.RESTfulResult(response);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎶ユ缁撴灉
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("GetInspectionResult")]
+ [AllowAnonymous]
+ [UnifyResult(typeof(object))]
+ [UnitOfWork]
+ public async Task<object> GetInspectionResult([FromBody] GetInspectionResultInput input)
+ {
+ try
+ {
+ //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+ string url = App.Configuration["YiGoWebApi:QueryRQC"];
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{input.NO}][url:{url}]");
+
+ var response = await url.SetHttpMethod(HttpMethod.Post)
+ .SetBody(input, "application/json")
+ .PostAsAsync<GetInspectionResultOutput>();
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[InspectionDeclaration][鍗曟嵁鍙�:{input.NO}][response:{response.ToJson()}]");
+
+ //鑾峰彇缁撴灉鍚庯紝鍚堟牸鐢熸垚鍏ュ簱鍗曪紝娴嬭瘯闃舵鏀惰揣鍗冲彲鐢熸垚鍏ュ簱鍗�
+ return XnRestfulResultProvider.RESTfulResult();
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍏ュ簱閫氱煡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsOrderOutput>> Page([FromQuery] WmsOrderSearch input)
+ {
+ var wmsOrders = await _wmsOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+ .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+ .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+ .OrderBy(PageInputOrder.OrderBuilder<WmsOrderSearch>(input))
+ .ProjectToType<WmsOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsOrderDetailOutput>> PageDetail([FromQuery] PageDetailInput input)
+ {
+ var wmsOrders = await _wmsOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt
new file mode 100644
index 0000000..526f8ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/TextFile1.txt
@@ -0,0 +1 @@
+锘縶"Status":true,"Data":[{"NO":"ZG-IN2024011087","TradeMode":1,"Vendorcode":"913206116744352385","StoreRoomname":"浼熸湰浠撻棿","Companyname":"鎷涘晢灞�閲嶅伐锛堟睙鑻忥級鏈夐檺鍏徃","SOID":435787750,"SourceBillNo":"SHTZ202401160001","Vendorname":"鍗楅�氬垱浼熻埞鑸堕厤浠舵湁闄愬叕鍙�","WarehouseCentername":"浼熸湰WMS","Dtls":[{"tradename":"","CustomsUnitName":"","TheoreticalWeight":0.000,"SumPrice":238.94,"SingleLength":0.000,"OID":435787751,"Materialcode":"10624028","Unit":"EA","Materialname":"FPSO绠″す\\S1鍨� 閫傜敤绠″緞:桅114.3 鏉愯川:45# 琛ㄩ潰澶勭悊:鐑蹈閿� 鍘傚鏍囧噯","TACode":"CMHI-287P00000P00402M","SpecialNeeds":"","ContractCode":"CMHI-287缁煎悎鍚堝悓","Price":79.646018,"Qty":3.000000,"ItemNo":0,"ProjectCode":"00.120199.CMHI-287","CustomsNum":0.00,"CustomsPrices":0.00},{"tradename":"","CustomsUnitName":"","TheoreticalWeight":0.000,"SumPrice":146.90,"SingleLength":0.000,"OID":435787752,"Materialcode":"10564701","Unit":"EA","Materialname":"FPSO绠″す\\S3-B鍨� 閫傜敤绠″緞:桅114.3 鏉愯川:AH36 琛ㄩ潰澶勭悊:鐑蹈閿� 鍘傚鏍囧噯","TACode":"CMHI-287P00000P00402M","SpecialNeeds":"","ContractCode":"CMHI-287缁煎悎鍚堝悓","Price":146.902655,"Qty":1.000000,"ItemNo":0,"ProjectCode":"00.120199.CMHI-287","CustomsNum":0.00,"CustomsPrices":0.00}],"DeclarationCode":"","Majorname":"浼熸湰娴嬭瘯涓撲笟","Billdate":"2024-01-16","WarehouseKeepername":"闄嗘槬涓�"}],"Result":"鎴愬姛"}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs
new file mode 100644
index 0000000..c3d95e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderDto.cs
@@ -0,0 +1,107 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏀惰揣鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsReceiptOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs
new file mode 100644
index 0000000..71c8074
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderInput.cs
@@ -0,0 +1,346 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鏀惰揣鍗曟煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsReceiptOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏀惰揣鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsReceiptOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string? SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string? Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string? Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string? WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode? TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string? WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string? StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string? DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string? Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string? Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鏀惰揣鍗曡緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsReceiptOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public virtual string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public virtual string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public virtual string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public virtual string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public virtual Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public virtual string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public virtual string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public virtual string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+
+ public class AddWmsReceiptOrderInput : WmsReceiptOrderInput
+ {
+ }
+
+ public class DeleteWmsReceiptOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsReceiptOrderInput : WmsReceiptOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsReceiptOrderInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 鏀惰揣鍗曡幏鍙栨槑缁嗗弬鏁�
+ /// </summary>
+ public class ReceiptageDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+ }
+ public class PcConfirmReceiptInput
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 璇︽儏鍙傛暟
+ /// </summary>
+ public List<WmsReceiptOrderDetailOutput> GetOrderDetailOutputList { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs
new file mode 100644
index 0000000..aa0215f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Dto/WmsReceiptOrderOutput.cs
@@ -0,0 +1,278 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using SixLabors.ImageSharp;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏀惰揣鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsReceiptOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public Admin.NET.Core.TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 瀵瑰簲YiGo绯荤粺
+ /// </summary>
+ public List<WmsReceiptOrderDetailOutput> Dtls { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public ReceivingStatus ReceivingStatus { get; set; }
+
+ /// <summary>
+ /// 鎶ユ鐘舵��
+ /// </summary>
+ public InspectionStatus InspectionStatus { get; set; }
+ }
+
+
+ /// <summary>
+ /// 鏀惰揣鍗曡鎯呰緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsReceiptOrderDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// SCM鍏ュ簱閫氱煡鍗曟槑缁嗚鍞竴鏍囪瘑
+ /// </summary>
+ public long OID { get; set; }
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 閫佽揣鏁伴噺
+ /// </summary>
+ public decimal DeliveryQty { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鏁伴噺
+ /// </summary>
+ public decimal ReceivedQty { get; set; }
+
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public ReceivingStatus ReceivingStatus { get; set; }
+
+ /// <summary>
+ /// 鎶ユ鐘舵��
+ /// </summary>
+ public InspectionStatus InspectionStatus { get; set; }
+
+ }
+
+
+ public class WmsReceiptOrderOutputByYiGO
+ {
+ public bool Status { get; set; }
+
+ public List<WmsReceiptOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+ /// <summary>
+ /// 娴嬭瘯鍙傛暟
+ /// </summary>
+ public class addOrderInput
+ {
+
+ public bool Status { get; set; }
+
+ public List<WmsReceiptOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs
new file mode 100644
index 0000000..0222610
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/IWmsReceiptOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsReceiptOrderService
+ {
+ Task Add();
+ Task Delete(DeleteWmsReceiptOrderInput input);
+ Task<WmsReceiptOrderOutput> Get([FromQuery] QueryeWmsReceiptOrderInput input);
+ Task<List<WmsReceiptOrderOutput>> List([FromQuery] WmsReceiptOrderInput input);
+ Task<PageResult<WmsReceiptOrderOutput>> Page([FromQuery] WmsReceiptOrderSearch input);
+ Task Update(UpdateWmsReceiptOrderInput input);
+
+ Task<List<WmsReceiptOrderOutput>> ListNonPageAsync([FromQuery] WmsReceiptOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs
new file mode 100644
index 0000000..038d763
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/Map/WmsReceiptOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsReceiptOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsReceiptOrderInput, WmsReceiptOrder>()
+ ;
+ config.ForType<UpdateWmsReceiptOrderInput, WmsReceiptOrder>()
+ ;
+ config.ForType<WmsReceiptOrder, WmsReceiptOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs
new file mode 100644
index 0000000..1839653
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsReceiptOrder/WmsReceiptOrderService.cs
@@ -0,0 +1,415 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion.RemoteRequest.Extensions;
+using Furion;
+using Serilog;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏀惰揣鍗曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鏀惰揣鍗�", Name = "WmsReceiptOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsReceiptOrderService : IWmsReceiptOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsReceiptOrder,MasterDbContextLocator> _wmsReceiptOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> _wmsReceiptOrderDetailsRep;
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+ public WmsReceiptOrderService(
+ IRepository<WmsReceiptOrder,MasterDbContextLocator> wmsReceiptOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ , IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> wmsReceiptOrderDetailsRep
+ , IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep
+ , IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+ , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+ )
+ {
+ _wmsReceiptOrderRep = wmsReceiptOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsReceiptOrderDetailsRep = wmsReceiptOrderDetailsRep;
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鏀惰揣鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsReceiptOrderOutput>> Page([FromQuery] WmsReceiptOrderSearch input)
+ {
+ var wmsReceiptOrders = await _wmsReceiptOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.SourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{input.SourceBillNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{input.Vendorcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Vendorname), u => EF.Functions.Like(u.Vendorname, $"%{input.Vendorname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{input.WarehouseKeepername.Trim()}%"))
+ .Where(input.TradeMode != null, u => u.TradeMode == input.TradeMode)
+ .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.StoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{input.StoreRoomname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.DeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{input.DeclarationCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Majorname), u => EF.Functions.Like(u.Majorname, $"%{input.Majorname.Trim()}%"))
+ //.Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsReceiptOrderSearch>(input))
+ .ProjectToType<WmsReceiptOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsReceiptOrders;
+ }
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsReceiptOrderDetailOutput>> PageDetail([FromQuery] ReceiptageDetailInput input)
+ {
+ var wmsOrders = await _wmsReceiptOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsReceiptOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// pc纭鏀惰揣
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("PcConfirmReceipt")]
+ [UnitOfWork]
+ public async Task PcConfirmReceipt([FromBody] PcConfirmReceiptInput input)
+ {
+ if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+ //鑾峰彇涓诲崟鎹�
+ var wmsOrderModal = await _wmsReceiptOrderRep
+ .FirstOrDefaultAsync(u => u.NO == input.NO);
+ if (wmsOrderModal == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+ if (wmsOrderModal.ReceivingStatus == ReceivingStatus.YISHOUHUO) throw Oops.Oh("璇ュ崟鎹凡鏀惰揣!");
+
+ if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+ //鏇存柊鏀惰揣鏄庣粏
+ foreach (var item in input.GetOrderDetailOutputList)
+ {
+ var WmsReceiptOrderDetailsModal = item.Adapt<WmsReceiptOrderDetails>();
+ if (WmsReceiptOrderDetailsModal.ReceivedQty < WmsReceiptOrderDetailsModal.DeliveryQty)
+ {
+ WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+ }
+ else
+ {
+ WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+
+ }
+ await _wmsReceiptOrderDetailsRep.UpdateNowAsync(WmsReceiptOrderDetailsModal);
+ }
+ //鑾峰彇璇ユ敹璐у崟鎵�鏈夊崟鎹槑缁嗘暟閲�
+ var allCount = await _wmsReceiptOrderDetailsRep.Where(x => x.OrderId == wmsOrderModal.Id).ToListAsync();
+ //鑾峰彇璇ユ敹璐у崟鎵�鏈夊畬鎴愮殑鍗曟嵁鏄庣粏
+ var wcCount =await _wmsReceiptOrderDetailsRep.Where(x=>x.OrderId == wmsOrderModal.Id && x.ReceivingStatus == ReceivingStatus.YISHOUHUO).ToListAsync();
+ if (allCount.Count == wcCount.Count)
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+ }
+ else if (allCount.Count > wcCount.Count && wcCount.Count>0)
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+ }
+ else
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.WEISHOUHUO;
+ }
+ await _wmsReceiptOrderRep.UpdateAsync(wmsOrderModal);
+ //姝ゆ楠ゅ簲璇ユ斁鍦ㄨ幏鍙栨姤妫�缁撴灉鍚庝负鍚堟牸浣跨敤锛岀幇娴嬭瘯鍏堝湪鏀惰揣澧炲姞鍏ュ簱鍗�
+ //鏀惰揣瀹屾垚鏃舵坊鍔犺繘鍏ュ簱鍗�
+ //鏌ヨ鍏ュ簱鍗曟槸鍚︽湁鍗曟嵁涓�鑷寸殑锛屽鏋滄病鏈夊垯娣诲姞鍏ュ簱鍗曚富鍗曟嵁
+ var wmsOrdermodal = await _wmsOrderRep.FirstOrDefaultAsync(x => x.NO == input.NO);
+ long Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ if (wmsOrdermodal == null)
+ {
+ var insertModal = wmsOrderModal.Adapt<WmsOrder>();
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+ insertModal.Id = Id;
+ insertModal.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ insertModal.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ insertModal.OrderStatus = OrderStatusEnum.WEIXIAFA;
+ await _wmsOrderRep.InsertAsync(insertModal);
+ }
+ else
+ {
+ Id = wmsOrdermodal.Id;
+ }
+ //娣诲姞鏄庣粏
+ foreach (var item in input.GetOrderDetailOutputList)
+ {
+ var wmsOrderDetailsModal = item.Adapt<WmsOrderDetails>();
+ wmsOrderDetailsModal.OrderId = Id;
+ wmsOrderDetailsModal.Qty = item.ReceivedQty;
+ await _wmsOrderDetailsRep.InsertAsync(wmsOrderDetailsModal);
+ }
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈡敹璐у崟鍒楄〃
+ /// </summary>
+ /// <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>(鏀惰揣鍗�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsReceiptOrderOutput>> ListNonPageAsync([FromQuery] WmsReceiptOrderSearchNonPage input)
+ {
+ var pNO = input.NO?.Trim() ?? "";
+ var pSourceBillNo = input.SourceBillNo?.Trim() ?? "";
+ var pVendorcode = input.Vendorcode?.Trim() ?? "";
+ var pVendorname = input.Vendorname?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pWarehouseKeepername = input.WarehouseKeepername?.Trim() ?? "";
+ var pTradeMode = input.TradeMode;
+ var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+ var pStoreRoomname = input.StoreRoomname?.Trim() ?? "";
+ var pDeclarationCode = input.DeclarationCode?.Trim() ?? "";
+ var pMajorname = input.Majorname?.Trim() ?? "";
+ var pOrderStatus = input.OrderStatus;
+ var wmsReceiptOrders = await _wmsReceiptOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(!string.IsNullOrEmpty(pSourceBillNo), u => EF.Functions.Like(u.SourceBillNo, $"%{pSourceBillNo}%"))
+ .Where(!string.IsNullOrEmpty(pVendorcode), u => EF.Functions.Like(u.Vendorcode, $"%{pVendorcode}%"))
+ .Where(!string.IsNullOrEmpty(pVendorname), u => EF.Functions.Like(u.Vendorname, $"%{pVendorname}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(!string.IsNullOrEmpty(pWarehouseKeepername), u => EF.Functions.Like(u.WarehouseKeepername, $"%{pWarehouseKeepername}%"))
+ .Where(pTradeMode != null, u => u.TradeMode == pTradeMode)
+ .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%"))
+ .Where(!string.IsNullOrEmpty(pStoreRoomname), u => EF.Functions.Like(u.StoreRoomname, $"%{pStoreRoomname}%"))
+ .Where(!string.IsNullOrEmpty(pDeclarationCode), u => EF.Functions.Like(u.DeclarationCode, $"%{pDeclarationCode}%"))
+ .Where(!string.IsNullOrEmpty(pMajorname), u => EF.Functions.Like(u.Majorname, $"%{pMajorname}%"))
+ //.Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsReceiptOrderOutput>()
+ .ToListAsync();
+ return wmsReceiptOrders;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞鏀惰揣鍗�(yigo绯荤粺鑾峰彇)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ [UnitOfWork]
+ public async Task Add()
+ {
+ //鑾峰彇鍏ュ簱閫氱煡鍗�
+ string url = App.Configuration["YiGoWebApi:QueryInboundNotice"];
+ var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+ var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+ //鍐欐棩蹇楁枃浠�
+ //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+ var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+ .SetBody(new Dictionary<string, object> {
+ { "Billdate_S", Billdate_S },
+ { "Billdate_E", Billdate_E},
+ }, "application/json").PostAsStringAsync();
+ var Data = response.FromJson<WmsReceiptOrderOutputByYiGO>();
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鏀惰揣鍏ュ簱"));
+ foreach (var item in Data.Data)
+ {
+ item.Id= Yitter.IdGenerator.YitIdHelper.NextId();
+ var wmsReceiptOrder = item.Adapt<WmsReceiptOrder>();
+ //鍒ゆ柇鏄惁瀛樺湪鐩稿悓鐨勫崟鎹彿
+ var isExcit = await _wmsReceiptOrderRep.AnyAsync(x => x.NO == item.NO);
+ if (!isExcit)
+ {
+ wmsReceiptOrder.WMSNO = item.NO;//鏆傛椂浣跨敤yigo鐨勫崟鍙凤紝鍚庣画寰呭畾
+ wmsReceiptOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsReceiptOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ await _wmsReceiptOrderRep.InsertNowAsync(wmsReceiptOrder);
+ foreach (var item1 in item.Dtls)
+ {
+ var wmsReceiptOrderDeatail = item1.Adapt<WmsReceiptOrderDetails>();
+ wmsReceiptOrderDeatail.OrderId = item.Id;
+ await _wmsReceiptOrderDetailsRep.InsertNowAsync(wmsReceiptOrderDeatail);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏀惰揣鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsReceiptOrderInput input)
+ {
+ var wmsReceiptOrder = await _wmsReceiptOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsReceiptOrderRep.DeleteAsync(wmsReceiptOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊鏀惰揣鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsReceiptOrderInput input)
+ {
+ var isExist = await _wmsReceiptOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsReceiptOrder = input.Adapt<WmsReceiptOrder>();
+ await _wmsReceiptOrderRep.UpdateAsync(wmsReceiptOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏀惰揣鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsReceiptOrderOutput> Get([FromQuery] QueryeWmsReceiptOrderInput input)
+ {
+ return (await _wmsReceiptOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsReceiptOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏀惰揣鍗曞垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsReceiptOrderOutput>> List([FromQuery] WmsReceiptOrderInput input)
+ {
+ return await _wmsReceiptOrderRep.DetachedEntities.ProjectToType<WmsReceiptOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鏀惰揣鍗曞姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsReceiptOrderOutput> wmsReceiptOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsReceiptOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsReceiptOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsReceiptOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsReceiptOrder, WmsReceiptOrderOutput>(selectKeys);
+ List<WmsReceiptOrder> updates = new();
+ List<WmsReceiptOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsReceiptOrderExistSubList = _wmsReceiptOrderRep.Where(filter).Select(selector).ToList();
+ wmsReceiptOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsReceiptOrder in wmsReceiptOrderList)
+ {
+ if (wmsReceiptOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsReceiptOrder.Adapt<WmsReceiptOrder>());
+ }
+ else
+ {
+ adds.Add(wmsReceiptOrder.Adapt<WmsReceiptOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsReceiptOrderRep.Update(x));
+
+
+ var maxId = _wmsReceiptOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsReceiptOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鏀惰揣鍗曠殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁鏀惰揣鍗曟煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鏀惰揣鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsReceiptOrderSearchNonPage input)
+ {
+ var wmsReceiptOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsReceiptOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsReceiptOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs
new file mode 100644
index 0000000..b87b971
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderDto.cs
@@ -0,0 +1,82 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsSortOrderDto
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public long OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public decimal SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public decimal ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs
new file mode 100644
index 0000000..1c1a36c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderInput.cs
@@ -0,0 +1,277 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 鍒嗘嫞鍗曟煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsSortOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public virtual string OrderNo { get; set; }
+
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public virtual long? OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public virtual string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public virtual string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public virtual string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public virtual string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal? SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal? ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public virtual Admin.NET.Core.SortStatusEnum? SortStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍒嗘嫞鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsSortOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public virtual string? OrderNo { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public virtual long? OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public virtual string? ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public virtual string? ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public virtual string? TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public virtual string? PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string? PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string? ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal? SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal? ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string? Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public virtual Admin.NET.Core.SortStatusEnum? SortStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍒嗘嫞鍗曡緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsSortOrderInput
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public virtual string OrderNo { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public virtual long OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public virtual string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public virtual string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public virtual string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public virtual string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public virtual string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public virtual decimal ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public virtual string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public virtual Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsSortOrderInput : WmsSortOrderInput
+ {
+ }
+
+ public class DeleteWmsSortOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsSortOrderInput : WmsSortOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsSortOrderInput : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs
new file mode 100644
index 0000000..d8fa2ed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Dto/WmsSortOrderOutput.cs
@@ -0,0 +1,94 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒嗘嫞鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsSortOrderOutput
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public long OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public decimal SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public decimal ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs
new file mode 100644
index 0000000..a9dedb0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/IWmsSortOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsSortOrderService
+ {
+ Task Add(AddWmsSortOrderInput input);
+ Task Delete(DeleteWmsSortOrderInput input);
+ Task<WmsSortOrderOutput> Get([FromQuery] QueryeWmsSortOrderInput input);
+ Task<List<WmsSortOrderOutput>> List([FromQuery] WmsSortOrderInput input);
+ Task<PageResult<WmsSortOrderOutput>> Page([FromQuery] WmsSortOrderSearch input);
+ Task Update(UpdateWmsSortOrderInput input);
+
+ Task<List<WmsSortOrderOutput>> ListNonPageAsync([FromQuery] WmsSortOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs
new file mode 100644
index 0000000..0bcdab3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/Map/WmsSortOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsSortOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsSortOrderInput, WmsSortOrder>()
+ ;
+ config.ForType<UpdateWmsSortOrderInput, WmsSortOrder>()
+ ;
+ config.ForType<WmsSortOrder, WmsSortOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs
new file mode 100644
index 0000000..f9bca73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsSortOrder/WmsSortOrderService.cs
@@ -0,0 +1,259 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍒嗘嫞鍗曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鍗曟嵁绠$悊", Name = "WmsSortOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsSortOrderService : IWmsSortOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsSortOrder,MasterDbContextLocator> _wmsSortOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+
+ public WmsSortOrderService(
+ IRepository<WmsSortOrder,MasterDbContextLocator> wmsSortOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+ _wmsSortOrderRep = wmsSortOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍒嗘嫞鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsSortOrderOutput>> Page([FromQuery] WmsSortOrderSearch input)
+ {
+ var wmsSortOrders = await _wmsSortOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.OrderNo), u => EF.Functions.Like(u.OrderNo, $"%{input.OrderNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(input.SortStatus != null, u => u.SortStatus == input.SortStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsSortOrderSearch>(input))
+ .ProjectToType<WmsSortOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsSortOrders;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈠垎鎷e崟鍒楄〃
+ /// </summary>
+ /// <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>(鍒嗘嫞鍗�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsSortOrderOutput>> ListNonPageAsync([FromQuery] WmsSortOrderSearchNonPage input)
+ {
+ var pOrderNo = input.OrderNo?.Trim() ?? "";
+ var pProjectCode = input.ProjectCode?.Trim() ?? "";
+ var pTACode = input.TACode?.Trim() ?? "";
+ var pPartCode = input.PartCode?.Trim() ?? "";
+ var pPlaceCode = input.PlaceCode?.Trim() ?? "";
+ var pContainerCode = input.ContainerCode?.Trim() ?? "";
+ var pSortStatus = input.SortStatus;
+ var wmsSortOrders = await _wmsSortOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pOrderNo), u => EF.Functions.Like(u.OrderNo, $"%{pOrderNo}%"))
+ .Where(!string.IsNullOrEmpty(pProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{pProjectCode}%"))
+ .Where(!string.IsNullOrEmpty(pTACode), u => EF.Functions.Like(u.TACode, $"%{pTACode}%"))
+ .Where(!string.IsNullOrEmpty(pPartCode), u => EF.Functions.Like(u.PartCode, $"%{pPartCode}%"))
+ .Where(!string.IsNullOrEmpty(pPlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{pPlaceCode}%"))
+ .Where(!string.IsNullOrEmpty(pContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{pContainerCode}%"))
+ .Where(pSortStatus != null, u => u.SortStatus == pSortStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsSortOrderOutput>()
+ .ToListAsync();
+ return wmsSortOrders;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞鍒嗘嫞鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsSortOrderInput input)
+ {
+ var wmsSortOrder = input.Adapt<WmsSortOrder>();
+ await _wmsSortOrderRep.InsertAsync(wmsSortOrder);
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍒嗘嫞鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsSortOrderInput input)
+ {
+ var wmsSortOrder = await _wmsSortOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsSortOrderRep.DeleteAsync(wmsSortOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊鍒嗘嫞鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsSortOrderInput input)
+ {
+ var isExist = await _wmsSortOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsSortOrder = input.Adapt<WmsSortOrder>();
+ await _wmsSortOrderRep.UpdateAsync(wmsSortOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍒嗘嫞鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsSortOrderOutput> Get([FromQuery] QueryeWmsSortOrderInput input)
+ {
+ return (await _wmsSortOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsSortOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍒嗘嫞鍗曞垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsSortOrderOutput>> List([FromQuery] WmsSortOrderInput input)
+ {
+ return await _wmsSortOrderRep.DetachedEntities.ProjectToType<WmsSortOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆鍒嗘嫞鍗曞姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsSortOrderOutput> wmsSortOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsSortOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsSortOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsSortOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsSortOrder, WmsSortOrderOutput>(selectKeys);
+ List<WmsSortOrder> updates = new();
+ List<WmsSortOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsSortOrderExistSubList = _wmsSortOrderRep.Where(filter).Select(selector).ToList();
+ wmsSortOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsSortOrder in wmsSortOrderList)
+ {
+ if (wmsSortOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsSortOrder.Adapt<WmsSortOrder>());
+ }
+ else
+ {
+ adds.Add(wmsSortOrder.Adapt<WmsSortOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsSortOrderRep.Update(x));
+
+
+ var maxId = _wmsSortOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsSortOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇鍒嗘嫞鍗曠殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁鍒嗘嫞鍗曟煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">鍒嗘嫞鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsSortOrderSearchNonPage input)
+ {
+ var wmsSortOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsSortOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsSortOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs
new file mode 100644
index 0000000..6c64b05
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderDto.cs
@@ -0,0 +1,92 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�搴撳崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public Admin.NET.Core.MoveType MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs
new file mode 100644
index 0000000..b245e43
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderInput.cs
@@ -0,0 +1,487 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 閫�搴撳崟鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.MoveType? MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ public virtual string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ public virtual string PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�搴撳崟涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsStockReturnOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.MoveType? MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string? WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string? BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ public virtual string? CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string? FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ public virtual string? PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string? ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�搴撳崟杈撳叆鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual Admin.NET.Core.MoveType MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ public virtual string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ public virtual string PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsStockReturnOrderInput : WmsStockReturnOrderInput
+ {
+ /// <summary>
+ /// 閫�搴撴槑缁�
+ /// </summary>
+ public List<WmsStockReturnOrderDetail> WmsStockReturnOrderDetails { get; set; }
+
+
+ }
+ /// <summary>
+ /// 閫�搴撴槑缁�
+ /// </summary>
+ public class WmsStockReturnOrderDetail
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+ }
+
+
+ public class DeleteWmsStockReturnOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsStockReturnOrderInput : WmsStockReturnOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsStockReturnOrderInput : BaseId
+ {
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏄庣粏鍙傛暟
+ /// </summary>
+ public class PageDetailStockReturnOrderInput : PageInputBase
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+ }
+ /// <summary>
+ /// 鑾峰彇鍑哄簱瀹屾垚鏄庣粏鍙傛暟
+ /// </summary>
+ public class GetTakeOrderDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+ }
+
+
+ /// <summary>
+ /// 閫�鏂欎笂鏋剁粰yigo绯荤粺鐨勫弬鏁�
+ /// </summary>
+ public class StockReturnGoodsReturnOrderInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// YIGO绯荤粺id
+ /// </summary>
+ public long? SOID { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇峰崟鍙�
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// WMS鍏ュ簱鍗曞彿
+ /// </summary>
+ public string WMSNO { get; set; }
+
+ /// <summary>
+ ///鍑哄簱鏃堕棿
+ /// </summary>
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欒鎯�
+ /// </summary>
+ public List<StockReturnGoodsReturnOrderInputDetail> Dtls { get; set; }
+ }
+ /// <summary>
+ /// 閫�璐т笅鏋剁粰yigo绯荤粺鐨勮鎯呭弬鏁�
+ /// </summary>
+ public class StockReturnGoodsReturnOrderInputDetail
+ {
+ /// <summary>
+ /// OID
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 搴撳尯
+ /// </summary>
+ public string DestStoreareacode { get; set; }
+
+ /// <summary>
+ /// 鍌ㄤ綅
+ /// </summary>
+ public string DestLocationcode { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs
new file mode 100644
index 0000000..6796fca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Dto/WmsStockReturnOrderOutput.cs
@@ -0,0 +1,204 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�搴撳崟杈撳嚭鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public Admin.NET.Core.MoveType MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 瀵瑰簲YiGo绯荤粺
+ /// </summary>
+ public List<WmsStockReturnOrderDetailOutput> Dtls { get; set; }
+
+ }
+
+ /// <summary>
+ /// 閫�搴撳崟鑾峰彇鏄庣粏杩斿洖鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+ }
+
+ /// <summary>
+ /// yigo鑾峰彇閫�搴撳崟杩斿洖鍙傛暟
+ /// </summary>
+ public class WmsStockReturnOrderOutputByYiGO
+ {
+ public bool Status { get; set; }
+
+ public List<WmsStockReturnOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+
+ /// <summary>
+ /// 閫�鏂欎笅鏋惰繑鍥炲弬鏁�
+ /// </summary>
+ public class StockReturnGoodsReturnOrderOutput
+ {
+
+ /// <summary>
+ /// 缁撴灉鎻忚堪
+ /// </summary>
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鐘舵��
+ /// </summary>
+ public bool Status { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs
new file mode 100644
index 0000000..6190179
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/IWmsStockReturnOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsStockReturnOrderService
+ {
+ Task Add();
+ Task Delete(DeleteWmsStockReturnOrderInput input);
+ Task<WmsStockReturnOrderOutput> Get([FromQuery] QueryeWmsStockReturnOrderInput input);
+ Task<List<WmsStockReturnOrderOutput>> List([FromQuery] WmsStockReturnOrderInput input);
+ Task<PageResult<WmsStockReturnOrderOutput>> Page([FromQuery] WmsStockReturnOrderSearch input);
+ Task Update(UpdateWmsStockReturnOrderInput input);
+
+ Task<List<WmsStockReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsStockReturnOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs
new file mode 100644
index 0000000..2308242
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/Map/WmsStockReturnOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsStockReturnOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsStockReturnOrderInput, WmsStockReturnOrder>()
+ ;
+ config.ForType<UpdateWmsStockReturnOrderInput, WmsStockReturnOrder>()
+ ;
+ config.ForType<WmsStockReturnOrder, WmsStockReturnOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs
new file mode 100644
index 0000000..aee3b4d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsStockReturnOrder/WmsStockReturnOrderService.cs
@@ -0,0 +1,400 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using Furion;
+using Furion.RemoteRequest.Extensions;
+using Serilog;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 閫�搴撳崟鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("鑷繁鐨勪笟鍔�", Name = "WmsStockReturnOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsStockReturnOrderService : IWmsStockReturnOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsStockReturnOrder,MasterDbContextLocator> _wmsStockReturnOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep;
+ private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+
+ public WmsStockReturnOrderService(
+ IRepository<WmsStockReturnOrder,MasterDbContextLocator> wmsStockReturnOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ , IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep
+ , IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+ , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+
+ )
+ {
+ _wmsStockReturnOrderRep = wmsStockReturnOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep;
+ _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ閫�搴撳崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsStockReturnOrderOutput>> Page([FromQuery] WmsStockReturnOrderSearch input)
+ {
+ var wmsStockReturnOrders = await _wmsStockReturnOrderRep.DetachedEntities
+ .Where(input.MoveType != null, u => u.MoveType == input.MoveType)
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{input.WBSElementcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.BenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{input.BenefitingDepartcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.CostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{input.CostCenterID.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.FI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{input.FI_Client_Analysis_H.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PickerID), u => EF.Functions.Like(u.PickerID, $"%{input.PickerID.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ConstructionTeamID), u => EF.Functions.Like(u.ConstructionTeamID, $"%{input.ConstructionTeamID.Trim()}%"))
+ .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsStockReturnOrderSearch>(input))
+ .ProjectToType<WmsStockReturnOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsStockReturnOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsStockReturnOrderDetailOutput>> PageDetail([FromQuery] PageDetailStockReturnOrderInput input)
+ {
+ var wmsOrders = await _wmsStockReturnOrderDetailsRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsStockReturnOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍑哄簱瀹屾垚鐨勬槑缁�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetTakeOrderDetail")]
+ public async Task<PageResult<WmsStockReturnOrderDetailOutput>> GetTakeOrderDetail([FromQuery] GetTakeOrderDetailInput input)
+ {
+ var wmsOrders = await _wmsTakeMaterialOrderDetailRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+ .Where(x=>x.OrderStatus == OrderDetailsStatusEnum.WANCHENG)
+ .ProjectToType<WmsStockReturnOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 澧炲姞閫�搴撳崟(yigo绯荤粺鑾峰彇)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ [UnitOfWork]
+ public async Task Add()
+ {
+ //var wmsStockReturnOrder = input.Adapt<WmsStockReturnOrder>();
+ //var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("閫�搴撶敵璇�"));
+ //wmsStockReturnOrder.SOID = 66666;
+ //wmsStockReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ //wmsStockReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ //wmsStockReturnOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+ //await _wmsStockReturnOrderRep.InsertNowAsync(wmsStockReturnOrder);
+ //foreach (var item in input.WmsStockReturnOrderDetails)
+ //{
+ // var WmsStockReturnOrderDetailsModal = item.Adapt<WmsStockReturnOrderDetails>();
+ // WmsStockReturnOrderDetailsModal.OrderId = wmsStockReturnOrder.Id;
+ // await _wmsStockReturnOrderDetailsRep.InsertAsync(WmsStockReturnOrderDetailsModal);
+ //}
+ //鑾峰彇鍏ュ簱閫氱煡鍗�
+ string url = App.Configuration["YiGoWebApi:QueryReturnQuisition"];
+ var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+ var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+ //鍐欐棩蹇楁枃浠�
+ //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+ var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+ .SetBody(new Dictionary<string, object> {
+ { "Billdate_S", Billdate_S },
+ { "Billdate_E", Billdate_E},
+ }, "application/json").PostAsStringAsync();
+ var Data = response.FromJson<WmsStockReturnOrderOutputByYiGO>();
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐗╂枡閫�搴�"));
+ foreach (var item in Data.Data)
+ {
+ item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ var wmsStockReturnOrder = item.Adapt<WmsStockReturnOrder>();
+ var isExcit = await _wmsStockReturnOrderRep.AnyAsync(x => x.NO == item.NO);
+ if (!isExcit)
+ {
+ wmsStockReturnOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsStockReturnOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ await _wmsStockReturnOrderRep.InsertNowAsync(wmsStockReturnOrder);
+ foreach (var item1 in item.Dtls)
+ {
+ var wmsStockReturnOrderDeatail = item1.Adapt<WmsStockReturnOrderDetails>();
+ wmsStockReturnOrderDeatail.OrderId = item.Id;
+ await _wmsStockReturnOrderDetailsRep.InsertNowAsync(wmsStockReturnOrderDeatail);
+ }
+ }
+
+ }
+ }
+
+ /// <summary>
+ /// 閫�鏂欎笂鏋舵帴鍙�(yigo绯荤粺)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("StockReturnGoodsReturnOrder")]
+ [UnifyResult(typeof(object))]
+ [UnitOfWork]
+ public async Task<object> StockReturnGoodsReturnOrder([FromBody] StockReturnGoodsReturnOrderInput input)
+ {
+ try
+ {
+ //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+ string url = App.Configuration["YiGoWebApi:CreateTXRe111"];
+ //鑾峰彇涓诲崟鎹�
+ var wmsStockReturnOrderModal = await _wmsStockReturnOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+ if (wmsStockReturnOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[閫�鏂欎笂鏋禲[鍗曟嵁鍙�:{wmsStockReturnOrderModal.NO}][url:{url}]");
+
+ var response = await url.SetHttpMethod(HttpMethod.Post)
+ .SetBody(input, "application/json")
+ .PostAsAsync<StockReturnGoodsReturnOrderOutput>();
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[閫�鏂欎笂鏋禲[鍗曟嵁鍙�:{wmsStockReturnOrderModal.NO}][response:{response.ToJson()}]");
+
+ return XnRestfulResultProvider.RESTfulResult(response);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ }
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈤��搴撳崟鍒楄〃
+ /// </summary>
+ /// <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+ /// <returns>(閫�搴撳崟)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsStockReturnOrderOutput>> ListNonPageAsync([FromQuery] WmsStockReturnOrderSearchNonPage input)
+ {
+ var pMoveType = input.MoveType;
+ var pNO = input.NO?.Trim() ?? "";
+ var pWBSElementcode = input.WBSElementcode?.Trim() ?? "";
+ var pBenefitingDepartcode = input.BenefitingDepartcode?.Trim() ?? "";
+ var pCostCenterID = input.CostCenterID?.Trim() ?? "";
+ var pFI_Client_Analysis_H = input.FI_Client_Analysis_H?.Trim() ?? "";
+ var pPickerID = input.PickerID?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pConstructionTeamID = input.ConstructionTeamID?.Trim() ?? "";
+ var pOrderStatus = input.OrderStatus;
+ var wmsStockReturnOrders = await _wmsStockReturnOrderRep.DetachedEntities
+ .Where(pMoveType != null, u => u.MoveType == pMoveType)
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(!string.IsNullOrEmpty(pWBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{pWBSElementcode}%"))
+ .Where(!string.IsNullOrEmpty(pBenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{pBenefitingDepartcode}%"))
+ .Where(!string.IsNullOrEmpty(pCostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{pCostCenterID}%"))
+ .Where(!string.IsNullOrEmpty(pFI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{pFI_Client_Analysis_H}%"))
+ .Where(!string.IsNullOrEmpty(pPickerID), u => EF.Functions.Like(u.PickerID, $"%{pPickerID}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(!string.IsNullOrEmpty(pConstructionTeamID), u => EF.Functions.Like(u.ConstructionTeamID, $"%{pConstructionTeamID}%"))
+ .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsStockReturnOrderOutput>()
+ .ToListAsync();
+ return wmsStockReturnOrders;
+ }
+
+
+
+
+ /// <summary>
+ /// 鍒犻櫎閫�搴撳崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsStockReturnOrderInput input)
+ {
+ var wmsStockReturnOrder = await _wmsStockReturnOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsStockReturnOrderRep.DeleteAsync(wmsStockReturnOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊閫�搴撳崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsStockReturnOrderInput input)
+ {
+ var isExist = await _wmsStockReturnOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsStockReturnOrder = input.Adapt<WmsStockReturnOrder>();
+ await _wmsStockReturnOrderRep.UpdateAsync(wmsStockReturnOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫�搴撳崟
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsStockReturnOrderOutput> Get([FromQuery] QueryeWmsStockReturnOrderInput input)
+ {
+ return (await _wmsStockReturnOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsStockReturnOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇閫�搴撳崟鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsStockReturnOrderOutput>> List([FromQuery] WmsStockReturnOrderInput input)
+ {
+ return await _wmsStockReturnOrderRep.DetachedEntities.ProjectToType<WmsStockReturnOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆閫�搴撳崟鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsStockReturnOrderOutput> wmsStockReturnOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsStockReturnOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsStockReturnOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsStockReturnOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsStockReturnOrder, WmsStockReturnOrderOutput>(selectKeys);
+ List<WmsStockReturnOrder> updates = new();
+ List<WmsStockReturnOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsStockReturnOrderExistSubList = _wmsStockReturnOrderRep.Where(filter).Select(selector).ToList();
+ wmsStockReturnOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsStockReturnOrder in wmsStockReturnOrderList)
+ {
+ if (wmsStockReturnOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsStockReturnOrder.Adapt<WmsStockReturnOrder>());
+ }
+ else
+ {
+ adds.Add(wmsStockReturnOrder.Adapt<WmsStockReturnOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsStockReturnOrderRep.Update(x));
+
+
+ var maxId = _wmsStockReturnOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsStockReturnOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇閫�搴撳崟鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁閫�搴撳崟鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">閫�搴撳崟鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsStockReturnOrderSearchNonPage input)
+ {
+ var wmsStockReturnOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsStockReturnOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsStockReturnOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs
new file mode 100644
index 0000000..005dff2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderDto.cs
@@ -0,0 +1,227 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 棰嗘枡鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsTakeMaterialOrderDto
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public string MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄�
+ /// </summary>
+ public long IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 鍒嗘嫞搴撳瓨
+ /// </summary>
+ public class FjStock
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 瀹炵墿搴撳瓨鏁�
+ /// </summary>
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 璐﹂潰鏁伴噺
+ /// </summary>
+ public decimal QuantityOfBill { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ public RuKuSourceEnum Source { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁伴噺
+ /// </summary>
+ public decimal FjQty { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs
new file mode 100644
index 0000000..88d58d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderInput.cs
@@ -0,0 +1,441 @@
+锘縰sing Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Application
+{
+
+ /// <summary>
+ /// 棰嗘枡鍗曟煡璇㈠弬鏁�
+ /// </summary>
+ public class WmsTakeMaterialOrderSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual string MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public virtual string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄�
+ /// </summary>
+ public virtual long? IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public virtual string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 棰嗘枡鍗曚笉鍒嗛〉鏌ヨ鍙傛暟
+ /// </summary>
+ public class WmsTakeMaterialOrderSearchNonPage : PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long? OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long? OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual string? MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string? NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string? WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string? BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public virtual string? CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string? FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄�
+ /// </summary>
+ public virtual long? IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public virtual string? PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string? WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string? Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string? ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum? OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState? IssueState { get; set; }
+
+ }
+
+ /// <summary>
+ /// 棰嗘枡鍗曡緭鍏ュ弬鏁�
+ /// </summary>
+ public class WmsTakeMaterialOrderInput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public virtual long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public virtual long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public virtual string MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public virtual long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public virtual string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public virtual DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public virtual string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public virtual string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public virtual string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public virtual string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+ /// </summary>
+ public virtual long IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public virtual string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public virtual string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public virtual string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public virtual string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public virtual Admin.NET.Core.IssueState IssueState { get; set; }
+
+ }
+
+ public class AddWmsTakeMaterialOrderInput : WmsTakeMaterialOrderInput
+ {
+ }
+
+ public class DeleteWmsTakeMaterialOrderInput : BaseId
+ {
+ }
+
+ public class UpdateWmsTakeMaterialOrderInput : WmsTakeMaterialOrderInput
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long Id { get; set; }
+
+ }
+
+ public class QueryeWmsTakeMaterialOrderInput : BaseId
+ {
+
+ }
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏鍙傛暟
+ /// </summary>
+ public class TakePageDetailInput : PageInputBase
+ {
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ [Required(ErrorMessage = "Id涓婚敭涓嶈兘涓虹┖")]
+ public long? Id { get; set; }
+ }
+
+ /// <summary>
+ /// 鏌ヨ搴撳瓨鏄庣粏
+ /// </summary>
+ public class TakeMaterialStockSearch : PageInputBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+ }
+ /// <summary>
+ /// 涓嬪彂棰嗘枡鍗曞弬鏁�
+ /// </summary>
+ public class DistributeOrderInput
+ {
+ /// <summary>
+ /// 棰嗘枡鍗昳d
+ /// </summary>
+ public long Id { get; set; }
+ }
+
+ /// <summary>
+ /// 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勫弬鏁�
+ /// </summary>
+ public class ReturnTakeOrderInput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long? Id { get; set; }
+
+ /// <summary>
+ /// YIGO绯荤粺id
+ /// </summary>
+ public long? SOID { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱閫氱煡鍗曞彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// WMS閫�璐у崟鍙�
+ /// </summary>
+ public string WMSNO { get; set; }
+
+ /// <summary>
+ ///鍑哄簱鏃堕棿
+ /// </summary>
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱璇︽儏
+ /// </summary>
+ public List<ReturnTakeOrderInputDetail> Dtls { get; set; }
+ }
+
+ /// <summary>
+ /// 棰嗘枡涓嬫灦缁檡igo绯荤粺鐨勮鎯呭弬鏁�
+ /// </summary>
+ public class ReturnTakeOrderInputDetail
+ {
+ /// <summary>
+ /// OID
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 搴撳尯
+ /// </summary>
+ public string DestStoreareacode { get; set; }
+
+ /// <summary>
+ /// 鍌ㄤ綅
+ /// </summary>
+ public string DestLocationcode { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs
new file mode 100644
index 0000000..88a0ee4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Dto/WmsTakeMaterialOrderOutput.cs
@@ -0,0 +1,352 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 棰嗘枡鍗曡緭鍑哄弬鏁�
+ /// </summary>
+ public class WmsTakeMaterialOrderOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public string MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄�
+ /// </summary>
+ public long IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public Admin.NET.Core.IssueState IssueState { get; set; }
+
+ /// <summary>
+ /// 瀵瑰簲YiGo绯荤粺
+ /// </summary>
+ public List<WmsTakeMaterialOrderDetailOutput> Dtls { get; set; }
+
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇鏄庣粏杩斿洖鍙傛暟
+ /// </summary>
+ public class WmsTakeMaterialOrderDetailOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 涓嬪彂鏁伴噺
+ /// </summary>
+ public decimal DistributeQty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public decimal Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇搴撳瓨杩斿洖鍙傛暟
+ /// </summary>
+ public class TakeMaterialStockOutput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ /// </summary>
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 瀹炵墿搴撳瓨鏁�
+ /// </summary>
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 璐﹂潰鏁伴噺
+ /// </summary>
+ public decimal QuantityOfBill { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ public RuKuSourceEnum Source { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+ }
+ /// <summary>
+ /// 搴撳瓨鍒嗙粍鐗╂枡鍙疯緭鍑哄弬鏁�
+ /// </summary>
+ public class MaterialNoListOutput
+ {
+ /// <summary>
+ /// Code
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string MaterialNo { get; set; }
+ }
+
+ /// <summary>
+ /// 搴撳瓨鍒嗙粍椤圭洰缂栫爜杈撳嚭鍙傛暟
+ /// </summary>
+ public class ProjectCodeListOutput
+ {
+ /// <summary>
+ /// Code
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string ProjectCode { get; set; }
+ }
+ /// <summary>
+ /// yigo鑾峰彇棰嗘枡鍗曡繑鍥炲弬鏁�
+ /// </summary>
+ public class WmsTakeMaterialOrderOutputByYiGO
+ {
+ public bool Status { get; set; }
+
+ public List<WmsTakeMaterialOrderOutput> Data { get; set; }
+
+ public string Result { get; set; }
+ }
+
+ /// <summary>
+ /// 棰嗘枡涓嬫灦杩斿洖鍙傛暟
+ /// </summary>
+ public class ReturnTakeOrderOutput
+ {
+
+ /// <summary>
+ /// 缁撴灉鎻忚堪
+ /// </summary>
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鐘舵��
+ /// </summary>
+ public bool Status { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs
new file mode 100644
index 0000000..f8288b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/IWmsTakeMaterialOrderService.cs
@@ -0,0 +1,24 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Application
+{
+ public interface IWmsTakeMaterialOrderService
+ {
+ Task Add(AddWmsTakeMaterialOrderInput input);
+ Task Delete(DeleteWmsTakeMaterialOrderInput input);
+ Task<WmsTakeMaterialOrderOutput> Get([FromQuery] QueryeWmsTakeMaterialOrderInput input);
+ Task<List<WmsTakeMaterialOrderOutput>> List([FromQuery] WmsTakeMaterialOrderInput input);
+ Task<PageResult<WmsTakeMaterialOrderOutput>> Page([FromQuery] WmsTakeMaterialOrderSearch input);
+ Task Update(UpdateWmsTakeMaterialOrderInput input);
+
+ Task<List<WmsTakeMaterialOrderOutput>> ListNonPageAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input);
+
+ Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs
new file mode 100644
index 0000000..27b59d2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/Map/WmsTakeMaterialOrderMapper.cs
@@ -0,0 +1,18 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ public class WmsTakeMaterialOrderMapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<AddWmsTakeMaterialOrderInput, WmsTakeMaterialOrder>()
+ ;
+ config.ForType<UpdateWmsTakeMaterialOrderInput, WmsTakeMaterialOrder>()
+ ;
+ config.ForType<WmsTakeMaterialOrder, WmsTakeMaterialOrderOutput>()
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs
new file mode 100644
index 0000000..7eff9fe
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsOrder/WmsTakeMaterialOrder/WmsTakeMaterialOrderService.cs
@@ -0,0 +1,613 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using Furion;
+using Serilog;
+using Furion.RemoteRequest.Extensions;
+using HttpMethod = System.Net.Http.HttpMethod;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 棰嗘枡鍗曟湇鍔�
+ /// </summary>
+ [ApiDescriptionSettings("鍗曟嵁绠$悊", Name = "WmsTakeMaterialOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsTakeMaterialOrderService : IWmsTakeMaterialOrderService, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+
+ public WmsTakeMaterialOrderService(
+ IRepository<WmsTakeMaterialOrder,MasterDbContextLocator> wmsTakeMaterialOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+ , IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ , IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ , IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+ , IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep
+ , IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep
+ , IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+ )
+ {
+ _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsSortOrderRep = wmsSortOrderRep;
+ _wmsTaskRep = wmsTaskRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("page")]
+ public async Task<PageResult<WmsTakeMaterialOrderOutput>> Page([FromQuery] WmsTakeMaterialOrderSearch input)
+ {
+ var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.MoveType), u => EF.Functions.Like(u.MoveType, $"%{input.MoveType.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.NO), u => EF.Functions.Like(u.NO, $"%{input.NO.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{input.WBSElementcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.BenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{input.BenefitingDepartcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.CostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{input.CostCenterID.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.FI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{input.FI_Client_Analysis_H.Trim()}%"))
+ .Where(input.IsInnerCompany != null, u => u.IsInnerCompany == input.IsInnerCompany)
+ .Where(!string.IsNullOrEmpty(input.PickerID), u => EF.Functions.Like(u.PickerID, $"%{input.PickerID.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.WarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{input.WarehouseCentername.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Companyname), u => EF.Functions.Like(u.Companyname, $"%{input.Companyname.Trim()}%"))
+ .Where(input.OrderStatus != null, u => u.OrderStatus == input.OrderStatus)
+ .OrderBy(PageInputOrder.OrderBuilder<WmsTakeMaterialOrderSearch>(input))
+ .ProjectToType<WmsTakeMaterialOrderOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsTakeMaterialOrders;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇㈤鏂欏崟鍒楄〃
+ /// </summary>
+ /// <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>(棰嗘枡鍗�)瀹炰緥鍒楄〃</returns>
+ [HttpGet("listNonPage")]
+ public async Task<List<WmsTakeMaterialOrderOutput>> ListNonPageAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
+ {
+ var pMoveType = input.MoveType?.Trim() ?? "";
+ var pNO = input.NO?.Trim() ?? "";
+ var pWBSElementcode = input.WBSElementcode?.Trim() ?? "";
+ var pBenefitingDepartcode = input.BenefitingDepartcode?.Trim() ?? "";
+ var pCostCenterID = input.CostCenterID?.Trim() ?? "";
+ var pFI_Client_Analysis_H = input.FI_Client_Analysis_H?.Trim() ?? "";
+ var pIsInnerCompany = input.IsInnerCompany;
+ var pPickerID = input.PickerID?.Trim() ?? "";
+ var pWarehouseCentername = input.WarehouseCentername?.Trim() ?? "";
+ var pCompanyname = input.Companyname?.Trim() ?? "";
+ var pOrderStatus = input.OrderStatus;
+ var wmsTakeMaterialOrders = await _wmsTakeMaterialOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(pMoveType), u => EF.Functions.Like(u.MoveType, $"%{pMoveType}%"))
+ .Where(!string.IsNullOrEmpty(pNO), u => EF.Functions.Like(u.NO, $"%{pNO}%"))
+ .Where(!string.IsNullOrEmpty(pWBSElementcode), u => EF.Functions.Like(u.WBSElementcode, $"%{pWBSElementcode}%"))
+ .Where(!string.IsNullOrEmpty(pBenefitingDepartcode), u => EF.Functions.Like(u.BenefitingDepartcode, $"%{pBenefitingDepartcode}%"))
+ .Where(!string.IsNullOrEmpty(pCostCenterID), u => EF.Functions.Like(u.CostCenterID, $"%{pCostCenterID}%"))
+ .Where(!string.IsNullOrEmpty(pFI_Client_Analysis_H), u => EF.Functions.Like(u.FI_Client_Analysis_H, $"%{pFI_Client_Analysis_H}%"))
+ .Where(pIsInnerCompany != null, u => u.IsInnerCompany == pIsInnerCompany)
+ .Where(!string.IsNullOrEmpty(pPickerID), u => EF.Functions.Like(u.PickerID, $"%{pPickerID}%"))
+ .Where(!string.IsNullOrEmpty(pWarehouseCentername), u => EF.Functions.Like(u.WarehouseCentername, $"%{pWarehouseCentername}%"))
+ .Where(!string.IsNullOrEmpty(pCompanyname), u => EF.Functions.Like(u.Companyname, $"%{pCompanyname}%"))
+ .Where(pOrderStatus != null, u => u.OrderStatus == pOrderStatus)
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<WmsTakeMaterialOrderOutput>()
+ .ToListAsync();
+ return wmsTakeMaterialOrders;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍗曟嵁鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("PageDetail")]
+ public async Task<PageResult<WmsTakeMaterialOrderDetailOutput>> PageDetail([FromQuery] TakePageDetailInput input)
+ {
+ var wmsOrders = await _wmsTakeMaterialOrderDetailRep.DetachedEntities
+ .Where(input.Id != null, u => u.OrderId == input.Id)
+ .ProjectToType<WmsTakeMaterialOrderDetailOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsOrders;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鐗╂枡搴撳瓨
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("stockPage")]
+ public async Task<PageResult<TakeMaterialStockOutput>> StockPage([FromQuery] TakeMaterialStockSearch input)
+ {
+ //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+
+ //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+ var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+ .Where(u => u.StockNumber != 0)
+ .Where(!string.IsNullOrEmpty(input.MaterialNo), u => EF.Functions.Like(u.MaterialNo, $"%{input.MaterialNo.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.MaterialName), u => EF.Functions.Like(u.MaterialName, $"%{input.MaterialName.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContractCode), u => EF.Functions.Like(u.ContractCode, $"%{input.ContractCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+ .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+ u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+ .Where(u => u.AreaId == 472817877401669)
+ .Where(u => !lockPlace.Contains(u.PlaceCode))
+ .ProjectToType<TakeMaterialStockOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsMaterialStocks;
+ }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜涓嬫媺妗�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetMaterialNoList")]
+ public async Task<List<MaterialNoListOutput>> GetMaterialNoList()
+ {
+ // 鏌ヨ搴撲綅琛ㄧ姸鎬佷负瀛樿揣鐨勫簱浣嶄綔涓烘煡璇㈠簱瀛樼殑鏉′欢 鍥哄畾搴撳尯
+ List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
+ .Select(t => t.PlaceCode).ToListAsync();
+ //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+ //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+ var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+ //鏌ヨ搴撳瓨
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+ .ToListAsync();
+ //鏈墽琛屾垨鎵ц涓殑鏄庣粏鎵樼洏鐩稿叧搴撳瓨涓嶇户缁樉绀�
+ wmsMaterialStocks = wmsMaterialStocks
+ .Where(u => !lockPlace.Contains(u.PlaceCode))
+ .GroupBy(x => x.MaterialNo).Select(x => x.First()).ToList();
+ List<MaterialNoListOutput> MaterialNoListOutputLists = new List<MaterialNoListOutput>();
+ foreach (var item in wmsMaterialStocks)
+ {
+ MaterialNoListOutput MaterialNoListOutput = new MaterialNoListOutput();
+ MaterialNoListOutput.Code = item.MaterialNo;
+ MaterialNoListOutput.MaterialNo = item.MaterialNo;
+ MaterialNoListOutputLists.Add(MaterialNoListOutput);
+ }
+ return MaterialNoListOutputLists;
+ }
+
+ /// <summary>
+ /// 椤圭洰缂栫爜涓嬫媺妗�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetProjectCodeList")]
+ public async Task<List<ProjectCodeListOutput>> GetProjectCodeList()
+ {
+ // 鏌ヨ搴撲綅琛ㄧ姸鎬佷负瀛樿揣鐨勫簱浣嶄綔涓烘煡璇㈠簱瀛樼殑鏉′欢 鍥哄畾搴撳尯
+ List<string> wmsPlaceCodes = await _wmsPlaceRep.Where(u => u.PlaceStatus == PlaceStatus.CUNHUO && u.AreaId == 472817877401669)
+ .Select(t => t.PlaceCode).ToListAsync();
+ //浠庢湭鎵ц鍜屾墽琛屼腑鐨勪换鍔′腑鑾峰彇搴撲綅杩涜绛涢��(鏈啓)
+ //鏌ヨ鎵�鏈夎閿佸畾搴撲綅鍜屽緟鍑虹殑搴撳瓨
+ var lockPlace = await _wmsPlaceRep.DetachedEntities.Where(x => x.Islock == YesOrNot.Y || x.PlaceStatus == PlaceStatus.DAICHU).Select(x => x.PlaceCode).ToListAsync();
+ //鏌ヨ搴撳瓨
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities
+ .ToListAsync();
+ //鏈墽琛屾垨鎵ц涓殑鏄庣粏鎵樼洏鐩稿叧搴撳瓨涓嶇户缁樉绀�
+ wmsMaterialStocks = wmsMaterialStocks
+ .Where(u => !lockPlace.Contains(u.PlaceCode))
+ .GroupBy(x => x.ProjectCode).Select(x => x.First()).ToList();
+ List<ProjectCodeListOutput> ProjectCodeListOutputLists = new List<ProjectCodeListOutput>();
+ foreach (var item in wmsMaterialStocks)
+ {
+ ProjectCodeListOutput ProjectCodeListOutput = new ProjectCodeListOutput();
+ ProjectCodeListOutput.Code = item.ProjectCode;
+ ProjectCodeListOutput.ProjectCode = item.ProjectCode;
+ ProjectCodeListOutputLists.Add(ProjectCodeListOutput);
+ }
+ return ProjectCodeListOutputLists;
+ }
+
+ /// <summary>
+ /// 澧炲姞棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("add")]
+ public async Task Add(AddWmsTakeMaterialOrderInput input)
+ {
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+ var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
+ wmsTakeMaterialOrder.SOID = 66666;
+ wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.WEIXIAFA;
+ await _wmsTakeMaterialOrderRep.InsertAsync(wmsTakeMaterialOrder);
+ }
+
+ /// <summary>
+ /// 澧炲姞棰嗘枡鍗�(yigo绯荤粺鑾峰彇)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("TakeOrderAdd")]
+ [UnitOfWork]
+ public async Task TakeOrderAdd()
+ {
+ //鑾峰彇棰嗘枡鐢宠鍗�
+ string url = App.Configuration["YiGoWebApi:QueryOutBoundNotice"];
+ var Billdate_S = DateTime.Now.AddDays(-15).ToString("yyyy-MM-dd");
+ var Billdate_E = DateTime.Now.AddDays(15).ToString("yyyy-MM-dd");
+ //鍐欐棩蹇楁枃浠�
+ //Log.Error($"[TransferContainerCode][ContainerCode:{input.ContainerCode}][url:{url}]");
+ var response = await url.SetHttpMethod(System.Net.Http.HttpMethod.Post)
+ .SetBody(new Dictionary<string, object> {
+ { "Billdate_S", Billdate_S },
+ { "Billdate_E", Billdate_E},
+ }, "application/json").PostAsStringAsync();
+ var Data = response.FromJson<WmsTakeMaterialOrderOutputByYiGO>();
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+ foreach (var item in Data.Data)
+ {
+ item.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ var wmsTakeMaterialOrder = item.Adapt<WmsTakeMaterialOrder>();
+ var isExcit = await _wmsTakeMaterialOrderRep.AnyAsync(x => x.NO == item.NO);
+ if (!isExcit)
+ {
+ wmsTakeMaterialOrder.OrderLargeCategory = wmsOrderType != null ? wmsOrderType.Pid : 0;
+ wmsTakeMaterialOrder.OrderSubclass = wmsOrderType != null ? wmsOrderType.Id : 0;
+ await _wmsTakeMaterialOrderRep.InsertNowAsync(wmsTakeMaterialOrder);
+ foreach (var item1 in item.Dtls)
+ {
+ var wmsTakeMaterialDeatail = item1.Adapt<WmsTakeMaterialOrderDetail>();
+ wmsTakeMaterialDeatail.OrderId = item.Id;
+ await _wmsTakeMaterialOrderDetailRep.InsertNowAsync(wmsTakeMaterialDeatail);
+ }
+ }
+ }
+ }
+ /// <summary>
+ /// 棰嗘枡涓嬫灦鎺ュ彛(yigo绯荤粺)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("ReturnTakeOrder")]
+ [UnifyResult(typeof(object))]
+ [UnitOfWork]
+ public async Task<object> ReturnTakeOrder([FromBody] ReturnTakeOrderInput input)
+ {
+ try
+ {
+ //鍒涘缓鎸囧畾鍚嶇О鐨勮鍗曟搷浣�
+ string url = App.Configuration["YiGoWebApi:CreateTX211"];
+ //鑾峰彇涓诲崟鎹�
+ var wmsTakeMaterialOrderModal = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(x => x.Id == input.Id);
+ if (wmsTakeMaterialOrderModal == null) throw Oops.Oh("鍗曟嵁淇℃伅涓嶅瓨鍦�!");
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[棰嗘枡涓嬫灦][鍗曟嵁鍙�:{wmsTakeMaterialOrderModal.NO}][url:{url}]");
+
+ var response = await url.SetHttpMethod(HttpMethod.Post)
+ .SetBody(input, "application/json")
+ .PostAsAsync<ReturnTakeOrderOutput>();
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error($"[棰嗘枡涓嬫灦][鍗曟嵁鍙�:{wmsTakeMaterialOrderModal.NO}][response:{response.ToJson()}]");
+
+ return XnRestfulResultProvider.RESTfulResult(response);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ }
+ }
+
+
+ /// <summary>
+ /// 涓嬪彂棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("DistributeOrder")]
+ [UnitOfWork]
+ public async Task DistributeOrder(DistributeOrderInput input)
+ {
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("棰嗘枡鍑哄簱"));
+ //鑾峰彇棰嗘枡鍗曟嵁
+ var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep
+ .Where(x=>x.Id == input.Id && x.OrderLargeCategory == wmsOrderType.Pid && x.OrderSubclass == wmsOrderType.Id)
+ .ProjectToType<WmsTakeMaterialOrder>()
+ .FirstOrDefaultAsync();
+ if (wmsTakeMaterialOrder == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+ wmsTakeMaterialOrder.OrderStatus = OrderStatusEnum.YIXIAFA;
+ //鏇存敼鍗曟嵁鐘舵�佷负宸蹭笅鍙�
+ await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder);
+ //鏍规嵁棰嗘枡鍗曟槑缁嗙敓鎴愬垎鎷e崟
+ foreach (var item in wmsTakeMaterialOrder.WmsTakeMaterialOrderDetail)
+ {
+ //鑾峰彇鎵�鏈変负璇ユ槑缁嗙墿鏂欑紪鐮佺殑搴撳瓨(涓嶄负瀹屾垚鐘舵�佺殑鍑哄簱浠诲姟鐨勫簱浣嶈鎺掗櫎锛屽緟寮�鍙�)
+ var wmsMaterialStocks = await _wmsMaterialStockRep.DetachedEntities.Where(x => x.MaterialNo == item.Materialcode)
+ .OrderBy(n=>n.CreatedTime)
+ .OrderByDescending(n => n.StockNumber)
+ .ToListAsync();
+ List<FjStock> FjStockList = new List<FjStock>();
+ //浼樺厛浠庡簱浣嶄负绌虹殑搴撳瓨杩涜鍒嗘嫞
+ var fjstockModel = wmsMaterialStocks.Where(p => p.PlaceCode == "N/A").ToList();
+ if (fjstockModel != null)
+ {
+ foreach (var a in fjstockModel)
+ {
+ var FjStockModal = a.Adapt<FjStock>();
+ FjStockModal.FjQty = a.StockNumber;
+ if (item.DistributeQty + a.StockNumber > item.Qty)
+ {
+ FjStockModal.FjQty = item.Qty - item.DistributeQty;
+ item.DistributeQty = item.Qty;
+ FjStockList.Add(FjStockModal);
+ break;
+ }
+ else
+ {
+ item.DistributeQty += a.StockNumber;
+ };
+ FjStockList.Add(FjStockModal);
+ }
+ }
+ if (item.DistributeQty < item.Qty)
+ {
+ foreach (var b in wmsMaterialStocks.Where(x=>x.PlaceCode!="N/A"))
+ {
+ var FjStockModal = b.Adapt<FjStock>();
+ FjStockModal.FjQty = b.StockNumber;
+ if (item.DistributeQty + b.StockNumber > item.Qty)
+ {
+ FjStockModal.FjQty = item.Qty - item.DistributeQty;
+ item.DistributeQty = item.Qty;
+ FjStockList.Add(FjStockModal);
+ break;
+ }
+ else
+ {
+ item.DistributeQty += b.StockNumber;
+ };
+ FjStockList.Add(FjStockModal);
+ }
+ }
+
+ if (item.DistributeQty< item.Qty) throw Oops.Oh(item.Materialname+"搴撳瓨鏁伴噺涓嶈冻!");
+ //寰幆闇�瑕佸嚭搴撶殑搴撳瓨鐢熸垚浠诲姟鍜屽垎鎷e崟
+ foreach (var stock in FjStockList)
+ {
+ //鑾峰彇搴撲綅淇℃伅
+ var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == stock.PlaceCode);
+ //鐗╂枡鍜屽鍣ㄧ殑鍏崇郴
+ var fjcvmModelList = await _wmsMaterialContainerRep.Where(z =>
+ z.ContainerCode == stock.ContainerCode && z.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ if (wmsPlacModal!=null)
+ {
+ //浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.CHUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.WEIZHIXING,
+ OrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
+ OrderDetailsId = item.Id,
+ ContainerCode = stock.ContainerCode,
+ SourcePlace = stock.PlaceCode,
+ ToPlace = wmsPlacModal.Aisle.ToString(), //鐩爣浣�
+ AreaName = "缁濈紭绔嬪簱",
+ IsRead = true, //WCS鏄惁鍙互璇诲彇
+ SendTimes = 1, //鍙戦�佹鏁�
+ Aisle = wmsPlacModal.Aisle,
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+ Description = "鐗╂枡"
+ };
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+ // 鏂板鍒嗘嫞
+ var wmsSortOrder = new WmsSortOrder()
+ {
+ OrderNo = wmsTakeMaterialOrder.NO,
+ Materialcode = stock.MaterialNo,
+ Materialname = stock.MaterialName,
+ OrderDetailID = item.Id,
+ ContainerOrderNo = fjcvmModelList.FirstOrDefault().OrderNo,
+ ProjectCode = item.ProjectCode,
+ TACode = item.TACode,
+ PartCode = item.PartCode,
+ PlaceCode = item.PlaceCode,
+ ContainerCode = stock.ContainerCode,
+ SortQuantity = stock.FjQty,
+ ActualQuantity = new decimal(0.00),
+ SortStatus = SortStatusEnum.WEIFENJIAN
+ };
+ await _wmsSortOrderRep.InsertNowAsync(wmsSortOrder);
+ }
+ }
+
+ }
+
+ /// <summary>
+ /// 鍒犻櫎棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("delete")]
+ public async Task Delete(DeleteWmsTakeMaterialOrderInput input)
+ {
+ var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.FirstOrDefaultAsync(u => u.Id == input.Id);
+ await _wmsTakeMaterialOrderRep.DeleteAsync(wmsTakeMaterialOrder);
+ }
+
+ /// <summary>
+ /// 鏇存柊棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("edit")]
+ public async Task Update(UpdateWmsTakeMaterialOrderInput input)
+ {
+ var isExist = await _wmsTakeMaterialOrderRep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D3000);
+
+ var wmsTakeMaterialOrder = input.Adapt<WmsTakeMaterialOrder>();
+ await _wmsTakeMaterialOrderRep.UpdateAsync(wmsTakeMaterialOrder,ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇棰嗘枡鍗�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("detail")]
+ public async Task<WmsTakeMaterialOrderOutput> Get([FromQuery] QueryeWmsTakeMaterialOrderInput input)
+ {
+ return (await _wmsTakeMaterialOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<WmsTakeMaterialOrderOutput>();
+ }
+
+ /// <summary>
+ /// 鑾峰彇棰嗘枡鍗曞垪琛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("list")]
+ public async Task<List<WmsTakeMaterialOrderOutput>> List([FromQuery] WmsTakeMaterialOrderInput input)
+ {
+ return await _wmsTakeMaterialOrderRep.DetachedEntities.ProjectToType<WmsTakeMaterialOrderOutput>().ToListAsync();
+ }
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆棰嗘枡鍗曞姛鑳�
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("fromExcel")]
+ public async Task<int> FromExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int size = 200;
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v2");
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var keys = excelTemplate.UnionUniqueFields.Split(",") ?? Array.Empty<string>();
+ for (var i = 0; i < keys.Length; i++)
+ {
+ keys[i] = keys[i]?.Trim() ?? string.Empty;
+ }
+ ExcelUtil.FromExcel(file, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName);
+ List<WmsTakeMaterialOrderOutput> wmsTakeMaterialOrderList = DataConvertUtil.ToObjectList(headers, data, sheetName, keys, excelTemplate?.DataStartLine ?? 2, out Dictionary<string, WmsTakeMaterialOrderOutput> dict);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = wmsTakeMaterialOrderList.ParseUniqueKeyValueDictList(keys.ToList(), excelTemplate?.DataStartLine ?? 2, sheetName);
+ var filters = DataConvertUtil.GetExpressionListByUniqueDict<WmsTakeMaterialOrder>(keys.ToList(), uniqueKeyValueDictList, size);
+ var selectKeys = keys.ToList();
+ if(!selectKeys.Contains("Id")) selectKeys.Add("Id");
+ var selector = DataConvertUtil.GetSelectExpressionListByUniqueDict<WmsTakeMaterialOrder, WmsTakeMaterialOrderOutput>(selectKeys);
+ List<WmsTakeMaterialOrder> updates = new();
+ List<WmsTakeMaterialOrder> adds = new();
+
+ lock (_lock)
+ {
+ foreach (var filter in filters)
+ {
+ var wmsTakeMaterialOrderExistSubList = _wmsTakeMaterialOrderRep.Where(filter).Select(selector).ToList();
+ wmsTakeMaterialOrderExistSubList.ForEach(x =>
+ {
+ var k = DataConvertUtil.GetKey(x, keys);
+ if (dict.ContainsKey(k)) dict[k].Id = x.Id;
+ });
+ }
+ foreach (var wmsTakeMaterialOrder in wmsTakeMaterialOrderList)
+ {
+ if (wmsTakeMaterialOrder.Id > 0)
+ {
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
+ }
+ else
+ {
+ adds.Add(wmsTakeMaterialOrder.Adapt<WmsTakeMaterialOrder>());
+ }
+ }
+
+ if (importExcelType == ImportExcelType.ADD_AND_UPDATE) updates.ForEach(x => _wmsTakeMaterialOrderRep.Update(x));
+
+
+ var maxId = _wmsTakeMaterialOrderRep.DetachedEntities.OrderByDescending(x => x.Id).Select(x => x.Id).FirstOrDefault();
+ adds.ForEach(x => x.Id = ++maxId);
+ Db.GetDbContext().Set<WmsTakeMaterialOrder>().AddRange(adds);
+ Db.GetDbContext().SaveChanges();
+
+ }
+ await Task.CompletedTask;
+ return adds.Count;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇棰嗘枡鍗曠殑Excel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [HttpGet("downloadExcelTemplate")]
+ public async Task<IActionResult> DownloadExcelTemplate([FromQuery] string version)
+ {
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", version);
+ if (excelTemplate == null) throw Oops.Oh(ErrorCode.Excel002);
+ var path = Path.Combine(@"\", excelTemplate.TemplateFileName);
+ Stream ms = FileUtil.Download(path, excelTemplate.TemplateFileName);
+ var fileName = HttpUtility.UrlEncode($"{excelTemplate.Name}瀵煎叆妯℃澘.xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ /// <summary>
+ /// 鏍规嵁棰嗘枡鍗曟煡璇㈠弬鏁板鍑篍xcel
+ /// </summary>
+ /// <param name="input">棰嗘枡鍗曟煡璇㈠弬鏁�</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] WmsTakeMaterialOrderSearchNonPage input)
+ {
+ var wmsTakeMaterialOrderList = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(wmsTakeMaterialOrderList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("WmsTakeMaterialOrder", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs
new file mode 100644
index 0000000..0f0cb29
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/CallEmptyService.cs
@@ -0,0 +1,107 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda绌烘墭鍑哄簱
+ /// </summary>
+ [ApiDescriptionSettings("Pda绌烘墭鍑哄簱", Name = "CallEmpty", Order = 100)]
+ [Route("api/[Controller]")]
+ public class CallEmptyService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public CallEmptyService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+
+ /// <summary>
+ /// 鎻愪氦鍑哄簱
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("PdaContainerOut")]
+ [UnitOfWork]
+ public async Task PdaContainerOut([FromBody] PdaContainerOutInput input)
+ {
+ //鏍规嵁杈撳叆鏁伴噺寰幆鍑哄簱鐨勬墭鐩樻暟閲�
+ for (int i = 1; i < input.Qty+1; i++)
+ {
+ //鑾峰彇搴撳瓨涓殑绌烘墭鐩�
+ var wmsMaterialStockModal = await _wmsMaterialStockRep.FirstOrDefaultAsync(x => x.Source == RuKuSourceEnum.KONGTUO);
+ //鑾峰彇搴撲綅淇℃伅
+ var wmsPlacModal = await _wmsPlaceRep.FirstOrDefaultAsync(x => x.PlaceCode == wmsMaterialStockModal.PlaceCode);
+ //浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.CHUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.WEIZHIXING,
+ OrderNo = "N/A",
+ OrderDetailsId = 0,
+ ContainerCode = wmsMaterialStockModal.ContainerCode,
+ SourcePlace = wmsMaterialStockModal.PlaceCode,
+ ToPlace = wmsPlacModal.Aisle.ToString(), //鐩爣浣�
+ AreaName = "缁濈紭绔嬪簱",
+ IsRead = true, //WCS鏄惁鍙互璇诲彇
+ SendTimes = 1, //鍙戦�佹鏁�
+ Aisle = wmsPlacModal.Aisle,
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W,
+ Description = "绌烘墭"
+ };
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs
new file mode 100644
index 0000000..c0e2ec5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/CallEmpty/Dto/CallEmptyServiceInput.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 绌烘墭鍑哄簱鍏ュ弬
+ /// </summary>
+ public class PdaContainerOutInput
+ {
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public int Qty { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs
new file mode 100644
index 0000000..d5f38dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceInput.cs
@@ -0,0 +1,43 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+ /// </summary>
+ public class GetSortInfoInput
+ {
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍑哄簱鍗�
+ /// </summary>
+ public class SortPdaPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string No { get; set; }
+ }
+ /// <summary>
+ /// 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷f槑缁�
+ /// </summary>
+ public class SortPdaDetailPageInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string No { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs
new file mode 100644
index 0000000..7804b78
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/Dto/MaterialSortingServiceOutput.cs
@@ -0,0 +1,204 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鐗╂枡鍒嗘嫞鍙傛暟
+ /// </summary>
+ public class GetSortInfoOutput
+ {
+ /// <summary>
+ /// 瀹瑰櫒
+ /// </summary>
+ public WmsContainerDto WmsContainer { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞淇℃伅
+ /// </summary>
+ public List<WmsSortOrder> WmsSortOrderList { get; set; }
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鑾峰彇鍒嗘嫞鍗�
+ /// </summary>
+ public class SortPdaPageOutput : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁澶х被
+ /// </summary>
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public string MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ public DateTimeOffset Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄�
+ /// </summary>
+ public long IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public Admin.NET.Core.OrderStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟
+ /// </summary>
+ public class SortPdaDetailPageOutput
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public long OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ public string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ public decimal SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ public decimal ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ public Admin.NET.Core.SortStatusEnum SortStatus { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs
new file mode 100644
index 0000000..2cf5aa4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/MaterialSorting/MaterialSortingService.cs
@@ -0,0 +1,216 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鐗╂枡鍒嗘嫞鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("Pda鍒嗘嫞", Name = "MaterialSorting", Order = 100)]
+ [Route("api/[Controller]")]
+ public class MaterialSortingService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsSortOrder, MasterDbContextLocator> _wmsSortOrderRep;
+ private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public MaterialSortingService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+ IRepository<WmsSortOrder, MasterDbContextLocator> wmsSortOrderRep,
+ IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsSortOrderRep = wmsSortOrderRep;
+ _wmsTakeMaterialOrderRep = wmsTakeMaterialOrderRep;
+ }
+
+ /// <summary>
+ /// 鎵弿鍒嗘嫞鎵樼洏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetSortInfo")]
+ public async Task<GetSortInfoOutput> GetSortInfo([FromQuery] GetSortInfoInput input)
+ {
+ //妫�鏌ユ墭鐩�
+ var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.ContainerCode);
+ if (wareContainer == null) throw Oops.Oh("瀹瑰櫒淇℃伅涓嶅瓨鍦�!");
+ if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("瀹瑰櫒宸茬鐢�!");
+ if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("瀹瑰櫒鍦ㄥ簱浣嶄笉鍙娇鐢�!");
+ if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒涓嶅瓨鍦ㄥ垎鎷d俊鎭�!");
+
+ //鍒ゆ柇鏄惁鍦ㄤ换鍔′腑
+ var isExit = await _wmsTaskRep.AnyAsync(n => n.TaskStatus != TaskStatusEnum.WANCHENG && n.ContainerCode == input.ContainerCode);
+ if (isExit) throw Oops.Oh("瀹瑰櫒瀛樺湪鏈畬鎴愪换鍔�!");
+
+ // 鏌ヨ鍒嗘嫞璁板綍
+ var wareSortOrderList = await _wmsSortOrderRep.DetachedEntities
+ .Where(p => p.ContainerCode == input.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).ToListAsync();
+
+ return new GetSortInfoOutput
+ {
+ WmsContainer = wareContainer.Adapt<WmsContainerDto>(),
+ WmsSortOrderList = wareSortOrderList
+ };
+ }
+
+
+ /// <summary>
+ /// 鍒嗘嫞纭
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("SortSure")]
+ [UnitOfWork]
+ public async Task SortSure(GetSortInfoOutput input)
+ {
+ if (input.WmsContainer == null || input.WmsSortOrderList.Count == 0) throw Oops.Oh("浼犻�掑弬鏁板紓甯�!");
+
+ //妫�鏌ユ墭鐩�
+ var wareContainer = await _wmsContainerRep.FirstOrDefaultAsync(z => z.ContainerCode == input.WmsContainer.ContainerCode);
+ if (wareContainer == null) throw Oops.Oh("瀹瑰櫒淇℃伅涓嶅瓨鍦�!");
+ if (wareContainer.ContainerStatus == ContainerStatus.JINYONG) throw Oops.Oh("瀹瑰櫒宸茬鐢�!");
+ if (wareContainer.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("瀹瑰櫒鍦ㄥ簱浣嶄笉鍙娇鐢�!");
+ if (wareContainer.ContainerStatus != ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒涓嶅瓨鍦ㄥ垎鎷d俊鎭�!");
+
+ var wmsMaterialContainers = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ foreach (var item in input.WmsSortOrderList)
+ {
+ var wmsMaterialContainerModel = wmsMaterialContainers.FirstOrDefault(p => p.MaterialNo == item.Materialcode);
+ if (wmsMaterialContainerModel != null)
+ {
+ if (wmsMaterialContainerModel.BindQuantity < item.ActualQuantity) throw Oops.Oh("鍒嗘嫞缁勭洏寮傚父!");
+ wmsMaterialContainerModel.BindQuantity -= item.ActualQuantity;
+ if (wmsMaterialContainerModel.BindQuantity <= 0)
+ {
+ wmsMaterialContainers.Remove(wmsMaterialContainerModel);
+ await _wmsMaterialContainerRep.DeleteAsync(wmsMaterialContainerModel);
+ }
+ else
+ {
+ await _wmsMaterialContainerRep.UpdateAsync(wmsMaterialContainerModel);
+ }
+ }
+ var stockModel = await _wmsMaterialStockRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode && p.MaterialNo == item.Materialcode);
+ if (stockModel != null)
+ {
+ if (stockModel.StockNumber < item.ActualQuantity) throw Oops.Oh("鍒嗘嫞搴撳瓨寮傚父!");
+ stockModel.StockNumber -= item.ActualQuantity;
+ if (stockModel.StockNumber <= 0) await _wmsMaterialStockRep.DeleteAsync(stockModel);
+ else await _wmsMaterialStockRep.UpdateAsync(stockModel);
+ }
+
+ // 杩欓噷杩橀渶瑕佹牴鎹疄闄呬笅鍙戞暟鏉ユ洿鏂板垎鎷g姸鎬�
+ var wareSortOrderModel = await _wmsSortOrderRep.FirstOrDefaultAsync(p => p.ContainerCode == wareContainer.ContainerCode
+ && p.SortStatus != SortStatusEnum.FENJIANWANCHENG && p.Materialcode == item.Materialcode);
+
+ if (wareSortOrderModel != null)
+ {
+ wareSortOrderModel.ActualQuantity += item.ActualQuantity;
+
+ if (wareSortOrderModel.ActualQuantity >= wareSortOrderModel.SortQuantity)
+ {
+ wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANWANCHENG;
+ _wmsSortOrderRep.UpdateNow(wareSortOrderModel);
+
+ // 鍒嗘嫞鍗曞畬鎴愬悗鍒ゆ柇鍑哄簱鏄庣粏鏄惁瀹屾垚
+ }
+ else
+ {
+ wareSortOrderModel.SortStatus = SortStatusEnum.FENJIANZHONG;
+ _wmsSortOrderRep.UpdateNow(wareSortOrderModel);
+ }
+ }
+ }
+
+ var wareSortOrderCount = await _wmsSortOrderRep
+ .Where(p => p.ContainerCode == input.WmsContainer.ContainerCode && p.SortStatus != SortStatusEnum.FENJIANWANCHENG).CountAsync();
+
+ //鏇存柊鎵樼洏鐘舵�侊紝鍒嗘嫞瀹屾垚
+ if (wareSortOrderCount == 0)
+ {
+ if (wmsMaterialContainers.Count == 0) wareContainer.ContainerStatus = ContainerStatus.KOUXIAN;
+ else wareContainer.ContainerStatus = ContainerStatus.ZUPANG;
+ // 鏇存柊瀹瑰櫒鐘舵��
+ await _wmsContainerRep.UpdateAsync(wareContainer);
+ }
+ }
+
+
+ /// <summary>
+ /// pda鍑哄簱鍗曟煡璇�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("SortPdaPage")]
+ public async Task<PageResult<SortPdaPageOutput>> SortPdaPage([FromQuery] SortPdaPageInput input)
+ {
+ var wmsTakeMaterialOrder = await _wmsTakeMaterialOrderRep.DetachedEntities
+ .Where(!string.IsNullOrEmpty(input.No), u => EF.Functions.Like(u.NO, $"%{input.No.Trim()}%"))
+ .ProjectToType<SortPdaPageOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsTakeMaterialOrder;
+ }
+
+ /// <summary>
+ /// pda鏍规嵁鍑哄簱鍗曡幏鍙栧垎鎷e崟鏄庣粏
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("SortPdaDetailPage")]
+ public async Task<PageResult<SortPdaDetailPageOutput>> SortPdaDetailPage([FromQuery] SortPdaDetailPageInput input)
+ {
+ var wmsTakeMaterialOrder = await _wmsSortOrderRep.DetachedEntities
+ .Where(x=>x.OrderNo ==input.No)
+ .ProjectToType<SortPdaDetailPageOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return wmsTakeMaterialOrder;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs
new file mode 100644
index 0000000..7ad390a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/AutomaticWarehouseService.cs
@@ -0,0 +1,351 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda鍗婅嚜鍔ㄥ叆搴�
+ /// </summary>
+ [ApiDescriptionSettings("Pda鏈嶅姟", Name = "AutomaticWarehouse", Order = 100)]
+ [Route("api/[Controller]")]
+ public class AutomaticWarehouseService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public AutomaticWarehouseService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ }
+
+ ///// <summary>
+ ///// 鏍规嵁鎵规鍙疯幏鍙栨槑缁�
+ ///// </summary>
+ ///// <param name="input"></param>
+ ///// <returns></returns>
+ //[HttpGet("GetDetail")]
+ //public async Task<AutomaticWarehouseOutput> GetDetail([FromQuery] AutomaticWarehouseInput input)
+ //{
+ // //鏍规嵁鍙疯幏鍙栧崟鎹富琛�
+ // var wmsOrder =await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Batch == input.Batch
+ // && u.OrderDistributeType == TaskModel.BANZIDONG
+ // && u.OrderStatus == OrderStatusEnum.YIXIAFA
+ // );
+ // if (wmsOrder == null) throw Oops.Oh("鍗曟嵁琚挙鍥炴垨涓嶅瓨鍦�!");
+ // //鑾峰彇瀹屾垚鍜屾墽琛屼腑鐨勬渶澶х殑娴佹按鍙风殑鏄庣粏
+ // var modal = await _wmsOrderDetailsRep.DetachedEntities
+ // .Where(u => u.OrderId == wmsOrder.Id && (u.OrderStatus == OrderDetailsStatusEnum.ZHIXINGZHONG || u.OrderStatus == OrderDetailsStatusEnum.WANCHENG)
+ // ).OrderByDescending(u=>u.MaterialNo).FirstOrDefaultAsync();
+ // //涓嶅瓨鍦ㄨ绫诲瀷鐨勬槑缁嗘椂杩斿洖鏈�灏忕殑
+ // if (modal == null)
+ // {
+ // modal = await _wmsOrderDetailsRep.DetachedEntities
+ // .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+ // .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+ // if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+ // }
+ // else {
+ // //杩斿洖娴佹按鍙�+1
+ // modal = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+ // (u => u.MaterialNo == (Convert.ToInt32(modal.MaterialNo) + 1).ToString());
+ // if (modal == null)
+ // {
+ // modal = await _wmsOrderDetailsRep.DetachedEntities
+ // .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+ // .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+ // if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+ // }
+ // }
+
+
+
+
+ // //娌℃湁涓嬩竴涓槑缁嗘椂鏍规嵁鍗曟嵁涓昏〃鑾峰彇鍗曟嵁鏄庣粏涓祦姘村彿鏈�灏忓苟涓旀湭鎵ц鐨�
+ // //if (modal == null || Convert.ToDecimal(modal.MaterialNo.Substring(modal.MaterialNo.Length - 2)) == wmsOrder.OrderQuantityTotal)
+ // //{
+ // // modal = await _wmsOrderDetailsRep.DetachedEntities
+ // // .Where(u => u.OrderId == wmsOrder.Id && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING)
+ // // .OrderBy(u => u.MaterialNo).FirstOrDefaultAsync();
+ // // if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+ // //}
+ // //else
+ // //{
+ // // //杩斿洖娴佹按鍙�+1
+ // // modal = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+ // // (u => u.MaterialNo == (Convert.ToInt32(modal.MaterialNo) + 1).ToString());
+ // // if (modal == null) throw Oops.Oh("鍗曟嵁宸插畬鎴�!");
+ // //}
+
+ // AutomaticWarehouseOutput output = new AutomaticWarehouseOutput();
+ // output.MaterialNo = modal.MaterialNo;
+ // output.Batch = modal.Batch;
+ // output.SerialNo = modal.MaterialNo.Substring(modal.MaterialNo.Length - 2);
+ // output.Long = modal.Long;
+ // output.Wide = modal.Wide;
+ // output.High = modal.High;
+ // output.PreferredPort = wmsOrder.PreferredPort;
+ // output.Id = wmsOrder.Id;
+ // return output;
+ //}
+
+ ///// <summary>
+ ///// 鑾峰彇鍏ュ簱鍙�
+ ///// </summary>
+ ///// <returns></returns>
+ //[HttpGet("PdaGetWarehouseEntrance")]
+ //public async Task<OutEntranceListDefaultCodeOutput> PdaGetWarehouseEntrance([FromQuery] PdaGetWarehouseEntranceInput input)
+ //{
+ // OutEntranceListDefaultCodeOutput outEntranceListDefaultCodeOutput = new OutEntranceListDefaultCodeOutput();
+ // //鏍规嵁鍗曟嵁id鑾峰彇鍏ュ簱鍙�
+ // var wmsOrder = await _wmsOrderRep.DetachedEntities.Where(x => x.Id == input.Id).ProjectToType<WmsOrder>().FirstOrDefaultAsync();
+ // List<WmsWarehouseEntrance> wmsWarehouseEntrance = new List<WmsWarehouseEntrance>();
+ // //鏍规嵁锛屽垎鍓插叆搴撳彛瀛楃涓�
+ // List<string> entranceList = new List<string>();
+ // if (wmsOrder.PreferredPort != null)
+ // {
+ // entranceList = wmsOrder.PreferredPort.Split(',').ToList();
+ // }
+ // //濡傛灉鍏ュ簱鍗曢�夋嫨澶氫釜搴撳彛鍒欒繑鍥炲涓簱鍙o紝鍗曚釜鍒欒繑鍥炴墍鏈�
+ // if (entranceList.Count>1)
+ // {
+
+ // foreach (var item in entranceList)
+ // {
+ // var wmsWarehouseEntranceModal = await _wmsWarehouseEntranceRep
+ // .FirstOrDefaultAsync(x => x.LesWorkShopType == LesWorkShopType.FAPAOCHEJIAN && x.Type == WarehouseEntranceEnum.RUKUKOU && x.Code == item);
+ // wmsWarehouseEntrance.Add(wmsWarehouseEntranceModal);
+ // }
+ // //鑾峰彇涓婁竴鏉″叆搴撴槑缁�
+ // var lastWmsOrderDetailsModel = wmsOrder.WareOrderDetails
+ // .Where(z => z.OrderStatus == OrderDetailsStatusEnum.ZHIXINGZHONG || z.OrderStatus == OrderDetailsStatusEnum.WANCHENG).OrderByDescending(z => z.MaterialNo).FirstOrDefault();
+ // //濡傛灉涓嶅瓨鍦ㄥ垯榛樿璧嬪�肩涓�涓�
+ // if (lastWmsOrderDetailsModel == null)
+ // {
+ // //杩斿洖绗竴涓�
+ // outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+ // }
+ // else
+ // {
+ // //鑾峰彇涓婁竴鏉″叆搴撲换鍔�
+ // var lastModel = await _wmsTaskRep.DetachedEntities
+ // .FirstOrDefaultAsync(z => z.IsRead == false && z.OrderDetailsId == lastWmsOrderDetailsModel.Id);
+
+ // if (lastModel == null)
+ // {
+ // //杩斿洖绗竴涓�
+ // outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+ // }
+ // else
+ // {
+ // for (int i = 0; i < entranceList.Count; i++)
+ // {
+ // if (lastModel.SourcePlace == entranceList[i])
+ // {
+
+ // if (i + 2 > entranceList.Count)
+ // {
+ // outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+ // }
+ // else
+ // {
+ // outEntranceListDefaultCodeOutput.DefaultCode = entranceList[i + 1];
+ // }
+ // }
+ // }
+ // }
+
+ // }
+ // }
+ // else
+ // {
+ // wmsWarehouseEntrance = await _wmsWarehouseEntranceRep
+ // .Where(x => x.LesWorkShopType == LesWorkShopType.FAPAOCHEJIAN && x.Type == WarehouseEntranceEnum.RUKUKOU).ToListAsync();
+ // outEntranceListDefaultCodeOutput.DefaultCode = entranceList[0];
+ // }
+
+ // List<OutEntranceListOutput> outEntranceListOutputLists = new List<OutEntranceListOutput>();
+ // foreach (var item in wmsWarehouseEntrance)
+ // {
+ // OutEntranceListOutput outEntranceListOutputList = new OutEntranceListOutput();
+ // outEntranceListOutputList.Code = item.Code;
+ // outEntranceListOutputList.Name = item.Name;
+ // outEntranceListOutputLists.Add(outEntranceListOutputList);
+ // }
+ // outEntranceListDefaultCodeOutput.OutEntranceListOutputList = outEntranceListOutputLists;
+ // return outEntranceListDefaultCodeOutput;
+ //}
+
+ public int GetAisle(string PreferredPort)
+ {
+ if (PreferredPort == "101")
+ {
+ return 1;
+ }
+ else if (PreferredPort == "102")
+ {
+ return 2;
+ }
+ else if (PreferredPort == "103")
+ {
+ return 3;
+ }
+ else if (PreferredPort == "104")
+ {
+ return 4;
+ }
+ else if (PreferredPort == "105")
+ {
+ return 5;
+ }
+ else if (PreferredPort == "106")
+ {
+ return 6;
+ }
+ else if (PreferredPort == "107")
+ {
+ return 7;
+ }
+ else if (PreferredPort == "108")
+ {
+ return 8;
+ }
+ else if (PreferredPort == "109")
+ {
+ return 9;
+ }
+ else if (PreferredPort == "110")
+ {
+ return 10;
+ }
+ else if (PreferredPort == "111")
+ {
+ return 11;
+ }
+ else
+ {
+ return 12;
+ }
+
+ }
+
+ ///// <summary>
+ ///// 鎻愪氦鍏ュ簱
+ ///// </summary>
+ ///// <returns></returns>
+ //[HttpPost("PdaAutomaticWarehouse")]
+ //[UnitOfWork]
+ //public async Task PdaAutomaticWarehouse([FromBody] PdaAutomaticWarehouseInput input)
+ //{
+
+ // var wmsOrderDetails = await _wmsOrderDetailsRep.FirstOrDefaultAsync(u => u.Batch == input.Batch && Convert.ToInt32(u.MaterialNo.Substring(u.MaterialNo.Length - 2)) == input.SerialNo && u.OrderStatus == OrderDetailsStatusEnum.WEIZHIXING);
+ // if (wmsOrderDetails == null) throw Oops.Oh("鍏ュ簱鍗曟槑缁嗕笉瀛樺湪!");
+ // //楠岃瘉涓昏〃鍗曟嵁鏄惁涓轰笅鍙戠姸鎬�
+ // var wmsOrder = await _wmsOrderRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsOrderDetails.OrderId);
+ // if (wmsOrder == null) throw Oops.Oh("鍗曟嵁琚挙鍥炴垨涓嶅瓨鍦�!");
+ // //鏍规嵁搴撳彛code鑾峰彇搴撳彛淇℃伅
+ // var wmsWarehouseEntrance = await _wmsWarehouseEntranceRep.FirstOrDefaultAsync(u => u.Code == input.EntranceCode);
+ // if (wmsWarehouseEntrance == null) throw Oops.Oh("搴撳彛涓嶅瓨鍦�!");
+ // //鏍规嵁宸烽亾鑾峰彇绌洪棽搴撲綅
+ // var wmsPlaceList = await _wmsPlaceRep.DetachedEntities.Where(x => x.AreaId == 416250842476613
+ // && x.Aisle == GetAisle(wmsWarehouseEntrance.Code)&&x.Islock == YesOrNot.N && x.PlaceStatus == PlaceStatus.KONGXIAN
+ // ).ToListAsync();
+ // if (wmsPlaceList.Count<=15) throw Oops.Oh("搴撲綅涓嶈冻!");
+ // //鏇存敼鏄庣粏琛ㄧ姸鎬�
+ // wmsOrderDetails.OrderStatus = OrderDetailsStatusEnum.ZHIXINGZHONG;
+ // await _wmsOrderDetailsRep.UpdateAsync(wmsOrderDetails);
+ // //搴斿綋鍒ゆ柇鍚屼竴鍏ュ簱鍙d换鍔℃槸鍚︽墽琛屽畬鎴�
+ // //鍒ゆ柇涓婁竴鏉′换鍔℃槸鍚︽墽琛屽畬(鍚庢湡鏄惁鑰冭檻鍫嗗灈鏈哄彇璐у畬鎴�)
+ // var lastTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.Aisle == GetAisle(wmsWarehouseEntrance.Code)
+ // && u.TaskType == TaskType.RUKU && u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG && (u.TaskDodeviceStatus == TaskDodeviceStatusEnum.ZX_RSSX || u.TaskDodeviceStatus == TaskDodeviceStatusEnum.W));
+ // if (lastTask != null) throw Oops.Oh("涓婃潯浠诲姟鏈畬鎴�,璇风◢鍚庢搷浣�!");
+ // var wmsContainer = new WmsContainer();
+ // //鐭鏁版嵁寮傚父
+ // while (true)
+ // {
+ // //鑾峰彇鎵樼洏,瀹為檯涓婃病鏈夋墭鐩�
+ // wmsContainer = await _wmsContainerRep.FirstOrDefaultAsync(u => u.WorkShopType == LesWorkShopType.FAPAOCHEJIAN && u.ContainerStatus == ContainerStatus.KOUXIAN && u.IsVirtually == YesOrNot.Y);
+ // if (wmsContainer == null) throw Oops.Oh("鏃犺櫄鎷熸墭鐩�!");
+ // var materialStock = await _wmsMaterialStockRep.Where(p => p.ContainerCode == wmsContainer.ContainerCode).FirstOrDefaultAsync();
+ // if (materialStock == null) {
+ // wmsContainer.ContainerStatus = ContainerStatus.ZUPANG;
+ // await _wmsContainerRep.UpdateNowAsync(wmsContainer);
+ // break;
+ // }
+ // else
+ // {
+ // wmsContainer.ContainerStatus = ContainerStatus.KUWEI;
+ // await _wmsContainerRep.UpdateNowAsync(wmsContainer);
+ // };
+ // }
+ // //鍒涘缓缁勭洏璁板綍
+ // WmsMaterialContainer bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.ContainerId = wmsContainer.Id;
+ // bindentranceModel.ContainerCode = wmsContainer.ContainerCode;
+ // bindentranceModel.MaterialNo = wmsOrderDetails.MaterialNo;
+ // bindentranceModel.MaterialBatch = wmsOrderDetails.Batch;
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.OrderDetailsId = wmsOrderDetails.Id;
+ // bindentranceModel.MaterialDensity = wmsOrderDetails.MaterialDensity;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = wmsOrder.OrderNo;
+ // bindentranceModel.MaterialName = "N/A";
+ // await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+
+ // //鏍规嵁鏄庣粏id鑾峰彇浠诲姟
+ // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync(u => u.OrderDetailsId == wmsOrderDetails.Id);
+ // if (wmsTask == null) throw Oops.Oh("璇ヤ换鍔′笉瀛樺湪!");
+
+ // //鏇存敼浠诲姟
+ // wmsTask.OrderNo = bindentranceModel.OrderNo;
+ // wmsTask.TaskLevel = 2;
+ // wmsTask.ContainerCode = wmsContainer.ContainerCode;
+ // wmsTask.SourcePlace = wmsWarehouseEntrance.Code;//鍏ュ簱鍙�
+ // wmsTask.Aisle = GetAisle(wmsWarehouseEntrance.Code);
+ // wmsTask.TaskStatus = TaskStatusEnum.ZHIXINGZHONG;
+ // wmsTask.IsRead = true;//wcs鏄惁鍙互璇诲彇
+ // wmsTask.TaskDodeviceStatus = TaskDodeviceStatusEnum.W;
+ // await _wmsTaskRep.UpdateAsync(wmsTask);
+ //}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs
new file mode 100644
index 0000000..e30830e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseInput.cs
@@ -0,0 +1,82 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏍规嵁鎵规鍙疯幏鍙栦换鍔″弬鏁�
+ /// </summary>
+ public class AutomaticWarehouseInput
+ {
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵规鍙蜂笉鑳戒负绌�")]
+ public virtual string Batch { get; set; }
+ }
+
+ /// <summary>
+ /// 鏍规嵁id鑾峰彇鍏ュ簱鍙d笅鎷夋
+ /// </summary>
+ public class PdaGetWarehouseEntranceInput
+ {
+ /// <summary>
+ /// id
+ /// </summary>
+ public long Id { get; set; }
+ }
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟鍙傛暟
+ /// </summary>
+ public class PdaAutomaticWarehouseInput
+ {
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵规鍙蜂笉鑳戒负绌�")]
+ public virtual string Batch { get; set; }
+
+ /// <summary>
+ /// 娴佹按鍙�
+ /// </summary>
+ [Required(ErrorMessage = "娴佹按鍙蜂笉鑳戒负绌�")]
+ public virtual int SerialNo { get; set; }
+ /// <summary>
+ /// 鍏ュ簱鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鍏ュ簱鍙d笉鑳戒负绌�")]
+ public virtual string EntranceCode { get; set; }
+ }
+ /// <summary>
+ /// 鍙嶉浠诲姟鐘舵�佸弬鏁�
+ /// </summary>
+ public class CallBackInput
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [Required(ErrorMessage = "浠诲姟鍙蜂笉鑳戒负绌�")]
+ public virtual string TaskNo { get; set; }
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// 杈撻�佺嚎 = 1,
+ /// 鍫嗗灈鏈� = 2,
+ /// </summary>
+ [Required(ErrorMessage = "璁惧绫诲瀷")]
+ public virtual string DeviceType { get; set; }
+
+ ///<summary>
+ ///璁惧鎵ц鐘舵��
+ ///杈撻�佺嚎鎵ц涓� = 1,
+ ///杈撻�佺嚎瀹屾垚 = 2,
+ ///鍫嗗灈鏈烘墽琛屼腑 = 3,
+ ///鍫嗗灈鏈哄畬鎴� = 4,
+ /// </summary>
+ [Required(ErrorMessage = "璁惧绫诲瀷")]
+ public virtual string TaskState { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs
new file mode 100644
index 0000000..e8cec59
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsAutomaticWarehouse/Dto/AutomaticWarehouseOutput.cs
@@ -0,0 +1,99 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁缂栧彿鑾峰彇浠诲姟杩斿洖鍊�
+ /// </summary>
+ public class AutomaticWarehouseOutput
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鎵规
+ /// </summary>
+ public string Batch { get; set; }
+
+ /// <summary>
+ /// 娴佹按鍙�
+ /// </summary>
+ public string SerialNo { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鍙�
+ /// </summary>
+ public string PreferredPort { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long Id { get; set; }
+ }
+
+
+ /// <summary>
+ /// 杩斿洖鍙傛暟
+ /// </summary>
+ public class OutEntranceListDefaultCodeOutput
+ {
+ /// <summary>
+ /// 榛樿鍏ュ簱鍙�
+ /// </summary>
+ public string DefaultCode { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鍙e悕绉�
+ /// </summary>
+ public List<OutEntranceListOutput> OutEntranceListOutputList { get; set; }
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍏ュ簱鍙d笅鎷夋杈撳嚭鍙傛暟
+ /// </summary>
+ public class OutEntranceListOutput
+ {
+ /// <summary>
+ /// 鍏ュ簱鍙ode
+ /// </summary>
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鍙e悕绉�
+ /// </summary>
+ public string Name { get; set; }
+ }
+
+ /// <summary>
+ /// 鍙嶉浠诲姟鐘舵�佽緭鍑哄弬鏁�
+ /// </summary>
+ public class CallBackOutput
+ {
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public virtual string LocationCode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs
new file mode 100644
index 0000000..d5363e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseInput.cs
@@ -0,0 +1,69 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎵撳寘淇℃伅鍙傛暟
+ /// </summary>
+ public class GroupDiskOutWarehouseInput
+ {
+ /// <summary>
+ /// 鍑哄簱鍙�
+ /// </summary>
+ public virtual string OutputEntrance { get; set; }
+
+ /// <summary>
+ /// PLC鐗╂枡缂栫爜
+ /// </summary>
+ public List<MaterialNoList> PlcMaterialNoList { get; set; }
+
+
+ /// <summary>
+ /// WMS鐗╂枡缂栫爜
+ /// </summary>
+ public List<MaterialNoList> WcsMaterialNoList { get; set; }
+ }
+
+ /// <summary>
+ /// 鎵撳寘淇℃伅鍙傛暟
+ /// </summary>
+ public class PackOutWarehouseInput
+ {
+ /// <summary>
+ /// 鎵撳寘鏍囩
+ /// </summary>
+ public virtual string PackCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public List<MaterialNoList> MaterialNoList { get; set; }
+ }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜list
+ /// </summary>
+ public class MaterialNoList
+ {
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+ }
+ /// <summary>
+ /// 鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+ /// </summary>
+ public class GetPackInfomationInput
+ {
+ /// <summary>
+ /// 鍑哄簱鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鍑哄簱鍙d笉鑳戒负绌�")]
+ public virtual string OutputEntrance { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs
new file mode 100644
index 0000000..71b4f9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/Dto/GroupDiskOutWarehouseOutput.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鎵撳寘淇℃伅杩斿洖鍙傛暟
+ /// </summary>
+ public class GroupDiskOutWarehouseOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ public string OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 鎵撳寘淇℃伅list
+ /// </summary>
+ public List<GroupDiskOutWarehouse> GroupDiskOutWarehouseList { get; set; }
+ }
+
+ /// <summary>
+ /// 鎵撳寘淇℃伅
+ /// </summary>
+ public class GroupDiskOutWarehouse
+ {
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public virtual string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ public int High { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs
new file mode 100644
index 0000000..da0d554
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsGroupDiskOutWarehouse/GroupDiskOutWarehouseService.cs
@@ -0,0 +1,236 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda缁勭洏鍑哄簱
+ /// </summary>
+ [ApiDescriptionSettings("Pda鏈嶅姟", Name = "GroupDiskOutWarehouse", Order = 100)]
+ [Route("api/[Controller]")]
+ public class GroupDiskOutWarehouseService : IDynamicApiController, ITransient
+ {
+
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<LesPackWarehouse, MasterDbContextLocator> _lesPackWarehouseRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public GroupDiskOutWarehouseService(
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<LesPackWarehouse, MasterDbContextLocator> lesPackWarehouseRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep
+ )
+ {
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _lesPackWarehouseRep = lesPackWarehouseRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ }
+
+
+ ///// <summary>
+ ///// 鏍规嵁鍑哄簱鍙h幏鍙栫爜鍨涙暟鎹�
+ ///// </summary>
+ ///// <param name="input"></param>
+ ///// <returns></returns>
+ //[HttpGet("GetPackInfomation")]
+ //public async Task<GroupDiskOutWarehouseOutput> GetPackInfomation([FromQuery] GetPackInfomationInput input)
+ //{
+ // //鏍规嵁鍑哄簱鍙h幏鍙栨墦鍖呰〃鏁版嵁
+ // var lesPackWarehouseList = await _lesPackWarehouseRep.DetachedEntities
+ // .Where(u => u.OutputEntrance == input.OutputEntrance && u.LesPackState == LesPackState.WEICHUKU)
+ // .ToListAsync();
+ // if (lesPackWarehouseList.Count==0) throw Oops.Oh("鏆傛棤鐮佸灈淇℃伅!");
+
+ // //if(lesPackWarehouseList.Select(p=>p.OrderNo).Count()>=2) throw Oops.Oh("鐮佸灈淇℃伅瀛樺湪澶氭潯!璇峰埌PC绔繘琛屽鐞�!");
+
+ // //鑾峰彇褰撳墠鍑哄簱鍗曟嵁涓墽琛屼腑鍗曟嵁鏄庣粏
+ // var wmsOrderDetailList = await _wmsOrderDetailsRep
+ // .Where(u=>u.WareOrder.OrderLargeCategory== 408734100951109 && u.WareOrder.ExitPort==input.OutputEntrance
+ // && lesPackWarehouseList.Select(n=>n.MaterialNo).ToList().Contains(u.MaterialNo)).ProjectToType<WmsOrderDetails>().ToListAsync();
+ // if (wmsOrderDetailList.Count == 0) throw Oops.Oh("鏆傛棤鍑哄簱鍗曟嵁!");
+
+ // List<GroupDiskOutWarehouse> groupDiskOutWarehouseList = new List<GroupDiskOutWarehouse>();//鎵撳寘淇℃伅list
+ // foreach (var item in wmsOrderDetailList)
+ // {
+ // GroupDiskOutWarehouse groupDiskOutWarehouse = new GroupDiskOutWarehouse();
+ // groupDiskOutWarehouse.MaterialNo = item.MaterialNo;
+ // groupDiskOutWarehouse.Long = item.Long;
+ // groupDiskOutWarehouse.Wide = item.Wide;
+ // groupDiskOutWarehouse.High = item.High;
+ // groupDiskOutWarehouseList.Add(groupDiskOutWarehouse);
+ // }
+
+ // return new GroupDiskOutWarehouseOutput()
+ // {
+ // OrderNo = wmsOrderDetailList.FirstOrDefault().WareOrder.OrderNo,
+ // OrderSubclass = (await _wmsOrderTypeRep.FirstOrDefaultAsync(u => u.Id == wmsOrderDetailList.FirstOrDefault().WareOrder.OrderSubclass)).Name,
+ // GroupDiskOutWarehouseList = groupDiskOutWarehouseList
+ // };
+ //}
+
+ ///// <summary>
+ ///// 纭鍑哄簱
+ ///// </summary>
+ ///// <param name="input"></param>
+ ///// <returns></returns>
+ //[HttpPost("Pack")]
+ //[UnitOfWork]
+ //public async Task PackOutWarehouse([FromBody] PackOutWarehouseInput input)
+ //{
+ // if (input.PackCode == null) throw Oops.Oh("鎵撳寘鏍囩涓嶈兘涓虹┖!");
+ // if (input.MaterialNoList.Count == 0) throw Oops.Oh("鐗╂枡鐮佷笉鑳戒负绌�!");
+ // //寰幆鐗╂枡鐮�
+ // foreach (var item in input.MaterialNoList)
+ // {
+ // //鏇存敼鎵撳寘琛ㄤ腑鐗╂枡鐘舵��
+ // var lesPackWarehouse = await _lesPackWarehouseRep.FirstOrDefaultAsync(u => u.MaterialNo == item.MaterialNo && u.LesPackState == LesPackState.WEICHUKU);
+ // if (lesPackWarehouse == null) throw Oops.Oh("鎵撳寘琛ㄤ腑涓嶅瓨鍦ㄦ鐗╂枡!");
+ // lesPackWarehouse.PackCode = input.PackCode;
+ // lesPackWarehouse.LesPackState = LesPackState.ZHUANYIKU;
+ // await _lesPackWarehouseRep.UpdateAsync(lesPackWarehouse);
+
+ // //鏇存敼鍗曟嵁鏄庣粏鐨勭姸鎬�
+ // var wmsOrderDetail = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+ // (u => u.MaterialNo == item.MaterialNo && u.WareOrder.OrderLargeCategory == 408734100951109);
+ // if (wmsOrderDetail == null) throw Oops.Oh("鍗曟嵁鏄庣粏涓笉瀛樺湪姝ょ墿鏂�!");
+ // wmsOrderDetail.OrderStatus = OrderDetailsStatusEnum.WANCHENG;
+ // await _lesPackWarehouseRep.UpdateAsync(lesPackWarehouse);
+
+ // //鏇存敼浠诲姟鐘舵��
+ // var wmsTask = await _wmsTaskRep.FirstOrDefaultAsync
+ // (u => u.OrderDetailsId == wmsOrderDetail.Id && u.TaskStatus == TaskStatusEnum.ZHIXINGZHONG
+ // && u.TaskType == TaskType.CHUKU);
+ // if (wmsTask == null) throw Oops.Oh("浠诲姟涓嶅瓨鍦�!");
+ // wmsTask.TaskStatus = TaskStatusEnum.WANCHENG;
+ // await _wmsTaskRep.UpdateAsync(wmsTask);
+ // }
+
+ // //鏍囩鐮佸綋鎵樼洏鐮佷娇鐢�
+ // var oldwmsMaterialContainerList = await _wmsMaterialContainerRep
+ // .Where(p => p.ContainerCode == input.PackCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+ // if (oldwmsMaterialContainerList.Count > 0)
+ // {
+ // foreach (var item in oldwmsMaterialContainerList)
+ // {
+ // await _wmsMaterialContainerRep.DeleteAsync(item);
+ // }
+ // }
+ // //缁勭洏鍗曟嵁 榛樿绌烘墭鍗曟嵁
+ // var orderNo = "N/A";
+ // if (input.MaterialNoList.Count > 0) orderNo =YitIdHelper.NextId().ToString();
+
+ // //鏂板缁勭洏鏁版嵁
+ // foreach (var item in input.MaterialNoList)
+ // {
+ // //鑾峰彇鏄庣粏
+ // var wmsOrderDetail = await _wmsOrderDetailsRep.FirstOrDefaultAsync
+ // (u => u.MaterialNo == item.MaterialNo && u.WareOrder.OrderLargeCategory == 408734100951109);
+ // if (wmsOrderDetail == null) throw Oops.Oh("鍗曟嵁淇℃伅寮傚父!"+item.MaterialNo);
+ // WmsMaterialContainer bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.ContainerCode = input.PackCode;
+ // bindentranceModel.ContainerId = 405636578041925;
+ // bindentranceModel.MaterialNo = item.MaterialNo;
+ // bindentranceModel.MaterialBatch = wmsOrderDetail.Batch;
+ // bindentranceModel.MaterialSpec = wmsOrderDetail.Long.ToString() + "*" + wmsOrderDetail.Wide.ToString() + "*" + wmsOrderDetail.High.ToString();
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.OrderDetailsId = wmsOrderDetail.Id;
+ // bindentranceModel.MaterialDensity = wmsOrderDetail.MaterialDensity;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = orderNo;
+ // bindentranceModel.MaterialName = "N/A";
+ // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ // }
+ // //鑾峰彇杞Щ搴撳簱浣�
+ // var zyPlaceModel = await _wmsPlaceRep.DetachedEntities.Where(p => p.WmsArea.AreaType == AreaType.ZHUANYIKU
+ // && p.Islock == YesOrNot.N && p.PlaceStatus == PlaceStatus.KONGXIAN).FirstOrDefaultAsync();
+
+ // //鍒涘缓浠诲姟 鐩墠浜哄伐杞Щ鏃犻渶鍒涘缓浠诲姟
+ // //鍒涘缓鎵樼洏搴撲綅鍏崇郴琛�
+ // var wmsContainerPlaceModel = new WmsContainerPlace()
+ // {
+ // PlaceId = zyPlaceModel.Id,
+ // PlaceCode = zyPlaceModel.PlaceCode,
+ // ContainerId = 405636578041925, //缁欎簣涓�涓壒瀹氱殑鍊�
+ // ContainerCode = input.PackCode,
+ // ContainerPlaceStatus = CommonStatus.ENABLE
+ // };
+ // await _wmsContainerPlaceRep.InsertAsync(wmsContainerPlaceModel);
+
+ // //鏇存柊搴撳瓨
+ // var wmsMaterialContainerList = await _wmsMaterialContainerRep.DetachedEntities
+ // .Where(p => p.OrderNo == orderNo && p.BindStatus == CommonStatus.ENABLE).ProjectToType<WmsMaterialContainer>().ToListAsync();
+
+ // //鐗╂枡鍏ュ簱
+ // foreach (var item in wmsMaterialContainerList)
+ // {
+ // var StockModel = await _wmsMaterialStockRep
+ // .Where(p => p.ContainerCode == input.PackCode
+ // && p.MaterialName == item.MaterialName && p.MaterialNo == item.MaterialNo && p.MaterialBatch == item.MaterialBatch ).FirstOrDefaultAsync();
+ // if (StockModel != null)
+ // {
+ // StockModel.MaterialDensity = item.MaterialDensity;
+ // StockModel.PlaceCode = zyPlaceModel.PlaceCode;
+ // StockModel.AreaId = zyPlaceModel.AreaId;
+ // StockModel.StockNumber = item.BindQuantity;
+ // await _wmsMaterialStockRep.UpdateAsync(StockModel);
+ // }
+ // else
+ // {
+ // StockModel = new WmsMaterialStock()
+ // {
+ // MaterialNo = item.MaterialNo,
+ // //MaterialType = item.MaterialType,
+ // MaterialName = item.MaterialName,
+ // MaterialSpec = item.MaterialSpec,
+ // MaterialBatch = item.MaterialBatch,
+ // MaterialDensity = item.MaterialDensity,
+ // //InspectionMethod = item.WmsMaterial.InspectionMethod,
+ // //UnitType = item.WmsMaterial.UnitType,
+ // //UnitNo = item.WmsMaterial.UnitNo,
+ // StockNumber = item.BindQuantity,
+ // PlaceCode = zyPlaceModel.PlaceCode,
+ // ContainerCode = input.PackCode,
+ // AreaId = zyPlaceModel.AreaId,
+ // };
+ // await _wmsMaterialStockRep.InsertAsync(StockModel);
+ // }
+ // }
+
+ // //鏇存柊搴撲綅
+ // zyPlaceModel.PlaceStatus = PlaceStatus.CUNHUO;
+ // await _wmsPlaceRep.UpdateAsync(zyPlaceModel);
+ //}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs
new file mode 100644
index 0000000..4b63939
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeInput.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鍏ュ弬
+ /// </summary>
+ public class GetContainerInput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+ }
+
+ /// <summary>
+ ///缁勭洏鍏ュ弬
+ /// </summary>
+ public class GroupDiskInput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+ public String ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 缁勭洏鐗╂枡淇℃伅
+ /// </summary>
+ public class ReceiptMaterialContainerInput
+ {
+ /// <summary>
+ /// 鏄庣粏id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+ }
+
+ /// <summary>
+ ///鎻愪氦鍏ュ簱鍏ュ弬
+ /// </summary>
+ public class PdaInWarehouseInput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+ public String ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ ///鑾峰彇鐗╂枡鍏ュ弬
+ /// </summary>
+ public class PadGetMaterialInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Required(ErrorMessage = "鍗曟嵁缂栧彿涓嶈兘涓虹┖")]
+ public String NO { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs
new file mode 100644
index 0000000..15c58c4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/Dto/WmsInWarehouseeOutput.cs
@@ -0,0 +1,154 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鍏ュ弬
+ /// </summary>
+ public class GetContainerOutput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public WmsContainerDto WmsContainer { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<WmsMaterialContainer> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+ /// </summary>
+ public class GroupDiskOutput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ public string Containercode { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鍗曟嵁
+ /// </summary>
+ public string OrderNo { get; set; }
+ }
+ /// <summary>
+ /// 鐗╂枡杩斿洖鍙傛暟
+ /// </summary>
+ public class PadGetMaterialOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs
new file mode 100644
index 0000000..5c239eb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsInWarehouse/WmsInWarehouseService.cs
@@ -0,0 +1,317 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda鐗╂枡鍏ュ簱
+ /// </summary>
+ [ApiDescriptionSettings("Pda鐗╂枡鍏ュ簱", Name = "WmsInWarehouse", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsInWarehouseService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsInWarehouseService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetContainer")]
+ [UnifyResult(typeof(GetContainerOutput))]
+ public async Task<object> CheckTray([FromQuery] GetContainerInput input)
+ {
+ var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync();
+ //濡傛灉鎵樼洏涓嶅瓨鍦ㄥ垯娣诲姞涓�涓�
+ if (containerModel == null) {
+ var ContainerInfo = input.Adapt<WmsContainer>();
+ ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+ ContainerInfo.AssetNo = "N/A";
+ ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+ ContainerInfo.ErpNo = "N/A";
+ ContainerInfo.IsVirtually = YesOrNot.N;
+ ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+ await _wmsContainerRep.InsertNowAsync(ContainerInfo);
+ containerModel = ContainerInfo;
+ }
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪鏈畬鎴愪换鍔�!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ var GetContainerOutputModel = new GetContainerOutput()
+ {
+ WmsContainer = containerModel.Adapt<WmsContainerDto>(),
+ ContainerCode = containerModel.ContainerCode,
+ };
+ //鑾峰彇缁勭洏鏁版嵁
+ GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE)
+ .OrderByDescending(p => p.CreatedTime)
+ .ProjectToType<WmsMaterialContainer>().ToListAsync();
+ return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel);
+ }
+
+ /// <summary>
+ /// 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("PadGetMaterial")]
+ [UnifyResult(typeof(List<PadGetMaterialOutput>))]
+ public async Task<object> PadGetMaterial([FromQuery] PadGetMaterialInput input)
+ {
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅敓浜у叆搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐢熶骇鍏ュ簱"));
+ //鑾峰彇涓昏〃
+ var wmsOrders = await _wmsOrderRep.DetachedEntities
+ .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id)
+ .FirstOrDefaultAsync();
+ if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦ㄦ垨鏈笅鍙�!");
+ var wmsOrderDetailList =await _wmsOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id)
+ .ProjectToType<PadGetMaterialOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList);
+ }
+
+
+ /// <summary>
+ /// 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("GroupDisk")]
+ [UnitOfWork]
+ public async Task<GroupDiskOutput> GroupDisk(GroupDiskInput input)
+ {
+ //鎵樼洏淇℃伅
+ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+ if (containerModel == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ //缁勭洏淇℃伅
+ var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList);
+
+ //淇敼鎵樼洏鐘舵��
+ containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+ await _wmsContainerRep.UpdateAsync(containerModel);
+
+ //缁勭洏鍗曟嵁
+ var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+ if (input.WmsMaterials.Count >0)//鏈夌墿鏂欑殑鎯呭喌
+ {
+ foreach (var item in input.WmsMaterials)
+ {
+ var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+ bindentranceModel.MaterialName = item.Materialname;
+ bindentranceModel.MaterialNo = item.Materialcode;
+ bindentranceModel.MaterialId = 4567;//鏆傚畾
+ bindentranceModel.ContainerId = containerModel.Id;
+ bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ bindentranceModel.MaterialBatch = "N/A";
+ bindentranceModel.MaterialSpec = "N/A";
+ bindentranceModel.BindQuantity = item.Qty;
+ bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ bindentranceModel.OrderNo = orderNo;
+ bindentranceModel.MaterialDensity = "N/A";
+ bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+ }
+ }
+ //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+ //{
+ // // 鍒涘缓鏂扮粍鐩樿褰�
+ // var bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.MaterialName = "绌烘墭";
+ // bindentranceModel.MaterialNo = containerModel.ContainerCode;
+ // bindentranceModel.MaterialId = 55555;//鏆傚畾
+ // bindentranceModel.ContainerId = containerModel.Id;
+ // bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ // bindentranceModel.MaterialBatch = "N/A";
+ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = orderNo;
+ // bindentranceModel.MaterialDensity = "N/A";
+ // bindentranceModel.Id = YitIdHelper.NextId();
+ // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ //}
+ return new GroupDiskOutput()
+ {
+ Containercode = input.ContainerCode,
+ OrderNo = orderNo
+ };
+ }
+
+ /// <summary>
+ /// 鎻愪氦鍏ュ簱
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("PdaInWarehouse")]
+ [UnitOfWork]
+ public async Task PdaInWarehouse([FromBody] PdaInWarehouseInput input)
+ {
+
+ //妫�鏌ユ墭鐩�
+ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG);
+ if (containerModel == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦�!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI);
+ if (isInPlace != null) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ //鍒犻櫎缁勭洏淇℃伅
+ var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList);
+
+ //缁勭洏鍗曟嵁鍙�
+ var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+ if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//鏈夌墿鏂欑殑鎯呭喌
+ {
+ foreach (var item in input.WmsMaterials)
+ {
+ var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+ bindentranceModel.MaterialName = item.Materialname;
+ bindentranceModel.MaterialNo = item.Materialcode;
+ bindentranceModel.MaterialId = 4567;
+ bindentranceModel.ContainerId = containerModel.Id;
+ bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ bindentranceModel.MaterialBatch = "N/A";
+ bindentranceModel.MaterialSpec = "N/A";
+ bindentranceModel.BindQuantity = item.Qty;
+ bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ bindentranceModel.OrderNo = orderNo;
+ bindentranceModel.MaterialDensity = "N/A";
+ bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+ ////鏇存敼鏄庣粏鍏ュ簱鏁伴噺
+ //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id);
+ //wmsOrderDetailsModal.InventoryQty += item.Qty;
+ }
+ }
+ //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+ //{
+ // // 鍒涘缓鏂扮粍鐩樿褰�
+ // var bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.MaterialName = "绌烘墭";
+ // bindentranceModel.MaterialNo = containerModel.ContainerCode;
+ // bindentranceModel.MaterialId = 55555;//鏆傚畾
+ // bindentranceModel.ContainerId = containerModel.Id;
+ // bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ // bindentranceModel.MaterialBatch = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = orderNo;
+ // bindentranceModel.MaterialDensity = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+ // bindentranceModel.Id = YitIdHelper.NextId();
+ // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ //}
+
+ ////淇敼鎵樼洏鐘舵��
+ //containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+ //await _wmsContainerRep.UpdateAsync(containerModel);
+ //鍒嗛厤宸烽亾
+ var Aisle = 1;
+
+ //浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.RUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.ZHIXINGZHONG,
+ OrderNo = orderNo,
+ OrderDetailsId = 0,
+ ContainerCode = input.ContainerCode,
+ SourcePlace = "鍏ュ簱鍙�",//鐜板満鎯呭喌涓虹┖
+ ToPlace = "", //鐩爣浣�
+ AreaName = "缁濈紭绔嬪簱",
+ IsRead = true, //WCS鏄惁鍙互璇诲彇
+ SendTimes = 1, //鍙戦�佹鏁�
+ Aisle = Aisle,// 鏍规嵁搴撳尯id鑾峰彇鍑犲彿鎻愬崌鏈猴紝娴嬭瘯浣跨敤涓�鍙�
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W
+ };
+ if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) {
+ takmodel.Description = "绌烘墭";
+ }
+ else
+ {
+ takmodel.Description = "鐗╂枡";
+ };
+
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs
new file mode 100644
index 0000000..cff9b4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderInput.cs
@@ -0,0 +1,39 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁鍙峰弬鏁�
+ /// </summary>
+ public class GetOrderDetailInput
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+ }
+ /// <summary>
+ /// 纭鏀惰揣鍙傛暟
+ /// </summary>
+ public class ConfirmReceiptInput
+ {
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 璇︽儏鍙傛暟
+ /// </summary>
+ public List<GetOrderDetailOutput> GetOrderDetailOutputList { get; set; }
+ }
+
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs
new file mode 100644
index 0000000..2763f47
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/Dto/WmsPdaReceiptOrderOutput.cs
@@ -0,0 +1,125 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍗曟嵁鍙疯繑鍥炲弬鏁�
+ /// </summary>
+ public class GetOrderDetailOutput
+ {
+ /// <summary>
+ /// Id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ public OrderDetailsStatusEnum OrderStatus { get; set; }
+
+ /// <summary>
+ /// 閫佽揣鏁伴噺
+ /// </summary>
+ public decimal DeliveryQty { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鏁伴噺
+ /// </summary>
+ public decimal ReceivedQty { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs
new file mode 100644
index 0000000..0a39eee
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsPdaReceiptOrder/WmsPdaReceiptOrderService.cs
@@ -0,0 +1,147 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using StackExchange.Redis;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda鏀惰揣
+ /// </summary>
+ [ApiDescriptionSettings("Pda鏀惰揣", Name = "PdaReceiptOrder", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsPdaReceiptOrderService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder, MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> _wmsReceiptOrderDetailsRep;
+ private readonly IRepository<WmsReceiptOrder, MasterDbContextLocator> _wmsReceiptOrderRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsPdaReceiptOrderService(
+ IRepository<WmsOrder, MasterDbContextLocator> wmsOrderRep,
+ IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep,
+ IRepository<WmsReceiptOrderDetails, MasterDbContextLocator> wmsReceiptOrderDetailsRep,
+ IRepository<WmsReceiptOrder, MasterDbContextLocator> wmsReceiptOrderRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsReceiptOrderDetailsRep = wmsReceiptOrderDetailsRep;
+ _wmsReceiptOrderRep = wmsReceiptOrderRep;
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁鍗曟嵁鍙疯幏鍙栨槑缁�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetOrderDetail")]
+ [UnitOfWork]
+ [UnifyResult(typeof(List<GetOrderDetailOutput>))]
+ public async Task<object> GetOrderDetail([FromQuery] GetOrderDetailInput input)
+ {
+ //鑾峰彇涓诲崟鎹�
+ var wmsOrders = await _wmsReceiptOrderRep.DetachedEntities
+ .FirstOrDefaultAsync(u => u.NO == input.NO);
+ if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦�!");
+ //宸叉敹璐х殑鏄庣粏涓嶆樉绀�
+ var wmsOrderDetails = await _wmsReceiptOrderDetailsRep.DetachedEntities
+ .Where(u => u.OrderId == wmsOrders.Id)
+ .Where(u=>u.ReceivingStatus != ReceivingStatus.YISHOUHUO)
+ .ProjectToType<WmsReceiptOrderDetailOutput>()
+ .ToListAsync();
+ return wmsOrderDetails;
+ }
+
+ /// <summary>
+ /// pda纭鏀惰揣
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("ConfirmReceipt")]
+ [UnitOfWork]
+ public async Task ConfirmReceipt([FromBody] ConfirmReceiptInput input)
+ {
+ if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+ //鑾峰彇涓诲崟鎹�
+ var wmsOrderModal = await _wmsReceiptOrderRep.DetachedEntities
+ .ProjectToType<WmsReceiptOrder>()
+ .FirstOrDefaultAsync(u => u.NO == input.NO);
+ if (wmsOrderModal == null) throw Oops.Oh("鍗曟嵁涓嶅瓨鍦�!");
+ if (wmsOrderModal.ReceivingStatus == ReceivingStatus.YISHOUHUO) throw Oops.Oh("璇ュ崟鎹凡鏀惰揣!");
+
+ if (input.GetOrderDetailOutputList.Count == 0) throw Oops.Oh("鏀惰揣淇℃伅涓嶈兘涓虹┖锛�");
+ //鏇存柊鏀惰揣鏄庣粏
+ foreach (var item in input.GetOrderDetailOutputList)
+ {
+ var WmsReceiptOrderDetailsModal = item.Adapt<WmsReceiptOrderDetails>();
+ if (WmsReceiptOrderDetailsModal.ReceivedQty < WmsReceiptOrderDetailsModal.DeliveryQty)
+ {
+ WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+ }
+ else
+ {
+ WmsReceiptOrderDetailsModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+
+ }
+ await _wmsReceiptOrderDetailsRep.UpdateNowAsync(WmsReceiptOrderDetailsModal);
+ }
+ //鑾峰彇璇ユ敹璐у崟鎵�鏈夊崟鎹槑缁嗘暟閲�
+ int allCount = wmsOrderModal.WmsReceiptOrderDetails.Count;
+ //鑾峰彇璇ユ敹璐у崟鎵�鏈夊畬鎴愮殑鍗曟嵁鏄庣粏
+ var wcCount = await _wmsReceiptOrderDetailsRep.Where(x => x.OrderId == wmsOrderModal.Id && x.ReceivingStatus == ReceivingStatus.YISHOUHUO).ToListAsync();
+ if (allCount == wcCount.Count)
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.YISHOUHUO;
+ }
+ else if (allCount > wcCount.Count && wcCount.Count > 0)
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.SHOUHUOZHONG;
+ }
+ else
+ {
+ wmsOrderModal.ReceivingStatus = ReceivingStatus.WEISHOUHUO;
+ }
+ await _wmsReceiptOrderRep.UpdateAsync(wmsOrderModal);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs
new file mode 100644
index 0000000..00ab8e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseInput.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鍏ュ弬
+ /// </summary>
+ public class StockReturnGetContainerInput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+ }
+
+ /// <summary>
+ ///缁勭洏鍏ュ弬
+ /// </summary>
+ public class StockReturnGroupDiskInput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+ public String ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 缁勭洏鐗╂枡淇℃伅
+ /// </summary>
+ public class StockReturnReceiptMaterialContainerInput
+ {
+ /// <summary>
+ /// 鏄庣粏id
+ /// </summary>
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+ }
+
+ /// <summary>
+ ///鎻愪氦鍏ュ簱鍏ュ弬
+ /// </summary>
+ public class StockReturnPdaInWarehouseInput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏涓嶈兘涓虹┖")]
+ public String ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<ReceiptMaterialContainerInput> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ ///鑾峰彇鐗╂枡鍏ュ弬
+ /// </summary>
+ public class StockReturnPadGetMaterialInput : PageInputBase
+ {
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Required(ErrorMessage = "鍗曟嵁缂栧彿涓嶈兘涓虹┖")]
+ public String NO { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs
new file mode 100644
index 0000000..67b0754
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/Dto/WmsStockReturnWarehouseOutput.cs
@@ -0,0 +1,119 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鍏ュ弬
+ /// </summary>
+ public class StockReturnGetContainerOutput
+ {
+ /// <summary>
+ /// 鎵樼洏鍙�
+ /// </summary>
+ [Required(ErrorMessage = "鎵樼洏鍙蜂笉鑳戒负绌�")]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public WmsContainerDto WmsContainer { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅
+ /// </summary>
+ public List<WmsMaterialContainer> WmsMaterials { get; set; }
+ }
+
+ /// <summary>
+ /// 浠呮敹璐э紙缁勭洏锛夋垚鍔熻緭鍑哄弬鏁�
+ /// </summary>
+ public class StockReturnGroupDiskOutput
+ {
+ /// <summary>
+ /// 鎵樼洏
+ /// </summary>
+ public string Containercode { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鍗曟嵁
+ /// </summary>
+ public string OrderNo { get; set; }
+ }
+ /// <summary>
+ /// 鐗╂枡杩斿洖鍙傛暟
+ /// </summary>
+ public class StockReturnPadGetMaterialOutput
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs
new file mode 100644
index 0000000..23fb9c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsPda/WmsStockReturnWarehouse/WmsStockReturnWarehouseService.cs
@@ -0,0 +1,317 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Mapster;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Admin.NET.Core;
+using Yitter.IdGenerator;
+using Microsoft.Extensions.Logging;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// Pda鐗╂枡閫�搴�
+ /// </summary>
+ [ApiDescriptionSettings("Pda鐗╂枡閫�搴�", Name = "WmsStockReturnWarehouse", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WmsStockReturnWarehouseService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsStockReturnOrder, MasterDbContextLocator> _wmsStockReturnOrderRep;
+ private readonly IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> _wmsStockReturnOrderDetailsRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsArea, MasterDbContextLocator> _wmsAreaRep;
+ private readonly IRepository<WmsWarehouseEntrance, MasterDbContextLocator> _wmsWarehouseEntranceRep;
+ private readonly IRepository<WmsMaterialContainer, MasterDbContextLocator> _wmsMaterialContainerRep;
+ private readonly IRepository<WmsContainer, MasterDbContextLocator> _wmsContainerRep;
+ private readonly IRepository<WmsContainerPlace, MasterDbContextLocator> _wmsContainerPlaceRep;
+ private readonly IRepository<WmsMaterialStock, MasterDbContextLocator> _wmsMaterialStockRep;
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ public WmsStockReturnWarehouseService(
+ IRepository<WmsStockReturnOrder, MasterDbContextLocator> wmsStockReturnOrderRep,
+ IRepository<WmsStockReturnOrderDetails, MasterDbContextLocator> wmsStockReturnOrderDetailsRep,
+ IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep,
+ IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep,
+ IRepository<WmsArea, MasterDbContextLocator> wmsAreaRep,
+ IRepository<WmsWarehouseEntrance, MasterDbContextLocator> wmsWarehouseEntranceRep,
+ IRepository<WmsMaterialContainer, MasterDbContextLocator> wmsMaterialContainerRep,
+ IRepository<WmsContainer, MasterDbContextLocator> wmsContainerRep,
+ IRepository<WmsContainerPlace, MasterDbContextLocator> wmsContainerPlaceRep,
+ IRepository<WmsMaterialStock, MasterDbContextLocator> wmsMaterialStockRep,
+ IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ )
+ {
+ _wmsStockReturnOrderRep = wmsStockReturnOrderRep;
+ _wmsStockReturnOrderDetailsRep = wmsStockReturnOrderDetailsRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsAreaRep = wmsAreaRep;
+ _wmsWarehouseEntranceRep = wmsWarehouseEntranceRep;
+ _wmsMaterialContainerRep = wmsMaterialContainerRep;
+ _wmsContainerRep = wmsContainerRep;
+ _wmsContainerPlaceRep = wmsContainerPlaceRep;
+ _wmsMaterialStockRep = wmsMaterialStockRep;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("GetContainer")]
+ [UnifyResult(typeof(StockReturnGetContainerOutput))]
+ public async Task<object> CheckTray([FromQuery] StockReturnGetContainerInput input)
+ {
+ var containerModel = await _wmsContainerRep.DetachedEntities.Where(z => z.ContainerCode == input.ContainerCode).FirstOrDefaultAsync();
+ //濡傛灉鎵樼洏涓嶅瓨鍦ㄥ垯娣诲姞涓�涓�
+ if (containerModel == null) {
+ var ContainerInfo = input.Adapt<WmsContainer>();
+ ContainerInfo.ContainerStatus = ContainerStatus.KOUXIAN;
+ ContainerInfo.AssetNo = "N/A";
+ ContainerInfo.ContainerCategory = ContainerCategory.GZP;
+ ContainerInfo.ErpNo = "N/A";
+ ContainerInfo.IsVirtually = YesOrNot.N;
+ ContainerInfo.WorkShopType = LesWorkShopType.FAPAOCHEJIAN;
+ await _wmsContainerRep.InsertNowAsync(ContainerInfo);
+ containerModel = ContainerInfo;
+ }
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪鏈畬鎴愪换鍔�!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) return XnRestfulResultProvider.RESTfulMesaage("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ var GetContainerOutputModel = new GetContainerOutput()
+ {
+ WmsContainer = containerModel.Adapt<WmsContainerDto>(),
+ ContainerCode = containerModel.ContainerCode,
+ };
+ //鑾峰彇缁勭洏鏁版嵁
+ GetContainerOutputModel.WmsMaterials = await _wmsMaterialContainerRep
+ .Where(p => p.ContainerCode == containerModel.ContainerCode && p.BindStatus == CommonStatus.ENABLE)
+ .OrderByDescending(p => p.CreatedTime)
+ .ProjectToType<WmsMaterialContainer>().ToListAsync();
+ return XnRestfulResultProvider.RESTfulResult(GetContainerOutputModel);
+ }
+
+ /// <summary>
+ /// 閫氳繃鍗曟嵁鍙疯幏鍙栨槑缁�
+ /// </summary>
+ /// <returns></returns>
+ [HttpGet("PadGetMaterial")]
+ [UnifyResult(typeof(List<StockReturnPadGetMaterialOutput>))]
+ public async Task<object> PadGetMaterial([FromQuery] StockReturnPadGetMaterialInput input)
+ {
+ // 鏌ヨ鍗曟嵁灏忕被鏄�滅墿鏂欓��搴撯�濈殑Id
+ var wmsOrderType = await _wmsOrderTypeRep.FirstOrDefaultAsync(z => z.Name.Contains("鐗╂枡閫�搴�"));
+ //鑾峰彇涓昏〃
+ var wmsOrders = await _wmsStockReturnOrderRep.DetachedEntities
+ .Where(u => u.NO == input.NO && u.OrderStatus == OrderStatusEnum.YIXIAFA && u.OrderLargeCategory == wmsOrderType.Pid && u.OrderSubclass == wmsOrderType.Id)
+ .FirstOrDefaultAsync();
+ if (wmsOrders == null) return XnRestfulResultProvider.RESTfulMesaage("鍗曟嵁涓嶅瓨鍦ㄦ垨鏈笅鍙�!");
+ var wmsOrderDetailList =await _wmsStockReturnOrderDetailsRep.Where(x=>x.OrderId == wmsOrders.Id)
+ .ProjectToType<StockReturnPadGetMaterialOutput>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+ return XnRestfulResultProvider.RESTfulResult(wmsOrderDetailList);
+ }
+
+
+ /// <summary>
+ /// 鎵ц浠呮敹璐ф搷浣滐紙缁勭洏锛�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost("GroupDisk")]
+ [UnitOfWork]
+ public async Task<StockReturnGroupDiskOutput> GroupDisk(StockReturnGroupDiskInput input)
+ {
+ //鎵樼洏淇℃伅
+ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus != ContainerStatus.JINYONG);
+ if (containerModel == null) throw Oops.Oh("鎵樼洏淇℃伅涓嶅瓨鍦�!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.KUWEI) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ //缁勭洏淇℃伅
+ var WmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ if (WmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(WmsMaterialContainerList);
+
+ //淇敼鎵樼洏鐘舵��
+ containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+ await _wmsContainerRep.UpdateAsync(containerModel);
+
+ //缁勭洏鍗曟嵁
+ var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+ if (input.WmsMaterials.Count >0)//鏈夌墿鏂欑殑鎯呭喌
+ {
+ foreach (var item in input.WmsMaterials)
+ {
+ var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+ bindentranceModel.MaterialName = item.Materialname;
+ bindentranceModel.MaterialNo = item.Materialcode;
+ bindentranceModel.MaterialId = 4567;//鏆傚畾
+ bindentranceModel.ContainerId = containerModel.Id;
+ bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ bindentranceModel.MaterialBatch = "N/A";
+ bindentranceModel.MaterialSpec = "N/A";
+ bindentranceModel.BindQuantity = item.Qty;
+ bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ bindentranceModel.OrderNo = orderNo;
+ bindentranceModel.MaterialDensity = "N/A";
+ bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+ }
+ }
+ //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+ //{
+ // // 鍒涘缓鏂扮粍鐩樿褰�
+ // var bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.MaterialName = "绌烘墭";
+ // bindentranceModel.MaterialNo = containerModel.ContainerCode;
+ // bindentranceModel.MaterialId = 55555;//鏆傚畾
+ // bindentranceModel.ContainerId = containerModel.Id;
+ // bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ // bindentranceModel.MaterialBatch = "N/A";
+ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = orderNo;
+ // bindentranceModel.MaterialDensity = "N/A";
+ // bindentranceModel.Id = YitIdHelper.NextId();
+ // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ //}
+ return new StockReturnGroupDiskOutput()
+ {
+ Containercode = input.ContainerCode,
+ OrderNo = orderNo
+ };
+ }
+
+ /// <summary>
+ /// 鎻愪氦鍏ュ簱
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost("PdaInWarehouse")]
+ [UnitOfWork]
+ public async Task PdaInWarehouse([FromBody] StockReturnPdaInWarehouseInput input)
+ {
+
+ //妫�鏌ユ墭鐩�
+ var containerModel = await _wmsContainerRep.FirstOrDefaultAsync(p => p.ContainerCode == input.ContainerCode && p.ContainerStatus != ContainerStatus.JINYONG);
+ if (containerModel == null) throw Oops.Oh("鎵樼洏涓嶅瓨鍦�!");
+
+ if (containerModel.ContainerStatus == ContainerStatus.FENJIAN) throw Oops.Oh("瀹瑰櫒瀛樺湪鍒嗘嫞淇℃伅!");
+
+ var isExit = await _wmsTaskRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.TaskStatus != TaskStatusEnum.WANCHENG && p.TaskStatus != TaskStatusEnum.QUXIAO);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪鏈畬鎴愪换鍔′腑!");
+
+ var isInPlace = await _wmsContainerRep.FirstOrDefaultAsync(n => n.ContainerCode == input.ContainerCode && n.ContainerStatus == ContainerStatus.KUWEI);
+ if (isInPlace != null) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ isExit = await _wmsContainerPlaceRep.AnyAsync(p => p.ContainerCode == containerModel.ContainerCode && p.ContainerPlaceStatus == CommonStatus.ENABLE);
+ if (isExit) throw Oops.Oh("鎵樼洏瀛樺湪搴撲綅涓�!");
+
+ //鍒犻櫎缁勭洏淇℃伅
+ var oldwmsMaterialContainerList = await _wmsMaterialContainerRep.Where(p => p.ContainerCode == input.ContainerCode && p.BindStatus == CommonStatus.ENABLE).ToListAsync();
+
+ if (oldwmsMaterialContainerList.Count > 0) await _wmsMaterialContainerRep.DeleteAsync(oldwmsMaterialContainerList);
+
+ //缁勭洏鍗曟嵁鍙�
+ var orderNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString();
+ if (input.WmsMaterials!=null || input.WmsMaterials.Count <= 0)//鏈夌墿鏂欑殑鎯呭喌
+ {
+ foreach (var item in input.WmsMaterials)
+ {
+ var bindentranceModel = item.Adapt<WmsMaterialContainer>();
+ bindentranceModel.MaterialName = item.Materialname;
+ bindentranceModel.MaterialNo = item.Materialcode;
+ bindentranceModel.MaterialId = 4567;
+ bindentranceModel.ContainerId = containerModel.Id;
+ bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ bindentranceModel.MaterialBatch = "N/A";
+ bindentranceModel.MaterialSpec = "N/A";
+ bindentranceModel.BindQuantity = item.Qty;
+ bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ bindentranceModel.OrderNo = orderNo;
+ bindentranceModel.MaterialDensity = "N/A";
+ bindentranceModel.Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ await _wmsMaterialContainerRep.InsertAsync(bindentranceModel);
+ ////鏇存敼鏄庣粏鍏ュ簱鏁伴噺
+ //var wmsOrderDetailsModal = await _wmsOrderDetailsRep.FirstOrDefaultAsync(x => x.Id == item.Id);
+ //wmsOrderDetailsModal.InventoryQty += item.Qty;
+ }
+ }
+ //else//绌烘墭鍏ュ簱鐨勬儏鍐�
+ //{
+ // // 鍒涘缓鏂扮粍鐩樿褰�
+ // var bindentranceModel = new WmsMaterialContainer();
+ // bindentranceModel.MaterialName = "绌烘墭";
+ // bindentranceModel.MaterialNo = containerModel.ContainerCode;
+ // bindentranceModel.MaterialId = 55555;//鏆傚畾
+ // bindentranceModel.ContainerId = containerModel.Id;
+ // bindentranceModel.ContainerCode = containerModel.ContainerCode;
+ // bindentranceModel.MaterialBatch = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+ // bindentranceModel.MaterialSpec = containerModel.SpecLength + "*" + containerModel.SpecWidth;
+ // bindentranceModel.BindQuantity = 1;
+ // bindentranceModel.BindStatus = CommonStatus.ENABLE;
+ // bindentranceModel.OrderNo = orderNo;
+ // bindentranceModel.MaterialDensity = "N/A";//鏍规嵁鐗╂枡鐮佽В鏋�
+ // bindentranceModel.Id = YitIdHelper.NextId();
+ // await _wmsMaterialContainerRep.InsertNowAsync(bindentranceModel);
+ //}
+
+ ////淇敼鎵樼洏鐘舵��
+ //containerModel.ContainerStatus = ContainerStatus.ZUPANG;
+ //await _wmsContainerRep.UpdateAsync(containerModel);
+ //鍒嗛厤宸烽亾
+ var Aisle = 1;
+
+ //浠诲姟
+ var takmodel = new WmsTask()
+ {
+ TaskNo = Yitter.IdGenerator.YitIdHelper.NextId().ToString(),
+ TaskModel = TaskModel.QUANZIDONG,
+ TaskType = TaskType.RUKU,
+ TaskLevel = 1,
+ TaskStatus = TaskStatusEnum.ZHIXINGZHONG,
+ OrderNo = orderNo,
+ OrderDetailsId = 0,
+ ContainerCode = input.ContainerCode,
+ SourcePlace = "鍏ュ簱鍙�",//鐜板満鎯呭喌涓虹┖
+ ToPlace = "", //鐩爣浣�
+ AreaName = "缁濈紭绔嬪簱",
+ IsRead = true, //WCS鏄惁鍙互璇诲彇
+ SendTimes = 1, //鍙戦�佹鏁�
+ Aisle = Aisle,// 鏍规嵁搴撳尯id鑾峰彇鍑犲彿鎻愬崌鏈猴紝娴嬭瘯浣跨敤涓�鍙�
+ TaskDodeviceStatus = TaskDodeviceStatusEnum.W
+ };
+ if (input.WmsMaterials == null || input.WmsMaterials.Count <= 0) {
+ takmodel.Description = "绌烘墭";
+ }
+ else
+ {
+ takmodel.Description = "鐗╂枡";
+ };
+
+ await _wmsTaskRep.InsertAsync(takmodel);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs
new file mode 100644
index 0000000..ece90c1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsInput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍏ュ簱鎶ヨ〃杈撳叆鍙傛暟
+ /// </summary>
+ public class GetWareHouseInReportFormsInput: PageInputBase
+ {
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs
new file mode 100644
index 0000000..636ad9d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/Dto/WareHouseInReportFormsOutput.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍏ュ簱鎶ヨ〃杩斿洖鍙傛暟
+ /// </summary>
+ public class GetWareHouseInReportFormsOutput
+ {
+ /// <summary>
+ /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 涓嬪彂鏁伴噺
+ /// </summary>
+ public decimal DistributeQty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱瀹屾垚鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs
new file mode 100644
index 0000000..a6019c0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseInReportForms/WareHouseInReportFormsService.cs
@@ -0,0 +1,118 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍏ュ簱鎶ヨ〃
+ /// </summary>
+ [ApiDescriptionSettings("鍏ュ簱鎶ヨ〃", Name = "WareHouseInReportForms", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WareHouseInReportFormsService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+ private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+
+ public WareHouseInReportFormsService(
+ IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+ ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ ,IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+ ,IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+ ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍏ュ簱鎶ヨ〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetWareHouseOutReportForms")]
+ public async Task<PageResult<GetWareHouseInReportFormsOutput>> GetWareHouseOutReportForms([FromQuery] GetWareHouseInReportFormsInput input)
+ {
+ //浠诲姟琛ㄥ叧鑱旈鏂欒〃
+ var pageResult = new PageResult<GetWareHouseInReportFormsOutput>();
+ pageResult.PageNo = input.PageNo;
+ pageResult.PageSize = input.PageSize;
+ var result =from p in _wmsTaskRep.AsQueryable()
+ join d in _wmsTakeMaterialOrderDetailRep.AsQueryable() on p.OrderDetailsId equals d.Id
+ where p.TaskStatus == TaskStatusEnum.WANCHENG
+ select new GetWareHouseInReportFormsOutput
+ {
+ OID = d.OID,
+ Materialcode = d.Materialcode,
+ Materialname = d.Materialname,
+ Unit = d.Unit,
+ Qty = d.Qty,
+ DistributeQty = d.DistributeQty,
+ SingleLength = d.SingleLength,
+ Number = d.Number,
+ Batchno_SCM = d.Batchno_SCM,
+ Batchno_WMS = d.Batchno_WMS,
+ ProjectCode = d.ProjectCode,
+ TACode = d.TACode,
+ PartCode = d.PartCode,
+ ContainerCode = p.ContainerCode,
+ PlaceCode = p.SourcePlace,
+ CreatedTime = p.CreatedTime,
+ Aisle = p.Aisle,
+ UpdatedTime = p.UpdatedTime,
+ };
+ result = result
+ .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+ .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+ u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+ .OrderByDescending(u => u.UpdatedTime);
+ pageResult.Rows = result
+ .Skip((input.PageNo - 1) * input.PageSize).Take(input.PageSize).Adapt<List<GetWareHouseInReportFormsOutput>>();
+ pageResult.TotalRows = result.Count();
+ pageResult.TotalPage = (int)Math.Ceiling(pageResult.TotalRows / (double)pageResult.PageSize);
+ return pageResult;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs
new file mode 100644
index 0000000..41a0959
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsInput.cs
@@ -0,0 +1,60 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄簱鎶ヨ〃杈撳叆鍙傛暟
+ /// </summary>
+ public class GetWareHouseOutReportFormsInput: PageInputBase
+ {
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs
new file mode 100644
index 0000000..f9c57cd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/Dto/WareHouseOutReportFormsOutput.cs
@@ -0,0 +1,110 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using Admin.NET.Core;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄簱鎶ヨ〃杩斿洖鍙傛暟
+ /// </summary>
+ public class GetWareHouseOutReportFormsOutput
+ {
+ /// <summary>
+ /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ /// </summary>
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 涓嬪彂鏁伴噺
+ /// </summary>
+ public decimal DistributeQty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鏃堕棿
+ /// </summary>
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱瀹屾垚鏃堕棿
+ /// </summary>
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs
new file mode 100644
index 0000000..9b03f2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsReportForms/WareHouseOutReportForms/WareHouseOutReportFormsService.cs
@@ -0,0 +1,118 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using SixLabors.ImageSharp;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 鍑哄簱鎶ヨ〃
+ /// </summary>
+ [ApiDescriptionSettings("鍑哄簱鎶ヨ〃", Name = "WareHouseOutReportForms", Order = 100)]
+ [Route("api/[Controller]")]
+ public class WareHouseOutReportFormsService : IDynamicApiController, ITransient
+ {
+ private readonly IRepository<WmsOrder,MasterDbContextLocator> _wmsOrderRep;
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+ private readonly IRepository<WmsOrderType, MasterDbContextLocator> _wmsOrderTypeRep;
+ private readonly IRepository<WmsOrderDetails, MasterDbContextLocator> _wmsOrderDetailsRep;
+ private readonly IRepository<WmsPlace, MasterDbContextLocator> _wmsPlaceRep;
+ private readonly IRepository<WmsTask, MasterDbContextLocator> _wmsTaskRep;
+ private readonly IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> _wmsTakeMaterialOrderRep;
+ private readonly IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> _wmsTakeMaterialOrderDetailRep;
+
+ public WareHouseOutReportFormsService(
+ IRepository<WmsOrder,MasterDbContextLocator> wmsOrderRep
+ ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
+ ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ ,IRepository<WmsOrderType, MasterDbContextLocator> wmsOrderTypeRep
+ ,IRepository<WmsOrderDetails, MasterDbContextLocator> wmsOrderDetailsRep
+ ,IRepository<WmsPlace, MasterDbContextLocator> wmsPlaceRep
+ ,IRepository<WmsTask, MasterDbContextLocator> wmsTaskRep
+ ,IRepository<WmsTakeMaterialOrder, MasterDbContextLocator> wmsTakeMaterialOrderRep
+ ,IRepository<WmsTakeMaterialOrderDetail, MasterDbContextLocator> wmsTakeMaterialOrderDetailRep
+ )
+ {
+ _wmsOrderRep = wmsOrderRep;
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ _wmsOrderTypeRep = wmsOrderTypeRep;
+ _wmsOrderDetailsRep = wmsOrderDetailsRep;
+ _wmsPlaceRep = wmsPlaceRep;
+ _wmsTaskRep = wmsTaskRep;
+ _wmsTakeMaterialOrderDetailRep = wmsTakeMaterialOrderDetailRep;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ鍑哄簱鎶ヨ〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpGet("GetWareHouseOutReportForms")]
+ public async Task<PageResult<GetWareHouseOutReportFormsOutput>> GetWareHouseOutReportForms([FromQuery] GetWareHouseOutReportFormsInput input)
+ {
+ //浠诲姟琛ㄥ叧鑱旈鏂欒〃
+ var pageResult = new PageResult<GetWareHouseOutReportFormsOutput>();
+ pageResult.PageNo = input.PageNo;
+ pageResult.PageSize = input.PageSize;
+ var result =from p in _wmsTaskRep.AsQueryable()
+ join d in _wmsTakeMaterialOrderDetailRep.AsQueryable() on p.OrderDetailsId equals d.Id
+ where p.TaskStatus == TaskStatusEnum.WANCHENG
+ select new GetWareHouseOutReportFormsOutput
+ {
+ OID = d.OID,
+ Materialcode = d.Materialcode,
+ Materialname = d.Materialname,
+ Unit = d.Unit,
+ Qty = d.Qty,
+ DistributeQty = d.DistributeQty,
+ SingleLength = d.SingleLength,
+ Number = d.Number,
+ Batchno_SCM = d.Batchno_SCM,
+ Batchno_WMS = d.Batchno_WMS,
+ ProjectCode = d.ProjectCode,
+ TACode = d.TACode,
+ PartCode = d.PartCode,
+ ContainerCode = p.ContainerCode,
+ PlaceCode = p.SourcePlace,
+ CreatedTime = p.CreatedTime,
+ Aisle = p.Aisle,
+ UpdatedTime = p.UpdatedTime,
+ };
+ result = result
+ .Where(!string.IsNullOrEmpty(input.Materialcode), u => EF.Functions.Like(u.Materialcode, $"%{input.Materialcode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Materialname), u => EF.Functions.Like(u.Materialname, $"%{input.Materialname.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_SCM), u => EF.Functions.Like(u.Batchno_SCM, $"%{input.Batchno_SCM.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.Batchno_WMS), u => EF.Functions.Like(u.Batchno_WMS, $"%{input.Batchno_WMS.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ProjectCode), u => EF.Functions.Like(u.ProjectCode, $"%{input.ProjectCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.ContainerCode), u => EF.Functions.Like(u.ContainerCode, $"%{input.ContainerCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PlaceCode), u => EF.Functions.Like(u.PlaceCode, $"%{input.PlaceCode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.TACode), u => EF.Functions.Like(u.TACode, $"%{input.TACode.Trim()}%"))
+ .Where(!string.IsNullOrEmpty(input.PartCode), u => EF.Functions.Like(u.PartCode, $"%{input.PartCode.Trim()}%"))
+ .Where(input.SearchBeginTime != null && input.SearchEndTime != null, u => u.CreatedTime >= DateTime.Parse(input.SearchBeginTime.Trim()) &&
+ u.CreatedTime <= DateTime.Parse(input.SearchEndTime.Trim()))
+ .OrderByDescending(u => u.UpdatedTime);
+ pageResult.Rows = result
+ .Skip((input.PageNo - 1) * input.PageSize).Take(input.PageSize).Adapt<List<GetWareHouseOutReportFormsOutput>>();
+ pageResult.TotalRows = result.Count();
+ pageResult.TotalPage = (int)Math.Ceiling(pageResult.TotalRows / (double)pageResult.PageSize);
+ return pageResult;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs
new file mode 100644
index 0000000..ee21957
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/SpareTimes/SpareTimeDemo.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.DependencyInjection;
+using Furion.TaskScheduler;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ /// 瀹氭椂浠诲姟demo
+ /// </summary>
+ public class SpareTimeDemo : ISpareTimeWorker
+ {
+ /// <summary>
+ /// 3绉掑悗鍑哄嫟缁熻
+ /// </summary>
+ /// <param name="timer">鍙傛暟</param>
+ /// <param name="count">娆℃暟</param>
+ [SpareTime(3000, "鎵цSql", DoOnce = true, StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]
+ public void ExecSql(SpareTimer timer, long count)
+ {
+ //鍒涘缓浣滅敤鍩�
+ Scoped.Create((factory, scope) =>
+ {
+ var start = DateTime.Now;
+ Console.WriteLine(start.ToString("yyyy-MM-dd HH:mm:ss") + ":浠诲姟寮�濮�-----------");
+ var services = scope.ServiceProvider;
+ // 鏁版嵁搴撴搷浣�
+ var db = Db.GetSqlRepository(services);
+ if (!string.IsNullOrEmpty(timer.Description)) //鍋囪 鍚庡彴浠诲姟 涓妸 sql 璇彞鍐欏埌浜嗗娉ㄩ噷闈�
+ db.SqlNonQuery(timer.Description);
+ var end = DateTime.Now;
+ Console.WriteLine(end.ToString("yyyy-MM-dd HH:mm:ss") + ":浠诲姟缁撴潫-----------");
+ Console.WriteLine($"SQL鎵ц浜嗭細{count} 娆�,鑰楁椂锛歿(end - start).TotalMilliseconds}ms");
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs
new file mode 100644
index 0000000..75b4ed5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Startup.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Application
+{
+ /// <summary>
+ ///
+ /// </summary>
+ public class Startup : AppStartup
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="services"></param>
+ public void ConfigureServices(IServiceCollection services)
+ {
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="app"></param>
+ /// <param name="env"></param>
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json
new file mode 100644
index 0000000..efb099b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/applicationsettings.json
@@ -0,0 +1,4 @@
+锘縶
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+ "DeskUrlPath": "http://10.10.40.4:1181"
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj
new file mode 100644
index 0000000..37797da
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Admin.NET.Core.csproj
@@ -0,0 +1,69 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>disable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Compile Remove="Entity\System\WorkflowEntity\**" />
+ <EmbeddedResource Remove="Entity\System\WorkflowEntity\**" />
+ <None Remove="Entity\System\WorkflowEntity\**" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Compile Remove="Entity\DEntityTenant.cs" />
+ <Compile Remove="Entity\Les\LesAgvsiteStation.cs" />
+ <Compile Remove="Entity\System\SysOauthUser.cs" />
+ <Compile Remove="Entity\System\SysTenant.cs" />
+ <Compile Remove="Entity\WmsBase\iWareWmsInvWareHouse.cs" />
+ <Compile Remove="SeedData\SysRoleMenuSeedData.cs" />
+ <Compile Remove="SeedData\SysTenantSeedData.cs" />
+ <Compile Remove="SeedData\WmsAreaSeedData.cs" />
+ <Compile Remove="SeedData\WmsContainerPlaceSeedData.cs" />
+ <Compile Remove="SeedData\WmsContainerSeedData.cs" />
+ <Compile Remove="SeedData\WmsMaterialContainerSeedData.cs" />
+ <Compile Remove="SeedData\WmsMaterialSeedData.cs" />
+ <Compile Remove="SeedData\WmsMaterialStockSeedData.cs" />
+ <Compile Remove="SeedData\WmsPlaceSeedData.cs" />
+ <Compile Remove="SeedData\WmsTaskSeedData.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Remove="applicationconfig.json" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Content Include="applicationconfig.json">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Caching.CSRedis" Version="3.8.3" />
+ <PackageReference Include="CSRedisCore" Version="3.8.3" />
+ <PackageReference Include="Furion" Version="4.1.9" />
+ <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.1.9" />
+ <PackageReference Include="Furion.Extras.Logging.Serilog" Version="4.1.9" />
+ <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.1.9" />
+ <PackageReference Include="Magicodes.IE.Excel" Version="2.6.4" />
+ <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.7" />
+ <PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.7" />
+ <PackageReference Include="NString" Version="2.1.1" />
+ <PackageReference Include="OnceMi.AspNetCore.OSS" Version="1.1.6" />
+ <PackageReference Include="RestSharp" Version="108.0.3" />
+ <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta14" />
+ <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.19" />
+ <PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0" />
+ <PackageReference Include="UAParser" Version="3.1.47" />
+ <PackageReference Include="WorkflowCore" Version="3.6.4" />
+ <PackageReference Include="WorkflowCore.DSL" Version="3.6.4" />
+ <PackageReference Include="WorkflowCore.Persistence.EntityFramework" Version="3.6.4" />
+ <PackageReference Include="WorkflowCore.Persistence.SqlServer" Version="3.6.4" />
+ <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
+ <PackageReference Include="Zack.EFCore.Batch.Sqlite_NET6" Version="6.1.3" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Enum\System\" />
+ </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs
new file mode 100644
index 0000000..371e87c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/ClaimConst.cs
@@ -0,0 +1,45 @@
+锘縩amespace Admin.NET.Core
+{
+ public class ClaimConst
+ {
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ public const string CLAINM_USERID = "UserId";
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ public const string CLAINM_ACCOUNT = "Account";
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ public const string CLAINM_NAME = "Name";
+
+ /// <summary>
+ /// 鏄惁瓒呯骇绠$悊
+ /// </summary>
+ public const string CLAINM_SUPERADMIN = "SuperAdmin";
+
+ /// <summary>
+ /// 绉熸埛Id
+ /// </summary>
+ //public const string TENANT_ID = "TenantId";
+
+ /// <summary>
+ /// 鐢ㄦ埛缁勭粐鏈烘瀯Id
+ /// </summary>
+ public const string CLAINM_ORGID = "OrgId";
+
+ /// <summary>
+ /// 鐢ㄦ埛缁勭粐鏈烘瀯鍚嶇О
+ /// </summary>
+ public const string CLAINM_ORGNAME = "OrgName";
+
+ /// <summary>
+ /// 鏁版嵁鏉冮檺
+ /// </summary>
+ public const string DATA_SCOPES = "DataScopes";
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs
new file mode 100644
index 0000000..6b559a2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/CommonConst.cs
@@ -0,0 +1,55 @@
+锘縩amespace Admin.NET.Core
+{
+ public class CommonConst
+ {
+ /// <summary>
+ /// 榛樿瀵嗙爜
+ /// </summary>
+ public const string DEFAULT_PASSWORD = "123456";
+
+ /// <summary>
+ /// 鐢ㄦ埛缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_USER = "user_";
+
+ /// <summary>
+ /// 鑿滃崟缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_MENU = "menu_";
+
+ /// <summary>
+ /// 鏉冮檺缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_PERMISSION = "permission_";
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_DATASCOPE = "datascope_";
+
+ /// <summary>
+ /// 楠岃瘉鐮佺紦瀛�
+ /// </summary>
+ public const string CACHE_KEY_CODE = "vercode_";
+
+ /// <summary>
+ /// 鎵�鏈夌紦瀛樺叧閿瓧闆嗗悎
+ /// </summary>
+ public const string CACHE_KEY_ALL = "allkey";
+
+ /// <summary>
+ /// 瀹氭椂浠诲姟缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_TIMER_JOB = "timerjob";
+
+ /// <summary>
+ /// 鍦ㄧ嚎鐢ㄦ埛缂撳瓨
+ /// </summary>
+ public const string CACHE_KEY_ONLINE_USER = "onlineuser";
+
+ /// <summary>
+ /// 绯荤粺绠$悊鍛樿鑹茬紪鐮�
+ /// </summary>
+ public const string SYS_MANAGER_ROLE_CODE = "sys_manager_role";
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs
new file mode 100644
index 0000000..aae0a81
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/DeskDataConst.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// Desk鏁版嵁鍚屾甯搁噺
+ /// </summary>
+ public class DeskDataConst
+ {
+ /// <summary>
+ /// Desk AccessToken 缂撳瓨
+ /// </summary>
+ public const string DESK_ACCESSTOKEN_CODE = "desk_accesstoken";
+
+ /// <summary>
+ /// 鍚屾瀹㈡埛URL
+ /// </summary>
+ public const string TONGBU_KEHU_URL = "/api/desk/v1.1/deskCustomer/listNonPage";
+
+ /// <summary>
+ /// 鍚屾鐗╂枡URL
+ /// </summary>
+ public const string TONGBU_WULIAO_URL = "/api/desk/v1.1/deskMaterial/listNonPage";
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs
new file mode 100644
index 0000000..871b7f4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/QueryTypeConst.cs
@@ -0,0 +1,53 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏌ヨ鏂瑰紡
+ /// </summary>
+ public class QueryTypeConst
+ {
+ /// <summary>
+ /// 绛変簬
+ /// </summary>
+ public const string 绛変簬 = "==";
+
+ /// <summary>
+ /// 妯$硦
+ /// </summary>
+ public const string 妯$硦 = "like";
+
+ /// <summary>
+ /// 澶т簬
+ /// </summary>
+ public const string 澶т簬 = ">";
+
+ /// <summary>
+ /// 灏忎簬
+ /// </summary>
+ public const string 灏忎簬 = "<";
+
+ /// <summary>
+ /// 涓嶇瓑浜�
+ /// </summary>
+ public const string 涓嶇瓑浜� = "!=";
+
+ /// <summary>
+ /// 澶т簬绛変簬
+ /// </summary>
+ public const string 澶т簬绛変簬 = ">=";
+
+ /// <summary>
+ /// 灏忎簬绛変簬
+ /// </summary>
+ public const string 灏忎簬绛変簬 = "<=";
+
+ /// <summary>
+ /// 涓嶄负绌�
+ /// </summary>
+ public const string 涓嶄负绌� = "isNotNull";
+
+ /// <summary>
+ /// 浠嬩簬
+ /// </summary>
+ public const string 浠嬩簬 = "between";
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs
new file mode 100644
index 0000000..cec3124
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/SysConst.cs
@@ -0,0 +1,12 @@
+锘縩amespace Admin.NET.Core
+{
+ public class SysConst
+ {
+ /// <summary>
+ /// 鐧婚檰淇℃伅鏃犳晥锛岃閲嶆柊鐧婚檰!
+ /// </summary>
+ public const string SYS_SESSION_OUT = "鐧婚檰淇℃伅鏃犳晥锛岃閲嶆柊鐧婚檰!";
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs
new file mode 100644
index 0000000..3e57328
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Const/TemplateConst.cs
@@ -0,0 +1,18 @@
+锘縰sing Furion;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ public class TemplateConst
+ {
+ /// <summary>
+ /// 鐢熸垚瀵煎叆妯℃澘鐨凟xcel鏂囦欢璺緞(鍏叡)
+ /// </summary>
+ public static string EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 = App.WebHostEnvironment.WebRootPath + @"\ExcelTemplateFile";
+ public static string EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑 = "Import";
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs
new file mode 100644
index 0000000..9ff7c2c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvTask.cs
@@ -0,0 +1,100 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// Agv浠诲姟琛�
+ /// </summary>
+ [Comment("Agv浠诲姟琛�")]
+ [Table("les_agv_task")]
+ public class AgvTask : DEntityBase
+ {
+ /// <summary>
+ /// 浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱
+ /// </summary>
+ [Comment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱")]
+ [MaxLength(10)]
+ public string TaskType { get; set; }
+
+ /// <summary>
+ /// 璧峰浣嶇疆
+ /// </summary>
+ [Comment("璧峰浣嶇疆")]
+ [MaxLength(50)]
+ public string StartPlace { get; set; }
+
+ /// <summary>
+ /// 璧峰鍚嶇О
+ /// </summary>
+ [Comment("璧峰鍚嶇О")]
+ [MaxLength(50)]
+ public string StartName { get; set; }
+
+ /// <summary>
+ /// 缁撴潫浣嶇疆
+ /// </summary>
+ [Comment("缁撴潫浣嶇疆")]
+ [MaxLength(50)]
+ public string EndPlace { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鍚嶇О
+ /// </summary>
+ [Comment("缁撴潫鍚嶇О")]
+ [MaxLength(50)]
+ public string EndName { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// PRISTINE锛氬緟鎵ц
+ /// TRAVELLING锛氭墽琛屼腑
+ /// FINISHED锛氬畬鎴�
+ /// </summary>
+ [Comment("鐘舵��")]
+ [MaxLength(50)]
+ public string AgvState { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鎵ц鐨勪换鍔�
+ /// </summary>
+ [Comment("褰撳墠鎵ц鐨勪换鍔�")]
+ [MaxLength(100)]
+ public string TransportOrder { get; set; }
+
+ /// <summary>
+ /// 涓讳换鍔″彿
+ /// </summary>
+ [Comment("涓讳换鍔″彿")]
+ [MaxLength(50)]
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// Agv鐖禝d
+ /// </summary>
+ [Comment("Agv鐖禝d")]
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ [Comment("瀹瑰櫒缂栧彿")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType WorkShopType { get; set; }
+
+
+ /// <summary>
+ /// 璧峰搴撲綅鍚嶇О
+ /// </summary>
+ [Comment("璧峰搴撲綅鍚嶇О")]
+ [MaxLength(50)]
+ public string SourcePlaceName { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs
new file mode 100644
index 0000000..7567f21
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Agv/AgvWaring.cs
@@ -0,0 +1,69 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// Agv鎶ヨ
+ /// </summary>
+ [Comment("Agv鎶ヨ")]
+ [Table("les_agv_waring")]
+ public class AgvWaring : DEntityBase
+ {
+ /// <summary>
+ /// 鍞竴缂栫爜
+ /// </summary>
+ [Comment("鍞竴缂栫爜")]
+ [MaxLength(10)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [Comment("浠诲姟鍙�")]
+ [MaxLength(100)]
+ public string TransportOrder { get; set; }
+
+ /// <summary>
+ /// agv灏忚溅缂栧彿
+ /// </summary>
+ [Comment("agv灏忚溅缂栧彿")]
+ [MaxLength(10)]
+ public string AgvCarCode { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍐呭
+ /// </summary>
+ [Comment("鏁呴殰鍐呭")]
+ [MaxLength(50)]
+ public string FaultText { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鏃堕棿
+ /// </summary>
+ [Comment("鏁呴殰鏃堕棿")]
+ [MaxLength(50)]
+ public DateTimeOffset? StartTime { get; set; }
+
+ /// <summary>
+ /// 鏄惁瑙e喅
+ /// </summary>
+ [Comment("鏄惁瑙e喅")]
+ [MaxLength(50)]
+ public YesOrNot YesOrNot { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ [Comment("WCS鏄惁鍙互璇诲彇")]
+ [Required]
+ public bool IsRead { get; set; } = true;
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType WorkShopType { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs
new file mode 100644
index 0000000..e08de9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/DEntityBase.cs
@@ -0,0 +1,81 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text.Json.Serialization;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鑷畾涔夊疄浣撳熀绫�
+ /// </summary>
+ public abstract class DEntityBase : DEntityBase<long, MasterDbContextLocator>
+ {
+ public DEntityBase()
+ {
+ Id = Yitter.IdGenerator.YitIdHelper.NextId();
+ }
+ }
+
+ public abstract class DEntityBase<TKey, TDbContextLocator1> : PrivateDEntityBase<TKey>
+ where TDbContextLocator1 : class, IDbContextLocator
+ {
+ }
+
+ public abstract class PrivateDEntityBase<TKey> : IPrivateEntity
+ {
+ /// <summary>
+ /// 涓婚敭Id
+ /// </summary>
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ [Comment("Id涓婚敭")]
+ public virtual TKey Id { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ [Comment("鍒涘缓鏃堕棿")]
+ public virtual DateTimeOffset? CreatedTime { get; set; } = DateTime.Now;
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ [Comment("鏇存柊鏃堕棿")]
+ public virtual DateTimeOffset? UpdatedTime { get; set; } = DateTime.Now;
+
+ /// <summary>
+ /// 鍒涘缓鑰匢d
+ /// </summary>
+ [Comment("鍒涘缓鑰匢d")]
+ public virtual long? CreatedUserId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ [Comment("鍒涘缓鑰呭悕绉�")]
+ [MaxLength(50)]
+ public virtual string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰匢d
+ /// </summary>
+ [Comment("淇敼鑰匢d")]
+ public virtual long? UpdatedUserId { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// </summary>
+ [Comment("淇敼鑰呭悕绉�")]
+ [MaxLength(50)]
+ public virtual string UpdatedUserName { get; set; }
+
+
+ /// <summary>
+ /// 杞垹闄�
+ /// </summary>
+ [JsonIgnore]
+ [Comment("杞垹闄ゆ爣璁�")]
+ public virtual bool IsDeleted { get; set; } = false;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs
new file mode 100644
index 0000000..2eeee86
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/IDataPermissions.cs
@@ -0,0 +1,28 @@
+锘縩amespace Admin.NET.Core.Entity
+{
+ /// <summary>
+ /// 鏁版嵁鏉冮檺鎺ュ彛锛屽疄鐜版暟鎹潈闄愬繀椤荤户鎵挎湰鎺ュ彛
+ /// </summary>
+ public interface IDataPermissions
+ {
+ /// <summary>
+ /// 鍒涘缓鐢ㄦ埛閮ㄩ棬id
+ /// </summary>
+ long? CreatedUserOrgId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鐢ㄦ埛閮ㄩ棬鍚嶇О
+ /// </summary>
+ string CreatedUserOrgName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰匢d
+ /// </summary>
+ long? CreatedUserId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// </summary>
+ string CreatedUserName { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs
new file mode 100644
index 0000000..30650f5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesAgvsiteStation.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace YaKe.Les.Core
+{
+ /// <summary>
+ /// AGV绔欑偣宸ヤ綅鍏崇郴琛�
+ /// </summary>
+ [Table("les_agvsitestation")]
+ [Comment("AGV绔欑偣宸ヤ綅鍏崇郴琛�")]
+ public class LesAgvsiteStation : DEntityBase
+ {
+ /// <summary>
+ /// AGV绔欑偣Id
+ /// </summary>
+ [Comment("AGV绔欑偣Id")]
+ [Required]
+ [MaxLength(50)]
+ public long SiteId{ get; set; }
+
+ /// <summary>
+ /// AGV绔欑偣Code
+ /// </summary>
+ [Comment("AGV绔欑偣Code")]
+ [Required]
+ [MaxLength(50)]
+ public string SiteCode { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅Id
+ /// </summary>
+ [Comment("宸ヤ綅Id")]
+ [Required]
+ [MaxLength(50)]
+ public long StationId { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅缂栫爜
+ /// </summary>
+ [Comment("宸ヤ綅缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string StationCode { get; set; }
+
+ /// <summary>
+ /// AGV绔欑偣琛�
+ /// </summary>
+ public LesAgvsite LesAgvsite { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅琛�
+ /// </summary>
+ public LesStation LesStation { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs
new file mode 100644
index 0000000..39953a5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesDeviceWaring.cs
@@ -0,0 +1,52 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璁惧鎶ヨ
+ /// </summary>
+ [Table("les_devicewaring")]
+ [Comment("璁惧鎶ヨ")]
+ public class LesDeviceWaring : DEntityBase
+ {
+ /// <summary>
+ /// WcsId
+ /// </summary>
+ [Comment("WcsId")]
+ public int WcsId { get; set; }
+
+ /// <summary>
+ /// 璁惧鍚嶇О
+ /// </summary>
+ [Comment("璁惧鍚嶇О")]
+ [MaxLength(50)]
+ public string DeviceName { get; set; }
+
+ /// <summary>
+ /// 鏁呴殰鍚嶇О
+ /// </summary>
+ [Comment("鏁呴殰鍚嶇О")]
+ [MaxLength(50)]
+ public string FaultName { get; set; }
+
+ /// <summary>
+ /// 鍙戠敓鏃堕棿
+ /// </summary>
+ [Comment("鍙戠敓鏃堕棿")]
+ public DateTimeOffset? StartTime { get; set; }
+
+ /// <summary>
+ /// 缁撴潫鏃堕棿
+ /// </summary>
+ [Comment("缁撴潫鏃堕棿")]
+ public DateTimeOffset? EndTime { get; set; }
+
+ /// <summary>
+ /// 鎸佺画鏃堕棿
+ /// </summary>
+ [Comment("鎸佺画鏃堕棿")]
+ public int RunningTime { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs
new file mode 100644
index 0000000..d53e736
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesEntrance.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳彛琛�
+ /// </summary>
+ [Table("les_entrance")]
+ [Comment("搴撳彛琛�")]
+ public class LesEntrance : DEntityBase
+ {
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ [Comment("搴撳尯Id")]
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 搴撳彛鍚嶇О
+ /// </summary>
+ [Comment("搴撳彛鍚嶇О")]
+ [MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 搴撳彛缂栫爜
+ /// </summary>
+ [Comment("搴撳彛缂栫爜")]
+ [MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 搴撳彛绫诲瀷
+ /// </summary>
+ [Comment("搴撳彛绫诲瀷")]
+ public LesEntranceType EntranceType { get; set; }
+
+ /// <summary>
+ /// 搴撳彛鐘舵��
+ /// </summary>
+ [Comment("搴撳彛鐘舵��")]
+ public CommonStatus CommenStatus { get; set; }
+
+ /// <summary>
+ /// 搴撳尯琛�
+ /// </summary>
+ public WmsArea WmsArea { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs
new file mode 100644
index 0000000..140667d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesPackWarehouse.cs
@@ -0,0 +1,74 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵撳寘琛�
+ /// </summary>
+ [Table("les_packwarehouse")]
+ [Comment("鎵撳寘琛�")]
+ public class LesPackWarehouse : DEntityBase
+ {
+ /// <summary>
+ /// 鏍囩鐮�
+ /// </summary>
+ [Comment("鏍囩鐮�")]
+ [MaxLength(50)]
+ public string PackCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鐮�
+ /// </summary>
+ [Comment("鐗╂枡鐮�")]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ [Comment("闀�")]
+ [Required]
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ [Comment("瀹�")]
+ [Required]
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ [Comment("楂�")]
+ [Required]
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鍙�
+ /// </summary>
+ [Comment("鍑哄簱鍙�")]
+ [MaxLength(50)]
+ public string OutputEntrance { get; set; }
+
+
+ /// <summary>
+ /// 鎵撳寘鐘舵��
+ /// </summary>
+ [Comment("鎵撳寘鐘舵��")]
+ public LesPackState LesPackState { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鍙�
+ /// </summary>
+ [Comment("鍗曟嵁鍙�")]
+ public string OrderNo { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs
new file mode 100644
index 0000000..e2d69c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesSerialRuleDetail.cs
@@ -0,0 +1,96 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 缂栧彿瑙勫垯
+ /// </summary>
+ [Table("les_serial_rule_detail")]
+ [Comment("缂栧彿瑙勫垯")]
+ public class LesSerialRuleDetail : DEntityBase
+ {
+ /// <summary>
+ /// 搴忓彿绫诲埆
+ /// </summary>
+ [Comment("搴忓彿绫诲埆")]
+ [MaxLength(50)]
+ public string SerialType { get; set; }
+
+ /// <summary>
+ /// 椤规
+ /// </summary>
+ [Comment("椤规")]
+ public int ItemNo { get; set; }
+
+ /// <summary>
+ /// 璧勬枡鏉ユ簮
+ /// </summary>
+ [Comment("璧勬枡鏉ユ簮")]
+ public string SourceType { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ [Comment("闀垮害")]
+ public int SerialLength { get; set; }
+
+ /// <summary>
+ /// 鎾峰彇鐮佹暟(璧�)
+ /// </summary>
+ [Comment("鎾峰彇鐮佹暟(璧�)")]
+ public int SearchStart{ get; set; }
+
+ /// <summary>
+ /// 杩涗綅绫诲瀷
+ /// </summary>
+ [Comment("杩涗綅绫诲瀷")]
+ public int DecimalType { get; set; }
+
+ /// <summary>
+ /// 浣跨敤鑰呰嚜瀹氫箟
+ /// </summary>
+ [Comment("浣跨敤鑰呰嚜瀹氫箟"), MaxLength(50)]
+ public string UserDefine { get; set; }
+
+ /// <summary>
+ /// 搴忓彿缂栫爜
+ /// </summary>
+ [Comment("搴忓彿缂栫爜")]
+ public YesOrNot SerialCodeFlag { get; set; } = YesOrNot.N;
+
+ /// <summary>
+ /// 璇存槑
+ /// </summary>
+ [Comment("璇存槑"), MaxLength(300)]
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 搴忓彿绫诲埆缂栧彿
+ /// </summary>
+ [Comment("搴忓彿绫诲埆缂栧彿")]
+ [MaxLength(50)]
+ public string SerialTypeNo { get; set; }
+
+ /// <summary>
+ /// 鎾峰彇
+ /// </summary>
+ [Comment("鎾峰彇")]
+ [MaxLength(50)]
+ public int GetData { get; set; }
+
+ /// <summary>
+ /// 鑷姩琛ラ浂
+ /// </summary>
+ [Comment("鑷姩琛ラ浂")]
+ public int PadLeft { get; set; }
+
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs
new file mode 100644
index 0000000..f1644c5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Les/LesStation.cs
@@ -0,0 +1,66 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 宸ヤ綅琛�
+ /// </summary>
+ [Table("les_station")]
+ [Comment("宸ヤ綅琛�")]
+ public class LesStation : DEntityBase
+ {
+ /// <summary>
+ /// 浜х嚎Id
+ /// </summary>
+ [Comment("浜х嚎Id")]
+ public long ProductionlineId { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅鍚嶇О
+ /// </summary>
+ [Comment("宸ヤ綅鍚嶇О")]
+ [MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅缂栫爜
+ /// </summary>
+ [Comment("宸ヤ綅缂栫爜")]
+ [MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綅鐘舵��
+ /// </summary>
+ [Comment("宸ヤ綅鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 杩愯鐘舵��
+ /// </summary>
+ [Comment("杩愯鐘舵��")]
+ public PlaceStatus StataionStatus { get; set; } = PlaceStatus.KONGXIAN;
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瑙勬牸
+ /// </summary>
+ [Comment("搴撲綅瑙勬牸")]
+ public decimal PlaceSpec { get; set; }
+
+ /// <summary>
+ /// 浜х嚎琛�
+ /// </summary>
+ //public LesProductionline LesProductionline { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs
new file mode 100644
index 0000000..e7f996e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrder.cs
@@ -0,0 +1,90 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 杞偍鍗�
+ /// </summary>
+ [Table("wms_dumporder")]
+ [Comment("杞偍鍗�")]
+ public class WmsDumpOrder : DEntityBase, IEntityTypeBuilder<WmsDumpOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ [Comment("鍒涘缓鏃ユ湡")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜�
+ /// </summary>
+ [Comment("鍒涘缓浜�")]
+ [MaxLength(255)]
+ public string Creator { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ [Comment("鍏徃")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsDumpOrderDetails> WmsDumpOrderDetails { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsDumpOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WmsDumpOrderDetails)
+ .WithOne(x => x.WmsDumpOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs
new file mode 100644
index 0000000..da3456b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsDumpOrderDetails.cs
@@ -0,0 +1,100 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 杞偍鍗曟槑缁�
+ /// </summary>
+ [Table("wms_dumporder_details")]
+ [Comment("杞偍鍗曟槑缁�")]
+ public class WmsDumpOrderDetails : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ [Comment("闀垮害")]
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ [Comment("SCM鎵规鍙�")]
+ [MaxLength(255)]
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ [Comment("WMS鎵规鍙�")]
+ [MaxLength(255)]
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 搴撳瓨椤圭洰缂栫爜
+ /// </summary>
+ [Comment("搴撳瓨椤圭洰缂栫爜")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鏂板簱瀛橀」鐩紪鐮�
+ /// </summary>
+ [Comment("鏂板簱瀛橀」鐩紪鐮�")]
+ [MaxLength(255)]
+ public string Projectcode_To { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsDumpOrder WmsDumpOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs
new file mode 100644
index 0000000..7a810d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrder.cs
@@ -0,0 +1,111 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫�璐у崟
+ /// </summary>
+ [Table("wms_goodsreturnorder")]
+ [Comment("閫�璐у崟")]
+ public class WmsGoodsReturnOrder : DEntityBase, IEntityTypeBuilder<WmsGoodsReturnOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ [Comment("鍒涘缓鏃ユ湡")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ [Comment("渚涘簲鍟嗙紪鐮�")]
+ [MaxLength(255)]
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ [Comment("渚涘簲鍟嗗悕绉�")]
+ [MaxLength(255)]
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ [Comment("鍏徃鍚嶇О")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ [Comment("浠撶鍛�")]
+ [MaxLength(255)]
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ [Comment("浠撳偍涓績")]
+ [MaxLength(255)]
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ [Comment("閫�璐х姸鎬�")]
+ [Required]
+ public GoodsReturnStatus GoodsReturnStatus { get; set; } = GoodsReturnStatus.WEITUIHUO;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsGoodsReturnOrderDetails> WmsGoodsReturnOrderDetails { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsGoodsReturnOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WmsGoodsReturnOrderDetails)
+ .WithOne(x => x.WmsGoodsReturnOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs
new file mode 100644
index 0000000..4307384
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsGoodsReturnOrderDetails.cs
@@ -0,0 +1,162 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫�璐у崟鎹槑缁嗚〃
+ /// </summary>
+ [Table("wms_goodsreturnorder_details")]
+ [Comment("閫�璐у崟鎹槑缁嗚〃")]
+ public class WmsGoodsReturnOrderDetails : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ [Comment("鍗曟牴闀垮害")]
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ [Comment("鐞嗚閲嶉噺")]
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ [Comment("鎵规鍙�")]
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ [Comment("涓嶅惈绋庡崟浠�")]
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ [Comment("鎴愭湰閲戦")]
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ [Comment("鍚堝悓缂栧彿")]
+ [MaxLength(255)]
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ [Comment("浠撻棿")]
+ [MaxLength(255)]
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ [Comment("鎶ュ叧鍗曞彿")]
+ [MaxLength(255)]
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ [Comment("鎶ュ叧鍝佸悕")]
+ [MaxLength(255)]
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ [Comment("鎶ュ叧椤瑰彿")]
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ [Comment("鎶ュ叧鍗曚綅")]
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ [Comment("鎶ュ叧鏁伴噺")]
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ [Comment("鎶ュ叧閲戦")]
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ [Comment("閫�璐х姸鎬�")]
+ [Required]
+ public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsGoodsReturnOrder WmsGoodsReturnOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs
new file mode 100644
index 0000000..631d89d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrder.cs
@@ -0,0 +1,152 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁琛�
+ /// </summary>
+ [Table("wms_order")]
+ [Comment("鍗曟嵁琛�")]
+ public class WmsOrder : DEntityBase, IEntityTypeBuilder<WmsOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ [Comment("鍒涘缓鏃ユ湡")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ [Comment("閫佽揣閫氱煡鍗曞彿")]
+ [MaxLength(255)]
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ [Comment("渚涘簲鍟嗙紪鐮�")]
+ [MaxLength(255)]
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ [Comment("渚涘簲鍟嗗悕绉�")]
+ [MaxLength(255)]
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ [Comment("鍏徃鍚嶇О")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ [Comment("浠撶鍛�")]
+ [MaxLength(255)]
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ [Comment("璐告槗鏂瑰紡")]
+ public TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ [Comment("浠撳偍涓績")]
+ [MaxLength(255)]
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ [Comment("浠撻棿")]
+ [MaxLength(255)]
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ [Comment("鎶ュ叧鍗曞彿")]
+ [MaxLength(255)]
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ [Comment("涓撲笟")]
+ [MaxLength(255)]
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(500)]
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsOrderDetails> WareOrderDetails { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WareOrderDetails)
+ .WithOne(x => x.WareOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs
new file mode 100644
index 0000000..bee312f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsOrderDetails.cs
@@ -0,0 +1,178 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏琛�
+ /// </summary>
+ [Table("wms_order_details")]
+ [Comment("鍗曟嵁鏄庣粏琛�")]
+ public class WmsOrderDetails : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏁伴噺
+ /// </summary>
+ [Comment("鍏ュ簱鏁伴噺")]
+ public decimal InventoryQty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ [Comment("鍗曟牴闀垮害")]
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ [Comment("鐞嗚閲嶉噺")]
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ [Comment("涓嶅惈绋庡崟浠�")]
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ [Comment("鎴愭湰閲戦")]
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ [Comment("鍚堝悓缂栧彿")]
+ [MaxLength(255)]
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ [Comment("鎶ュ叧鍝佸悕")]
+ [MaxLength(255)]
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ [Comment("鎶ュ叧椤瑰彿")]
+ [MaxLength(255)]
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ [Comment("鎶ュ叧鍗曚綅")]
+ [MaxLength(255)]
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ [Comment("鎶ュ叧鏁伴噺")]
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ [Comment("鎶ュ叧閲戦")]
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ [Comment("鐗规畩瑕佹眰")]
+ [MaxLength(255)]
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+ /// <summary>
+ /// 妫�楠岀粨鏋�
+ /// </summary>
+ [Comment("妫�楠岀粨鏋�")]
+ [Required]
+ public InspectionResultsEnum InspectionResults { get; set; } = InspectionResultsEnum.WEIJIANYAN;
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsOrder WareOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs
new file mode 100644
index 0000000..be6edd4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrder.cs
@@ -0,0 +1,166 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏀惰揣鍗�
+ /// </summary>
+ [Table("wms_receiptorder")]
+ [Comment("鏀惰揣鍗�")]
+ public class WmsReceiptOrder : DEntityBase, IEntityTypeBuilder<WmsReceiptOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// WMS鏀惰揣鍗曞彿
+ /// </summary>
+ [Comment("WMS鏀惰揣鍗曞彿")]
+ [MaxLength(255)]
+ public string WMSNO { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃ユ湡
+ /// </summary>
+ [Comment("鍒涘缓鏃ユ湡")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 閫佽揣閫氱煡鍗曞彿
+ /// </summary>
+ [Comment("閫佽揣閫氱煡鍗曞彿")]
+ [MaxLength(255)]
+ public string SourceBillNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗙紪鐮�
+ /// </summary>
+ [Comment("渚涘簲鍟嗙紪鐮�")]
+ [MaxLength(255)]
+ public string Vendorcode { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟嗗悕绉�
+ /// </summary>
+ [Comment("渚涘簲鍟嗗悕绉�")]
+ [MaxLength(255)]
+ public string Vendorname { get; set; }
+
+ /// <summary>
+ /// 鍏徃鍚嶇О
+ /// </summary>
+ [Comment("鍏徃鍚嶇О")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 浠撶鍛�
+ /// </summary>
+ [Comment("浠撶鍛�")]
+ [MaxLength(255)]
+ public string WarehouseKeepername { get; set; }
+
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ [Comment("璐告槗鏂瑰紡")]
+ public TradeMode TradeMode { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ [Comment("浠撳偍涓績")]
+ [MaxLength(255)]
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 浠撻棿
+ /// </summary>
+ [Comment("浠撻棿")]
+ [MaxLength(255)]
+ public string StoreRoomname { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曞彿
+ /// </summary>
+ [Comment("鎶ュ叧鍗曞彿")]
+ [MaxLength(255)]
+ public string DeclarationCode { get; set; }
+
+ /// <summary>
+ /// 涓撲笟
+ /// </summary>
+ [Comment("涓撲笟")]
+ [MaxLength(255)]
+ public string Majorname { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(500)]
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鐘舵��
+ /// </summary>
+ [Comment("鏀惰揣鐘舵��")]
+ [Required]
+ public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+ /// <summary>
+ /// 鎶ユ鐘舵��
+ /// </summary>
+ [Comment("鎶ユ鐘舵��")]
+ [Required]
+ public InspectionStatus InspectionStatus { get; set; } = InspectionStatus.WEIBAOJIAN;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsReceiptOrderDetails> WmsReceiptOrderDetails { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsReceiptOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WmsReceiptOrderDetails)
+ .WithOne(x => x.WmsReceiptOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs
new file mode 100644
index 0000000..9c34ec6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsReceiptOrderDetails.cs
@@ -0,0 +1,193 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏀惰揣鍗曟嵁鏄庣粏琛�
+ /// </summary>
+ [Table("wms_receiptorder_details")]
+ [Comment("鏀惰揣鍗曟嵁鏄庣粏琛�")]
+ public class WmsReceiptOrderDetails : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ [Comment("鍗曟牴闀垮害")]
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 鐞嗚閲嶉噺
+ /// </summary>
+ [Comment("鐞嗚閲嶉噺")]
+ public decimal TheoreticalWeight { get; set; }
+
+ /// <summary>
+ /// 涓嶅惈绋庡崟浠�
+ /// </summary>
+ [Comment("涓嶅惈绋庡崟浠�")]
+ public decimal Price { get; set; }
+
+ /// <summary>
+ /// 鎴愭湰閲戦
+ /// </summary>
+ [Comment("鎴愭湰閲戦")]
+ public decimal SumPrice { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ [Comment("鍚堝悓缂栧彿")]
+ [MaxLength(255)]
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍝佸悕
+ /// </summary>
+ [Comment("鎶ュ叧鍝佸悕")]
+ [MaxLength(255)]
+ public string TradeName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧椤瑰彿
+ /// </summary>
+ [Comment("鎶ュ叧椤瑰彿")]
+ [MaxLength(255)]
+ public string ItemNo { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鍗曚綅
+ /// </summary>
+ [Comment("鎶ュ叧鍗曚綅")]
+ [MaxLength(255)]
+ public string CustomsUnitName { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧鏁伴噺
+ /// </summary>
+ [Comment("鎶ュ叧鏁伴噺")]
+ public decimal CustomsNum { get; set; }
+
+ /// <summary>
+ /// 鎶ュ叧閲戦
+ /// </summary>
+ [Comment("鎶ュ叧閲戦")]
+ public decimal CustomsPrices { get; set; }
+
+ /// <summary>
+ /// 鐗规畩瑕佹眰
+ /// </summary>
+ [Comment("鐗规畩瑕佹眰")]
+ [MaxLength(255)]
+ public string SpecialNeeds { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 閫佽揣鏁伴噺
+ /// </summary>
+ [Comment("閫佽揣鏁伴噺")]
+ [MaxLength(50)]
+ public decimal DeliveryQty { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鏁伴噺
+ /// </summary>
+ [Comment("鏀惰揣鏁伴噺")]
+ [MaxLength(50)]
+ public decimal ReceivedQty { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鐘舵��
+ /// </summary>
+ [Comment("鏀惰揣鐘舵��")]
+ [Required]
+ public ReceivingStatus ReceivingStatus { get; set; } = ReceivingStatus.WEISHOUHUO;
+
+ /// <summary>
+ /// 鎶ユ鐘舵��
+ /// </summary>
+ [Comment("鎶ユ鐘舵��")]
+ [Required]
+ public InspectionStatus InspectionStatus { get; set; } = InspectionStatus.WEIBAOJIAN;
+
+ /// <summary>
+ /// 鎶ユ缁撴灉
+ /// </summary>
+ [Comment("鎶ユ缁撴灉")]
+ [Required]
+ public InspectionResultsEnum InspectionResultsEnum { get; set; } = InspectionResultsEnum.WEIJIANYAN;
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsReceiptOrder WmsReceiptOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs
new file mode 100644
index 0000000..ad82f9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsSortOrder.cs
@@ -0,0 +1,109 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍒嗘嫞琛�
+ /// </summary>
+ [Comment("鍒嗘嫞琛�")]
+ [Table("wms_sortorder")]
+ public class WmsSortOrder : DEntityBase
+ {
+ /// <summary>
+ /// 鏉ユ簮鍗曞彿
+ /// </summary>
+ [Comment("鏉ユ簮鍗曞彿")]
+ [MaxLength(50)]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍑哄簱鍗曟嵁鏄庣粏Id
+ /// </summary>
+ public long OrderDetailID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞缁勭洏鍗曞彿
+ /// </summary>
+ [Comment("鍒嗘嫞缁勭洏鍗曞彿")]
+ [MaxLength(50)]
+ public string ContainerOrderNo { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ [Comment("鍒嗘鍙�")]
+ [MaxLength(255)]
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [MaxLength(20)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 瀹瑰櫒缂栧彿
+ /// </summary>
+ [Comment("瀹瑰櫒缂栧彿")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘嫞鏁�
+ /// </summary>
+ [Comment("鍒嗘嫞鏁�")]
+ public decimal SortQuantity { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍒嗘嫞鏁�
+ /// </summary>
+ [Comment("瀹為檯鍒嗘嫞鏁�")]
+ public decimal ActualQuantity { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(500)]
+ public string Remarks { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2
+ /// </summary>
+ [Comment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2")]
+ public SortStatusEnum SortStatus { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs
new file mode 100644
index 0000000..44b88d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrder.cs
@@ -0,0 +1,131 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫�鏂欏叆搴撳崟
+ /// </summary>
+ [Table("wms_stockreturn_order")]
+ [Comment("閫�鏂欏叆搴撳崟")]
+ public class WmsStockReturnOrder : DEntityBase, IEntityTypeBuilder<WmsStockReturnOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ [Comment("浜嬪姟绫诲瀷")]
+ public MoveType MoveType { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 閫�鏂欑敵璇锋棩鏈�
+ /// </summary>
+ [Comment("閫�鏂欑敵璇锋棩鏈�")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ [Comment("棰嗙敤椤圭洰鍙�")]
+ [MaxLength(255)]
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ [Comment("棰嗘枡閮ㄩ棬")]
+ [MaxLength(255)]
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鏀剁泭閮ㄩ棬
+ /// </summary>
+ [Comment("鏀剁泭閮ㄩ棬")]
+ [MaxLength(255)]
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ [Comment("瀹㈡埛")]
+ [MaxLength(255)]
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 棰嗗彇浜�
+ /// </summary>
+ [Comment("棰嗗彇浜�")]
+ [MaxLength(255)]
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ [Comment("鍏徃")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ [Comment("鏂藉伐闃�")]
+ [MaxLength(255)]
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsStockReturnOrderDetails> WmsStockReturnOrderDetails { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsStockReturnOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WmsStockReturnOrderDetails)
+ .WithOne(x => x.WmsStockReturnOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs
new file mode 100644
index 0000000..90a3633
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsStockReturnOrderDetails.cs
@@ -0,0 +1,108 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫�鏂欏叆搴撳崟璇︽儏
+ /// </summary>
+ [Table("wms_stockreturn_order_details")]
+ [Comment("閫�鏂欏叆搴撳崟璇︽儏")]
+ public class WmsStockReturnOrderDetails : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// 涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ [Comment("鍗曟牴闀垮害")]
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ [Comment("浠舵暟")]
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ [Comment("SCM鎵规鍙�")]
+ [MaxLength(255)]
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ [Comment("WMS鎵规鍙�")]
+ [MaxLength(255)]
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ [Comment("鍒嗘鍙�")]
+ [MaxLength(255)]
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsStockReturnOrder WmsStockReturnOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs
new file mode 100644
index 0000000..b972a1b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrder.cs
@@ -0,0 +1,145 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 棰嗘枡鍗�
+ /// </summary>
+ [Table("wms_takematerialorder")]
+ [Comment("棰嗘枡鍗�")]
+ public class WmsTakeMaterialOrder : DEntityBase, IEntityTypeBuilder<WmsTakeMaterialOrder>
+ {
+ /// <summary>
+ /// Billdate
+ /// </summary>
+ [Comment("鍗曟嵁澶х被")]
+ [Required]
+ public long OrderLargeCategory { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁灏忕被
+ /// </summary>
+ [Comment("鍗曟嵁灏忕被")]
+ [Required]
+ public long OrderSubclass { get; set; }
+
+ /// <summary>
+ ///浜嬪姟绫诲瀷
+ ///閿�鍞鏂欙細Z201 鐢熶骇棰嗘枡锛歓221
+ /// </summary>
+ [Comment("浜嬪姟绫诲瀷")]
+ public string MoveType { get; set; }
+
+ /// <summary>
+ /// SCM 棰� 鏂� 鐢宠鍗曞ご琛ㄥ敮涓�鏍囪瘑
+ /// </summary>
+ [Comment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�")]
+ public long SOID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁缂栧彿
+ /// </summary>
+ [Comment("鍗曟嵁缂栧彿")]
+ [Required]
+ [MaxLength(255)]
+ public string NO { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡鍗曠敵璇锋棩鏈�
+ /// </summary>
+ [Comment("棰嗘枡鍗曠敵璇锋棩鏈�")]
+ public DateTimeOffset? Billdate { get; set; }
+
+ /// <summary>
+ /// 棰嗙敤椤圭洰鍙�
+ /// </summary>
+ [Comment("棰嗙敤椤圭洰鍙�")]
+ [MaxLength(255)]
+ public string WBSElementcode { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡閮ㄩ棬
+ /// </summary>
+ [Comment("棰嗘枡閮ㄩ棬")]
+ [MaxLength(255)]
+ public string BenefitingDepartcode { get; set; }
+
+ /// <summary>
+ /// 鍙楃泭閮ㄩ棬
+ /// </summary>
+ [Comment("鍙楃泭閮ㄩ棬")]
+ [MaxLength(255)]
+ public string CostCenterID { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ [Comment("瀹㈡埛")]
+ [MaxLength(255)]
+ public string FI_Client_Analysis_H { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍏徃闂翠氦鏄� 1.鏄� 2.鍚�
+ /// </summary>
+ [Comment("鏄惁鍏徃闂翠氦鏄�")]
+ public long IsInnerCompany { get; set; }
+
+ /// <summary>
+ /// 棰嗘枡浜�
+ /// </summary>
+ [Comment("棰嗘枡浜�")]
+ [MaxLength(255)]
+ public string PickerID { get; set; }
+
+ /// <summary>
+ /// 浠撳偍涓績
+ /// </summary>
+ [Comment("浠撳偍涓績")]
+ [MaxLength(255)]
+ public string WarehouseCentername { get; set; }
+
+ /// <summary>
+ /// 鍏徃
+ /// </summary>
+ [Comment("鍏徃")]
+ [MaxLength(255)]
+ public string Companyname { get; set; }
+
+ /// <summary>
+ /// 鏂藉伐闃�
+ /// </summary>
+ [Comment("鏂藉伐闃�")]
+ [MaxLength(255)]
+ public string ConstructionTeamID { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderStatusEnum OrderStatus { get; set; } = OrderStatusEnum.WEIXIAFA;
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏
+ /// </summary>
+ public ICollection<WmsTakeMaterialOrderDetail> WmsTakeMaterialOrderDetail { get; set; }
+
+ /// <summary>
+ /// 1瀵瑰閰嶇疆鍏崇郴
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsTakeMaterialOrder> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 涓�瀵瑰閰嶇疆
+ entityBuilder.HasMany(x => x.WmsTakeMaterialOrderDetail)
+ .WithOne(x => x.WmsTakeMaterialOrder)
+ .HasForeignKey(x => x.OrderId);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs
new file mode 100644
index 0000000..4b687f0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/Order/WmsTakeMaterialOrderDetail.cs
@@ -0,0 +1,132 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏琛�
+ /// </summary>
+ [Table("wms_takematerial_orderdetail")]
+ [Comment("鍗曟嵁鏄庣粏琛�")]
+ public class WmsTakeMaterialOrderDetail : DEntityBase
+ {
+ /// <summary>
+ /// 鍗曟嵁Id
+ /// </summary>
+ [Comment("鍗曟嵁Id")]
+ [MaxLength(50)]
+ public long OrderId { get; set; }
+
+ /// <summary>
+ /// SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑
+ /// </summary>
+ [Comment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑")]
+ public long OID { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [MaxLength(255)]
+ public string Materialcode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [MaxLength(255)]
+ public string Materialname { get; set; }
+
+ /// <summary>
+ /// 鍩烘湰鍗曚綅
+ /// </summary>
+ [Comment("鍩烘湰鍗曚綅")]
+ [MaxLength(255)]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Comment("鏁伴噺")]
+ public decimal Qty { get; set; }
+
+ /// <summary>
+ /// 涓嬪彂鏁伴噺
+ /// </summary>
+ [Comment("涓嬪彂鏁伴噺")]
+ public decimal DistributeQty { get; set; }
+
+ /// <summary>
+ /// 鍗曟牴闀垮害
+ /// </summary>
+ [Comment("鍗曟牴闀垮害")]
+ public decimal SingleLength { get; set; }
+
+ /// <summary>
+ /// 浠舵暟
+ /// </summary>
+ [Comment("浠舵暟")]
+ public decimal Number { get; set; }
+
+ /// <summary>
+ /// SCM鎵规鍙�
+ /// </summary>
+ [Comment("SCM鎵规鍙�")]
+ [MaxLength(255)]
+ public string Batchno_SCM { get; set; }
+
+ /// <summary>
+ /// WMS鎵规鍙�
+ /// </summary>
+ [Comment("WMS鎵规鍙�")]
+ public string Batchno_WMS { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+
+ /// <summary>
+ /// 鍒嗘鍙�
+ /// </summary>
+ [Comment("鍒嗘鍙�")]
+ [MaxLength(255)]
+ public string PartCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鐘舵��
+ /// </summary>
+ [Comment("鍗曟嵁鐘舵��")]
+ [Required]
+ public OrderDetailsStatusEnum OrderStatus { get; set; } = OrderDetailsStatusEnum.WEIZHIXING;
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁涓昏〃
+ /// </summary>
+ public WmsTakeMaterialOrder WmsTakeMaterialOrder { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs
new file mode 100644
index 0000000..310f561
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysApp.cs
@@ -0,0 +1,48 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺搴旂敤琛�
+ /// </summary>
+ [Table("sys_app")]
+ [Comment("绯荤粺搴旂敤琛�")]
+ public class SysApp : DEntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鏄惁榛樿婵�娲伙紙Y-鏄紝N-鍚︼級,鍙兘鏈変竴涓郴缁熼粯璁ゆ縺娲�
+ /// 鐢ㄦ埛鐧诲綍鍚庨粯璁ゅ睍绀烘绯荤粺鑿滃崟
+ /// </summary>
+ [Comment("鏄惁榛樿婵�娲�")]
+ [MaxLength(5)]
+ public string Active { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs
new file mode 100644
index 0000000..9762451
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGen.cs
@@ -0,0 +1,119 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚琛�
+ /// </summary>
+ [Table("sys_code_gen")]
+ [Comment("浠g爜鐢熸垚琛�")]
+ public class SysCodeGen : DEntityBase
+ {
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Comment("浣滆�呭鍚�")]
+ [MaxLength(20)]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鏄惁绉婚櫎琛ㄥ墠缂�
+ /// </summary>
+ [Comment("鏄惁绉婚櫎琛ㄥ墠缂�")]
+ [MaxLength(5)]
+ public string TablePrefix { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Comment("鐢熸垚鏂瑰紡")]
+ [MaxLength(20)]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Comment("鏁版嵁搴撳悕")]
+ [MaxLength(100)]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍚�
+ /// </summary>
+ [Comment("鏁版嵁搴撹〃鍚�")]
+ [MaxLength(100)]
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Comment("鍛藉悕绌洪棿")]
+ [MaxLength(100)]
+ public string NameSpace { get; set; }
+
+
+ /// <summary>
+ /// 鏄惁鍙槸鏌ヨ
+ /// </summary>
+ [Comment("鏄惁鍙槸鏌ヨ")]
+ public bool IsOnlyQuery { get; set; }
+
+
+ /// <summary>
+ /// 妯″潡璺緞
+ /// </summary>
+ [Comment("妯″潡璺緞")]
+ [MaxLength(100)]
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 鍓嶇椤圭洰鍚�
+ /// </summary>
+ [Comment("鍓嶇椤圭洰鍚�")]
+ [MaxLength(100)]
+ public string FrontProName { get; set; }
+
+
+ /// <summary>
+ /// 绋嬪簭闆�
+ /// </summary>
+ [NotMapped]
+ public string ProName
+ {
+ get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+ }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ [Comment("涓氬姟鍚�")]
+ [MaxLength(100)]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Comment("鑿滃崟搴旂敤鍒嗙被")]
+ [MaxLength(50)]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟缂栫爜
+ /// </summary>
+ [Comment("鑿滃崟缂栫爜")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 浣庝唬鐮佹ā鍧楁潵婧�
+ /// </summary>
+ public long? LowCodeId { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏀寔瀵煎叆
+ /// </summary>
+ [Comment("鏄惁鏀寔瀵煎叆")]
+ public bool IsWhetherImport { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs
new file mode 100644
index 0000000..afe057b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeGenConfig.cs
@@ -0,0 +1,169 @@
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚瀛楁閰嶇疆琛�
+ /// </summary>
+ [Table("sys_code_gen_config")]
+ [Comment("浠g爜鐢熸垚瀛楁閰嶇疆琛�")]
+ public class SysCodeGenConfig : DEntityBase
+ {
+ /// <summary>
+ /// 浠g爜鐢熸垚涓昏〃ID
+ /// </summary>
+ [Comment("浠g爜鐢熸垚涓昏〃ID")]
+ public long CodeGenId { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳瓧娈靛悕
+ /// </summary>
+ [Comment("鏁版嵁搴撳瓧娈靛悕")]
+ [Required, MaxLength(100)]
+ public string ColumnName { get; set; }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ [Comment("瀛楁鎻忚堪")]
+ [MaxLength(100)]
+ public string ColumnComment { get; set; }
+
+ /// <summary>
+ /// .NET鏁版嵁绫诲瀷
+ /// </summary>
+ [Comment(".NET鏁版嵁绫诲瀷")]
+ [MaxLength(50)]
+ public string NetType { get; set; }
+
+ /// <summary>
+ /// .NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)
+ /// </summary>
+ [Comment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)")]
+ [MaxLength(50)]
+ public string DtoNetType { get; set; }
+
+ /// <summary>
+ /// 浣滅敤绫诲瀷锛堝瓧鍏革級
+ /// </summary>
+ [Comment("浣滅敤绫诲瀷")]
+ [MaxLength(50)]
+ public string EffectType { get; set; }
+
+ /// <summary>
+ /// 澶栭敭瀹炰綋鍚嶇О
+ /// </summary>
+ [Comment("澶栭敭瀹炰綋鍚嶇О")]
+ [MaxLength(50)]
+ public string FkEntityName { get; set; }
+
+ /// <summary>
+ /// 澶栭敭鏄剧ず瀛楁
+ /// </summary>
+ [Comment("澶栭敭鏄剧ず瀛楁")]
+ [MaxLength(50)]
+ public string FkColumnName { get; set; }
+
+ /// <summary>
+ /// 澶栭敭鏄剧ず瀛楁.NET绫诲瀷
+ /// </summary>
+ [Comment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷")]
+ [MaxLength(50)]
+ public string FkColumnNetType { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀code
+ /// </summary>
+ [Comment("瀛楀吀Code")]
+ [MaxLength(50)]
+ public string DictTypeCode { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄惁缂╄繘锛堝瓧鍏革級
+ /// </summary>
+ [Comment("鍒楄〃鏄惁缂╄繘")]
+ [MaxLength(5)]
+ public string WhetherRetract { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~锛堝瓧鍏革級
+ /// </summary>
+ [Comment("鏄惁蹇呭~")]
+ [MaxLength(5)]
+ public string WhetherRequired { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄煡璇㈡潯浠�
+ /// </summary>
+ [Comment("鏄惁鏄煡璇㈡潯浠�")]
+ [MaxLength(5)]
+ public string QueryWhether { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鏂瑰紡
+ /// </summary>
+ [Comment("鏌ヨ鏂瑰紡")]
+ [MaxLength(10)]
+ public string QueryType { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄剧ず
+ /// </summary>
+ [Comment("鍒楄〃鏄剧ず")]
+ [MaxLength(5)]
+ public string WhetherTable { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄惁鎺掑簭
+ /// </summary>
+ [Comment("鍒楄〃鏄惁鎺掑簭")]
+ [MaxLength(5)]
+ public string WhetherOrderBy { get; set; }
+
+ /// <summary>
+ /// 澧炴敼
+ /// </summary>
+ [Comment("澧炴敼")]
+ [MaxLength(5)]
+ public string WhetherAddUpdate { get; set; }
+
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [Comment("涓婚敭")]
+ [MaxLength(5)]
+ public string ColumnKey { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撲腑绫诲瀷锛堢墿鐞嗙被鍨嬶級
+ /// </summary>
+ [Comment("鏁版嵁搴撲腑绫诲瀷")]
+ [MaxLength(128)]
+ public string DataType { get; set; }
+
+ /// <summary>
+ /// 鏄惁閫氱敤瀛楁
+ /// </summary>
+ [Comment("鏄惁閫氱敤瀛楁")]
+ [MaxLength(5)]
+ public string WhetherCommon { get; set; }
+
+
+ /// <summary>
+ /// 椤甸潰鍒楁樉绀烘渶灏忓搴�
+ /// </summary>
+ [Comment("椤甸潰鍒楁樉绀烘渶灏忓搴�")]
+ [MaxLength(50)]
+ public string ShowTitleMinWidth { get; set; }
+
+
+ /// <summary>
+ /// 鏄惁鑱斿悎涓婚敭
+ /// </summary>
+ [Comment("鏄惁鑱斿悎涓婚敭")]
+ [MaxLength(5)]
+ public string WhetherUnionKey { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs
new file mode 100644
index 0000000..2001705
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysCodeModular.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚琛�
+ /// </summary>
+ [Table("sys_code_modular")]
+ [Comment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃")]
+ public class SysCodeModular : DEntityBase
+ {
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Comment("浣滆�呭鍚�")]
+ [MaxLength(20)]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Comment("鏁版嵁搴撳悕")]
+ [MaxLength(100)]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Comment("鍛藉悕绌洪棿")]
+ [MaxLength(100)]
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 绋嬪簭闆�
+ /// </summary>
+ [NotMapped]
+ public string ProName
+ {
+ get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+ }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ [Comment("涓氬姟鍚�")]
+ [MaxLength(100)]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Comment("鑿滃崟搴旂敤鍒嗙被")]
+ [MaxLength(50)]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟缂栫爜
+ /// </summary>
+ [Comment("鑿滃崟缂栫爜")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗�
+ /// </summary>
+ [Comment("鍔ㄦ�佽〃鍗�")]
+ [MaxLength()]
+ public string FormDesignJson { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs
new file mode 100644
index 0000000..ec57314
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysConfig.cs
@@ -0,0 +1,61 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍙傛暟閰嶇疆琛�
+ /// </summary>
+ [Table("sys_config")]
+ [Comment("鍙傛暟閰嶇疆琛�")]
+ public class SysConfig : DEntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 灞炴�у��
+ /// </summary>
+ [Comment("灞炴�у��")]
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄郴缁熷弬鏁帮紙Y-鏄紝N-鍚︼級
+ /// </summary>
+ [Comment("鏄惁鏄郴缁熷弬鏁�")]
+ [MaxLength(5)]
+ public string SysFlag { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 甯搁噺鎵�灞炲垎绫荤殑缂栫爜锛屾潵鑷簬鈥滃父閲忕殑鍒嗙被鈥濆瓧鍏�
+ /// </summary>
+ [Comment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜")]
+ [MaxLength(50)]
+ public string GroupCode { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs
new file mode 100644
index 0000000..e2c905f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictData.cs
@@ -0,0 +1,58 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛楀吀鍊艰〃
+ /// </summary>
+ [Table("sys_dict_data")]
+ [Comment("瀛楀吀鍊艰〃")]
+ public class SysDictData : DEntityBase
+ {
+ /// <summary>
+ /// 瀛楀吀绫诲瀷Id
+ /// </summary>
+ [Comment("瀛楀吀绫诲瀷Id")]
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鍊�
+ /// </summary>
+ [Comment("鍊�")]
+ [MaxLength(100)]
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 鎵�灞炵被鍨�
+ /// </summary>
+ public SysDictType SysDictType { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs
new file mode 100644
index 0000000..dbd9ff8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysDictType.cs
@@ -0,0 +1,68 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛楀吀绫诲瀷琛�
+ /// </summary>
+ [Table("sys_dict_type")]
+ [Comment("瀛楀吀绫诲瀷琛�")]
+ public class SysDictType : DEntityBase, IEntityTypeBuilder<SysDictType>
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 瀵瑰簲鏋氫妇
+ /// </summary>
+ [Comment("瀵瑰簲鏋氫妇")]
+ [MaxLength(200)]
+ public string EnumClassName { get; set; }
+
+ /// <summary>
+ /// 瀛楀吀鏁版嵁
+ /// </summary>
+ public ICollection<SysDictData> SysDictDatas { get; set; }
+
+ public void Configure(EntityTypeBuilder<SysDictType> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(x => x.SysDictDatas)
+ .WithOne(x => x.SysDictType)
+ .HasForeignKey(x => x.TypeId);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs
new file mode 100644
index 0000000..365ab36
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmp.cs
@@ -0,0 +1,70 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍛樺伐琛�
+ /// </summary>
+ [Table("sys_emp")]
+ [Comment("鍛樺伐琛�")]
+ public class SysEmp : IEntity, IEntityTypeBuilder<SysEmp>
+ {
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ [Comment("鐢ㄦ埛Id")]
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 宸ュ彿
+ /// </summary>
+ [Comment("宸ュ彿")]
+ [MaxLength(30)]
+ public string JobNum { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Comment("鏈烘瀯Id")]
+ public long OrgId { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯鍚嶇О
+ /// </summary>
+ [Comment("鏈烘瀯鍚嶇О")]
+ [MaxLength(50)]
+ public string OrgName { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鑱屼綅锛�
+ /// </summary>
+ public ICollection<SysPos> SysPos { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堝憳宸�-鑱屼綅锛�
+ /// </summary>
+ public List<SysEmpPos> SysEmpPos { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氶厤缃叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<SysEmp> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(p => p.SysPos).WithMany(p => p.SysEmps).UsingEntity<SysEmpPos>(
+ u => u.HasOne(c => c.SysPos).WithMany(c => c.SysEmpPos).HasForeignKey(c => c.SysPosId),
+ u => u.HasOne(c => c.SysEmp).WithMany(c => c.SysEmpPos).HasForeignKey(c => c.SysEmpId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysEmpId, c.SysPosId });
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs
new file mode 100644
index 0000000..4ab68d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpExtOrgPos.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�
+ /// </summary>
+ [Table("sys_emp_ext_org_pos")]
+ [Comment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�")]
+ public class SysEmpExtOrgPos : IEntity, IEntityTypeBuilder<SysEmpExtOrgPos>
+ {
+ /// <summary>
+ /// 鍛樺伐Id
+ /// </summary>
+ [Comment("鍛樺伐Id")]
+ public long SysEmpId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堝憳宸ワ級
+ /// </summary>
+ public SysEmp SysEmp { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Comment("鏈烘瀯Id")]
+ public long SysOrgId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堟満鏋勶級
+ /// </summary>
+ public SysOrg SysOrg { get; set; }
+
+ /// <summary>
+ /// 鑱屼綅Id
+ /// </summary>
+ [Comment("鑱屼綅Id")]
+ public long SysPosId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堣亴浣嶏級
+ /// </summary>
+ public SysPos SysPos { get; set; }
+
+ public void Configure(EntityTypeBuilder<SysEmpExtOrgPos> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasKey(c => new { c.SysEmpId, c.SysOrgId, c.SysPosId });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs
new file mode 100644
index 0000000..09d76c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysEmpPos.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍛樺伐鑱屼綅琛�
+ /// </summary>
+ [Table("sys_emp_pos")]
+ [Comment("鍛樺伐鑱屼綅琛�")]
+ public class SysEmpPos : IEntity
+ {
+ /// <summary>
+ /// 鍛樺伐Id
+ /// </summary>
+ [Comment("鍛樺伐Id")]
+ public long SysEmpId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堝憳宸ワ級
+ /// </summary>
+ public SysEmp SysEmp { get; set; }
+
+ /// <summary>
+ /// 鑱屼綅Id
+ /// </summary>
+ [Comment("鑱屼綅Id")]
+ public long SysPosId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堣亴浣嶏級
+ /// </summary>
+ public SysPos SysPos { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs
new file mode 100644
index 0000000..51c5c6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysExcelTemplate.cs
@@ -0,0 +1,89 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// Excel妯℃澘
+ /// </summary>
+ [Table("sys_excel_template")]
+ [Comment("Excel妯℃澘")]
+ public class SysExcelTemplate : DEntityBase, IEntityTypeBuilder<SysExcelTemplate>
+ {
+ /// <summary>
+ /// 妯℃澘鍚嶇О
+ /// </summary>
+ [Comment("妯℃澘鍚嶇О")]
+ [Required, MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ [Comment("鐗堟湰")]
+ [Required, MaxLength(20)]
+ public string Version { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲簲鐢�
+ /// </summary>
+ [Comment("鎵�灞炲簲鐢�")]
+ [Required, MaxLength(20)]
+ public string AppName { get; set; }
+
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ [Comment("绫诲悕")]
+ [Required, MaxLength(50)]
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 妯℃澘鏂囦欢鍚嶇О
+ /// </summary>
+ [Comment("妯℃澘鏂囦欢鍚嶇О")]
+ [Required, MaxLength(50)]
+ public string TemplateFileName { get; set; }
+
+ /// <summary>
+ /// 鍞竴瀛楁闆�
+ /// </summary>
+ [Comment("鍞竴瀛楁闆�")]
+ [Required, MaxLength(300)]
+ public string UnionUniqueFields { get; set; }
+
+
+ /// <summary>
+ /// 琛ㄥご寮�濮嬭
+ /// </summary>
+ [Comment("琛ㄥご寮�濮嬭")]
+ public int HeadStartLine { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁寮�濮嬭
+ /// </summary>
+ [Comment("鏁版嵁寮�濮嬭")]
+ public int DataStartLine { get; set; }
+
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 閰嶇疆鍞竴閿�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<SysExcelTemplate> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasAlternateKey(x => new { x.ClassName, x.Version, x.AppName });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs
new file mode 100644
index 0000000..dcc46b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysFile.cs
@@ -0,0 +1,69 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏂囦欢淇℃伅琛�
+ /// </summary>
+ [Table("sys_file")]
+ [Comment("鏂囦欢淇℃伅琛�")]
+ public class SysFile : DEntityBase
+ {
+ /// <summary>
+ /// 鏂囦欢瀛樺偍浣嶇疆锛�1:闃块噷浜戯紝2:鑵捐浜戯紝3:minio锛�4:鏈湴锛�
+ /// </summary>
+ [Comment("鏂囦欢瀛樺偍浣嶇疆")]
+ public int FileLocation { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢浠撳簱
+ /// </summary>
+ [Comment("鏂囦欢浠撳簱")]
+ [MaxLength(100)]
+ public string FileBucket { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍚嶇О锛堜笂浼犳椂鍊欑殑鏂囦欢鍚嶏級
+ /// </summary>
+ [Comment("鏂囦欢鍚嶇О")]
+ [MaxLength(100)]
+ public string FileOriginName { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢鍚庣紑
+ /// </summary>
+ [Comment("鏂囦欢鍚庣紑")]
+ [MaxLength(50)]
+ public string FileSuffix { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢澶у皬kb
+ /// </summary>
+ [Comment("鏂囦欢澶у皬kb")]
+ [MaxLength(10)]
+ public string FileSizeKb { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢澶у皬淇℃伅锛岃绠楀悗鐨�
+ /// </summary>
+ [Comment("鏂囦欢澶у皬淇℃伅")]
+ [MaxLength(50)]
+ public string FileSizeInfo { get; set; }
+
+ /// <summary>
+ /// 瀛樺偍鍒癰ucket鐨勫悕绉帮紙鏂囦欢鍞竴鏍囪瘑id锛�
+ /// </summary>
+ [Comment("瀛樺偍鍒癰ucket鐨勫悕绉�")]
+ [MaxLength(100)]
+ public string FileObjectName { get; set; }
+
+ /// <summary>
+ /// 瀛樺偍璺緞
+ /// </summary>
+ [Comment("瀛樺偍璺緞")]
+ [MaxLength(100)]
+ public string FilePath { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs
new file mode 100644
index 0000000..31ca5c7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysForm.cs
@@ -0,0 +1,47 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 琛ㄥ崟琛�
+ /// </summary>
+ [Table("sys_forms")]
+ [Comment("琛ㄥ崟琛�")]
+ public class SysForm : DEntityBase
+ {
+ /// <summary>
+ ///琛ㄥ崟鏍囬 涓嶅彲閲嶅
+ /// </summary>
+ [Required(ErrorMessage = "鏍囬涓嶅彲涓虹┖")]
+ [Comment("鏍囬")]
+ public string Title { get; set; }
+
+ /// <summary>
+ /// form琛ㄥ崟Json
+ /// </summary>
+ [Required(ErrorMessage = "form琛ㄥ崟Json涓嶅彲涓虹┖")]
+ [Comment("form琛ㄥ崟Json")]
+ public string FormJson { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍙戝竷
+ /// </summary>
+ [Comment("鏄惁鍙戝竷")]
+ public bool Publish { get; set; } = false;
+
+ /// <summary>
+ /// 琛ㄥ崟绫诲瀷ID
+ /// </summary>
+ [Required(ErrorMessage = "琛ㄥ崟绫诲瀷ID涓嶅彲涓虹┖")]
+ [Comment("琛ㄥ崟绫诲瀷ID")]
+ public long TypeId { get; set; }
+
+ /// <summary>
+ /// 鐗堟湰
+ /// </summary>
+ [Comment("鐗堟湰")]
+ public int Version { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs
new file mode 100644
index 0000000..c95d597
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogAudit.cs
@@ -0,0 +1,66 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鎿嶄綔/瀹¤鏃ュ織琛�
+ /// </summary>
+ [Table("sys_log_audit")]
+ [Comment("瀹¤鏃ュ織琛�")]
+ public class SysLogAudit : EntityBase
+ {
+ /// <summary>
+ /// 琛ㄥ悕
+ /// </summary>
+ [Comment("琛ㄥ悕")]
+ [MaxLength(50)]
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍒楀悕
+ /// </summary>
+ [Comment("鍒楀悕")]
+ [MaxLength(50)]
+ public string ColumnName { get; set; }
+
+ /// <summary>
+ /// 鏂板��
+ /// </summary>
+ [Comment("鏂板��")]
+ public string NewValue { get; set; }
+
+ /// <summary>
+ /// 鏃у��
+ /// </summary>
+ [Comment("鏃у��")]
+ public string OldValue { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ [Comment("鎿嶄綔鏃堕棿")]
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔浜篒d
+ /// </summary>
+ [Comment("鎿嶄綔浜篒d")]
+ public long UserId { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔浜哄悕绉�
+ /// </summary>
+ [Comment("鎿嶄綔浜哄悕绉�")]
+ [MaxLength(50)]
+ public string UserName { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏂瑰紡锛氭柊澧炪�佹洿鏂般�佸垹闄�
+ /// </summary>
+ [Comment("鎿嶄綔鏂瑰紡")]
+ public DataOpType Operate { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs
new file mode 100644
index 0000000..c035b74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogEx.cs
@@ -0,0 +1,79 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 寮傚父鏃ュ織
+ /// </summary>
+ [Table("sys_log_ex")]
+ [Comment("寮傚父鏃ュ織琛�")]
+ public class SysLogEx : EntityBase
+ {
+ /// <summary>
+ /// 鎿嶄綔浜�
+ /// </summary>
+ [Comment("鎿嶄綔浜�")]
+ [MaxLength(50)]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ [Comment("绫诲悕")]
+ [MaxLength(100)]
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鏂规硶鍚�
+ /// </summary>
+ [Comment("鏂规硶鍚�")]
+ [MaxLength(100)]
+ public string MethodName { get; set; }
+
+ /// <summary>
+ /// 寮傚父鍚嶇О
+ /// </summary>
+ [Comment("寮傚父鍚嶇О")]
+ public string ExceptionName { get; set; }
+
+ /// <summary>
+ /// 寮傚父淇℃伅
+ /// </summary>
+ [Comment("寮傚父淇℃伅")]
+ public string ExceptionMsg { get; set; }
+
+ /// <summary>
+ /// 寮傚父婧�
+ /// </summary>
+ [Comment("寮傚父婧�")]
+ public string ExceptionSource { get; set; }
+
+ /// <summary>
+ /// 鍫嗘爤淇℃伅
+ /// </summary>
+ [Comment("鍫嗘爤淇℃伅")]
+ public string StackTrace { get; set; }
+
+ /// <summary>
+ /// 鍙傛暟瀵硅薄
+ /// </summary>
+ [Comment("鍙傛暟瀵硅薄")]
+ public string ParamsObj { get; set; }
+
+ /// <summary>
+ /// 寮傚父鏃堕棿
+ /// </summary>
+ [Comment("寮傚父鏃堕棿")]
+ public DateTimeOffset? ExceptionTime { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs
new file mode 100644
index 0000000..4d1058f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogOp.cs
@@ -0,0 +1,121 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎿嶄綔鏃ュ織琛�
+ /// </summary>
+ [Table("sys_log_op")]
+ [Comment("鎿嶄綔鏃ュ織琛�")]
+ public class SysLogOp : EntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鏄惁鎵ц鎴愬姛锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ [Comment("鏄惁鎵ц鎴愬姛")]
+ public YesOrNot Success { get; set; }
+
+ /// <summary>
+ /// 鍏蜂綋娑堟伅
+ /// </summary>
+ [Comment("鍏蜂綋娑堟伅")]
+ public string Message { get; set; }
+
+ /// <summary>
+ /// IP
+ /// </summary>
+ [Comment("IP")]
+ [MaxLength(20)]
+ public string Ip { get; set; }
+
+ /// <summary>
+ /// 鍦板潃
+ /// </summary>
+ [Comment("鍦板潃")]
+ [MaxLength(1024)]
+ public string Location { get; set; }
+
+ /// <summary>
+ /// 娴忚鍣�
+ /// </summary>
+ [Comment("娴忚鍣�")]
+ [MaxLength(100)]
+ public string Browser { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绯荤粺
+ /// </summary>
+ [Comment("鎿嶄綔绯荤粺")]
+ [MaxLength(100)]
+ public string Os { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍦板潃
+ /// </summary>
+ [Comment("璇锋眰鍦板潃")]
+ [MaxLength(100)]
+ public string Url { get; set; }
+
+ /// <summary>
+ /// 绫诲悕绉�
+ /// </summary>
+ [Comment("绫诲悕绉�")]
+ [MaxLength(100)]
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 鏂规硶鍚嶇О
+ /// </summary>
+ [Comment("鏂规硶鍚嶇О")]
+ [MaxLength(100)]
+ public string MethodName { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鏂瑰紡锛圙ET POST PUT DELETE)
+ /// </summary>
+ [Comment("璇锋眰鏂瑰紡")]
+ [MaxLength(10)]
+ public string ReqMethod { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍙傛暟
+ /// </summary>
+ [Comment("璇锋眰鍙傛暟")]
+ public string Param { get; set; }
+
+ /// <summary>
+ /// 杩斿洖缁撴灉
+ /// </summary>
+ [Comment("杩斿洖缁撴灉")]
+ public string Result { get; set; }
+
+ /// <summary>
+ /// 鑰楁椂锛堟绉掞級
+ /// </summary>
+ [Comment("鑰楁椂")]
+ public long ElapsedTime { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鏃堕棿
+ /// </summary>
+ [Comment("鎿嶄綔鏃堕棿")]
+ public DateTimeOffset? OpTime { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔浜�
+ /// </summary>
+ [Comment("鎿嶄綔浜�")]
+ [MaxLength(50)]
+ public string Account { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs
new file mode 100644
index 0000000..a67834e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLogVis.cs
@@ -0,0 +1,81 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璁块棶鏃ュ織琛�
+ /// </summary>
+ [Table("sys_log_vis")]
+ [Comment("璁块棶鏃ュ織琛�")]
+ public class SysLogVis : EntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鏄惁鎵ц鎴愬姛锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ [Comment("鏄惁鎵ц鎴愬姛")]
+ public YesOrNot Success { get; set; }
+
+ /// <summary>
+ /// 鍏蜂綋娑堟伅
+ /// </summary>
+ [Comment("鍏蜂綋娑堟伅")]
+ public string Message { get; set; }
+
+ /// <summary>
+ /// IP
+ /// </summary>
+ [Comment("IP")]
+ [MaxLength(20)]
+ public string Ip { get; set; }
+
+ /// <summary>
+ /// 鍦板潃
+ /// </summary>
+ [Comment("鍦板潃")]
+ [MaxLength(1024)]
+ public string Location { get; set; }
+
+ /// <summary>
+ /// 娴忚鍣�
+ /// </summary>
+ [Comment("娴忚鍣�")]
+ [MaxLength(100)]
+ public string Browser { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绯荤粺
+ /// </summary>
+ [Comment("鎿嶄綔绯荤粺")]
+ [MaxLength(100)]
+ public string Os { get; set; }
+
+ /// <summary>
+ /// 璁块棶绫诲瀷
+ /// </summary>
+ [Comment("璁块棶绫诲瀷")]
+ public LoginType VisType { get; set; }
+
+ /// <summary>
+ /// 璁块棶鏃堕棿
+ /// </summary>
+ [Comment("璁块棶鏃堕棿")]
+ public DateTimeOffset? VisTime { get; set; }
+
+ /// <summary>
+ /// 璁块棶浜�
+ /// </summary>
+ [Comment("璁块棶浜�")]
+ [MaxLength(50)]
+ public string Account { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs
new file mode 100644
index 0000000..ae3bca9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCode.cs
@@ -0,0 +1,123 @@
+锘縰sing Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET.Entity
+{
+ /// <summary>
+ /// 浣庝唬鐮佹ā鍧楃鐞�
+ /// </summary>
+ [Table("sys_low_code_module")]
+ [Comment("浣庝唬鐮佹ā鍧楃鐞�")]
+ public class SysLowCode : DEntityBase
+ {
+ /// <summary>
+ /// 浣滆�呭鍚�
+ /// </summary>
+ [Comment("浣滆�呭鍚�")]
+ [MaxLength(20)]
+ public string AuthorName { get; set; }
+
+ /// <summary>
+ /// 鐢熸垚鏂瑰紡
+ /// </summary>
+ [Comment("鐢熸垚鏂瑰紡")]
+ [MaxLength(20)]
+ public string GenerateType { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撳悕
+ /// </summary>
+ [Comment("鏁版嵁搴撳悕")]
+ [MaxLength(100)]
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 鍛藉悕绌洪棿
+ /// </summary>
+ [Comment("鍛藉悕绌洪棿")]
+ [MaxLength(100)]
+ public string NameSpace { get; set; }
+
+ /// <summary>
+ /// 妯″潡鍚嶏紝鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍 銆怑ditby shaocx,2024-04-07銆�
+ /// </summary>
+ [Comment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍")]
+ [MaxLength(100)]
+ public string ModuleName { get; set; }
+
+ /// <summary>
+ /// 绋嬪簭闆�
+ /// </summary>
+ [NotMapped]
+ public string ProName
+ {
+ get { return NameSpace.TrimEnd(new char[] { '.', 'A', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n' }); }
+ }
+
+ /// <summary>
+ /// 鍏宠仈琛ㄤ俊鎭�
+ /// </summary>
+ [NotMapped]
+ public dynamic Tables
+ {
+ get
+ {
+ if (Databases == null || !Databases.Any()) return null;
+ else return Databases.Select(x => new { x.TableName, x.ClassName, x.TableDesc }).Distinct().ToList();
+ }
+ }
+
+ /// <summary>
+ /// 涓氬姟鍚�
+ /// </summary>
+ [Comment("涓氬姟鍚�")]
+ [MaxLength(100)]
+ public string BusName { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Comment("鑿滃崟搴旂敤鍒嗙被")]
+ [MaxLength(50)]
+ public string MenuApplication { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟缂栫爜
+ /// </summary>
+ [Comment("鑿滃崟缂栫爜")]
+ public long MenuPid { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗曠被鍨�
+ /// </summary>
+ [Comment("鍔ㄦ�佽〃鍗曠被鍨�")]
+ [Column(TypeName = "int")]
+ public FormDesignType FormDesignType { get; set; } = FormDesignType.VueFormDesign;
+
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗�
+ /// </summary>
+ [Comment("鍔ㄦ�佽〃鍗�")]
+ [Column(TypeName = "text")]
+ public string FormDesign { get; set; }
+
+ public ICollection<SysLowCodeDataBase> Databases { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆澶氬澶氬叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<SysLowCode> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(p => p.Databases)
+ .WithOne(p => p.SysLowCode)
+ .HasForeignKey(p => p.SysLowCodeId)
+ .HasPrincipalKey(p => p.Id);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs
new file mode 100644
index 0000000..17da9e6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysLowCodeDataBase.cs
@@ -0,0 +1,138 @@
+锘縰sing Admin.NET.Core;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Furion.Extras.Admin.NET.Entity
+{
+ /// <summary>
+ /// 浣庝唬鐮佹ā鍧楁暟鎹簱閰嶇疆
+ /// </summary>
+ [Table("sys_low_code_module_database")]
+ [Comment("浣庝唬鐮佹ā鍧楃鐞�")]
+ public class SysLowCodeDataBase : DEntityBase<Guid, MasterDbContextLocator>
+ {
+ public long SysLowCodeId { get; set; }
+ public SysLowCode SysLowCode { get; set; }
+
+ /// <summary>
+ /// 缁勪欢Key
+ /// </summary>
+ [Comment("缁勪欢Key")]
+ [MaxLength(200)]
+ public string Control_Key { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍚嶇О
+ /// </summary>
+ [Comment("缁勪欢鍚嶇О")]
+ [MaxLength(200)]
+ public string Control_Label { get; set; }
+
+ /// <summary>
+ /// 缁勪欢瀛楁
+ /// </summary>
+ [Comment("缁勪欢瀛楁")]
+ [MaxLength(200)]
+ public string Control_Model { get; set; }
+
+ /// <summary>
+ /// 缁勪欢绫诲瀷
+ /// </summary>
+ [Comment("缁勪欢瀛楁")]
+ [MaxLength(200)]
+ public string Control_Type { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕
+ /// </summary>
+ [Comment("琛ㄥ悕")]
+ [MaxLength(200)]
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 绫诲悕
+ /// </summary>
+ [Comment("绫诲悕")]
+ [MaxLength(200)]
+ public string ClassName { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ弿杩�
+ /// </summary>
+ [Comment("琛ㄦ弿杩�")]
+ [MaxLength(200)]
+ public string TableDesc { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚嶇О
+ /// </summary>
+ [Comment("瀛楁鍚嶇О")]
+ [MaxLength(200)]
+ public string FieldName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷
+ /// </summary>
+ [Comment("鏁版嵁绫诲瀷")]
+ [MaxLength(200)]
+ public string DbTypeName { get; set; }
+
+ /// <summary>
+ /// 浼犲叆鏁版嵁绫诲瀷
+ /// </summary>
+ [Comment("浼犲叆鏁版嵁绫诲瀷")]
+ [MaxLength(200)]
+ public string DtoTypeName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷琛ュ厖鍙傛暟
+ /// </summary>
+ [Comment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟")]
+ [MaxLength(200)]
+ public string DbParam { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~
+ /// </summary>
+ [Comment("鏄惁蹇呭~")]
+ public bool? IsRequired { get; set; }
+
+ /// <summary>
+ /// 鍒楄〃鏄剧ず
+ /// </summary>
+ [Comment("鍒楄〃鏄剧ず")]
+ public bool? WhetherTable { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public bool? WhetherOrderBy { get; set; }
+
+ /// <summary>
+ /// 澧炴敼
+ /// </summary>
+ [Comment("澧炴敼")]
+ public bool? WhetherAddUpdate { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄煡璇�
+ /// </summary>
+ [Comment("鏄惁鏄煡璇�")]
+ public bool? QueryWhether { get; set; }
+
+ /// <summary>
+ /// 鏌ヨ鏂瑰紡
+ /// </summary>
+ [Comment("鏌ヨ鏂瑰紡")]
+ public string QueryType { get; set; }
+
+ /// <summary>
+ /// 鏄惁鑱斿悎涓婚敭
+ /// </summary>
+ [Comment("鏄惁鑱斿悎涓婚敭")]
+ public bool? WhetherUnionKey { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs
new file mode 100644
index 0000000..99af6d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysMenu.cs
@@ -0,0 +1,142 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鑿滃崟琛�
+ /// </summary>
+ [Table("sys_menu")]
+ [Comment("鑿滃崟琛�")]
+ public class SysMenu : DEntityBase
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ [Comment("鐖禝d")]
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ [Comment("鐖禝ds")]
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟绫诲瀷锛堝瓧鍏� 0鐩綍 1鑿滃崟 2鎸夐挳锛�
+ /// </summary>
+ [Comment("鑿滃崟绫诲瀷")]
+ public MenuType Type { get; set; }
+
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ [Comment("鍥炬爣")]
+ [MaxLength(20)]
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 璺敱鍦板潃
+ /// </summary>
+ [Comment("璺敱鍦板潃")]
+ [MaxLength(100)]
+ public string Router { get; set; }
+
+ /// <summary>
+ /// 缁勪欢鍦板潃
+ /// </summary>
+ [Comment("缁勪欢鍦板潃")]
+ [MaxLength(100)]
+ public string Component { get; set; }
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑
+ /// </summary>
+ [Comment("鏉冮檺鏍囪瘑")]
+ [MaxLength(100)]
+ public string Permission { get; set; }
+
+ /// <summary>
+ /// 搴旂敤鍒嗙被锛堝簲鐢ㄧ紪鐮侊級
+ /// </summary>
+ [Comment("搴旂敤鍒嗙被")]
+ [MaxLength(50)]
+ public string Application { get; set; }
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡锛堝瓧鍏� 0鏃� 1缁勪欢 2鍐呴摼 3澶栭摼锛�
+ /// </summary>
+ [Comment("鎵撳紑鏂瑰紡")]
+ public MenuOpenType OpenType { get; set; } = MenuOpenType.NONE;
+
+ /// <summary>
+ /// 鏄惁鍙锛圷-鏄紝N-鍚︼級
+ /// </summary>
+ [Comment("鏄惁鍙")]
+ [MaxLength(5)]
+ public string Visible { get; set; } = "Y";
+
+ /// <summary>
+ /// 鍐呴摼鍦板潃
+ /// </summary>
+ [Comment("鍐呴摼鍦板潃")]
+ [MaxLength(100)]
+ public string Link { get; set; }
+
+ /// <summary>
+ /// 閲嶅畾鍚戝湴鍧�
+ /// </summary>
+ [Comment("閲嶅畾鍚戝湴鍧�")]
+ [MaxLength(100)]
+ public string Redirect { get; set; }
+
+ /// <summary>
+ /// 鏉冮噸锛堝瓧鍏� 1绯荤粺鏉冮噸 2涓氬姟鏉冮噸锛�
+ /// </summary>
+ [Comment("鏉冮噸")]
+ public MenuWeight Weight { get; set; } = MenuWeight.DEFAULT_WEIGHT;
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; } = 100;
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 澶氬澶氾紙瑙掕壊锛�
+ /// </summary>
+ public ICollection<SysRole> SysRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+ /// </summary>
+ public List<SysRoleMenu> SysRoleMenus { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs
new file mode 100644
index 0000000..68b46ff
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNotice.cs
@@ -0,0 +1,78 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫氱煡鍏憡琛�
+ /// </summary>
+ [Table("sys_notice")]
+ [Comment("閫氱煡鍏憡琛�")]
+ public class SysNotice : DEntityBase
+ {
+ /// <summary>
+ /// 鏍囬
+ /// </summary>
+ [Comment("鏍囬")]
+ [Required, MaxLength(20)]
+ public string Title { get; set; }
+
+ /// <summary>
+ /// 鍐呭
+ /// </summary>
+ [Comment("鍐呭")]
+ [Required]
+ public string Content { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷锛堝瓧鍏� 1閫氱煡 2鍏憡锛�
+ /// </summary>
+ [Comment("绫诲瀷")]
+ public int Type { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷浜篒d
+ /// </summary>
+ [Comment("鍙戝竷浜篒d")]
+ public long PublicUserId { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷浜哄鍚�
+ /// </summary>
+ [Comment("鍙戝竷浜哄鍚�")]
+ [MaxLength(20)]
+ public string PublicUserName { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏈烘瀯Id
+ /// </summary>
+ [Comment("鍙戝竷鏈烘瀯Id")]
+ public long PublicOrgId { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏈烘瀯鍚嶇О
+ /// </summary>
+ [Comment("鍙戝竷鏈烘瀯鍚嶇О")]
+ [MaxLength(50)]
+ public string PublicOrgName { get; set; }
+
+ /// <summary>
+ /// 鍙戝竷鏃堕棿
+ /// </summary>
+ [Comment("鍙戝竷鏃堕棿")]
+ public DateTimeOffset? PublicTime { get; set; }
+
+ /// <summary>
+ /// 鎾ゅ洖鏃堕棿
+ /// </summary>
+ [Comment("鎾ゅ洖鏃堕棿")]
+ public DateTimeOffset? CancelTime { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鑽夌 1鍙戝竷 2鎾ゅ洖 3鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public NoticeStatus Status { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs
new file mode 100644
index 0000000..93db4a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysNoticeUser.cs
@@ -0,0 +1,44 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鐢ㄦ埛琛�
+ /// </summary>
+ [Table("sys_notice_user")]
+ [Comment("閫氱煡鍏憡鐢ㄦ埛琛�")]
+ public class SysNoticeUser : IEntity, IEntityTypeBuilder<SysNoticeUser>
+ {
+ /// <summary>
+ /// 閫氱煡鍏憡Id
+ /// </summary>
+ [Comment("閫氱煡鍏憡Id")]
+ public long NoticeId { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ [Comment("鐢ㄦ埛Id")]
+ public long UserId { get; set; }
+
+ /// <summary>
+ /// 闃呰鏃堕棿
+ /// </summary>
+ [Comment("闃呰鏃堕棿")]
+ public DateTimeOffset? ReadTime { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0鏈 1宸茶锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public NoticeUserStatus ReadStatus { get; set; }
+
+ public void Configure(EntityTypeBuilder<SysNoticeUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasKey(c => new { c.NoticeId, c.UserId });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs
new file mode 100644
index 0000000..8b808d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOnlineUser.cs
@@ -0,0 +1,79 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍦ㄧ嚎鐢ㄦ埛琛�
+ /// </summary>
+ [Table("sys_online_user")]
+ [Comment("鍦ㄧ嚎鐢ㄦ埛琛�")]
+ public class OnlineUser //: IEntity, IEntityTypeBuilder<OnlineUser>
+ {
+ /// <summary>
+ /// 杩炴帴Id
+ /// </summary>
+ [Comment("杩炴帴Id")]
+ public string ConnectionId { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ [Comment("鐢ㄦ埛Id")]
+ public long UserId { get; set; }
+
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ [Comment("璐﹀彿")]
+ [Required, MaxLength(20)]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ [Comment("濮撳悕")]
+ [MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庤繛鎺ユ椂闂�
+ /// </summary>
+ [Comment("鏈�杩戞椂闂�")]
+ public DateTimeOffset LastTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰旾P
+ /// </summary>
+ [Comment("鏈�鍚庣櫥褰旾P")]
+ [MaxLength(50)]
+ public string LastLoginIp { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒
+ /// </summary>
+ [Comment("鏈�鍚庣櫥褰曟墍鐢ㄦ祻瑙堝櫒")]
+ [MaxLength(20)]
+ public string LastLoginBrowser { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�
+ /// </summary>
+ [Comment("鏈�鍚庣櫥褰曟墍鐢ㄧ郴缁�")]
+ [MaxLength(20)]
+ public string LastLoginOs { get; set; }
+
+ /// <summary>
+ /// 绉熸埛id
+ /// </summary>
+ //[Comment("绉熸埛id")]
+ //public long TenantId { get; set; }
+
+ public void Configure(EntityTypeBuilder<OnlineUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasKey(c => new { c.UserId });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs
new file mode 100644
index 0000000..cb1999e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysOrg.cs
@@ -0,0 +1,98 @@
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 缁勭粐鏈烘瀯琛�
+ /// </summary>
+ [Table("sys_org")]
+ [Comment("缁勭粐鏈烘瀯琛�")]
+ public class SysOrg : DEntityBase
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ [Comment("鐖禝d")]
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ [Comment("鐖禝ds")]
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鑱旂郴浜�
+ /// </summary>
+ [Comment("鑱旂郴浜�")]
+ [MaxLength(20)]
+ public string Contacts { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ [Comment("鐢佃瘽")]
+ [MaxLength(20)]
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 鏈烘瀯绫诲瀷
+ /// </summary>
+ public string OrgType { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鐢ㄦ埛锛�
+ /// </summary>
+ public ICollection<SysUser> SysUsers { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴锋暟鎹寖鍥达級
+ /// </summary>
+ public List<SysUserDataScope> SysUserDataScopes { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙瑙掕壊锛�
+ /// </summary>
+ public ICollection<SysRole> SysRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堣鑹叉暟鎹寖鍥达級
+ /// </summary>
+ public List<SysRoleDataScope> SysRoleDataScopes { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs
new file mode 100644
index 0000000..b9bd5b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysPos.cs
@@ -0,0 +1,57 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鑱屼綅琛�
+ /// </summary>
+ [Table("sys_pos")]
+ [Comment("鑱屼綅琛�")]
+ public class SysPos : DEntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 澶氬澶氾紙鍛樺伐锛�
+ /// </summary>
+ public ICollection<SysEmp> SysEmps { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堝憳宸ヨ亴浣嶏級
+ /// </summary>
+ public List<SysEmpPos> SysEmpPos { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs
new file mode 100644
index 0000000..61830ca
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRole.cs
@@ -0,0 +1,142 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瑙掕壊琛�
+ /// </summary>
+ [Table("sys_role")]
+ [Comment("瑙掕壊琛�")]
+ public class SysRole : DEntityBase, IEntityTypeBuilder<SysRole>
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁鑼冨洿绫诲瀷锛堝瓧鍏� 1鍏ㄩ儴鏁版嵁 2鏈儴闂ㄥ強浠ヤ笅鏁版嵁 3鏈儴闂ㄦ暟鎹� 4浠呮湰浜烘暟鎹� 5鑷畾涔夋暟鎹級
+ /// </summary>
+ [Comment("鏁版嵁鑼冨洿绫诲瀷")]
+ public DataScopeType DataScopeType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2
+ /// </summary>
+ [Comment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2")]
+ public RoleTypeEnum RoleType { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鐢ㄦ埛锛�
+ /// </summary>
+ public ICollection<SysUser> SysUsers { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+ /// </summary>
+ public List<SysUserRole> SysUserRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鏈烘瀯锛�
+ /// </summary>
+ public ICollection<SysOrg> SysOrgs { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堣鑹�-鏈烘瀯 鏁版嵁鑼冨洿锛�
+ /// </summary>
+ public List<SysRoleDataScope> SysRoleDataScopes { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鑿滃崟锛�
+ /// </summary>
+ public ICollection<SysMenu> SysMenus { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堣鑹�-鑿滃崟锛�
+ /// </summary>
+ public List<SysRoleMenu> SysRoleMenus { get; set; }
+
+
+ /// <summary>
+ /// 澶氬澶氾紙Pda鑿滃崟锛�
+ /// </summary>
+ public ICollection<WmsPdaPower> WmsPdaPowers { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堣鑹�-Pda鑿滃崟锛�
+ /// </summary>
+ public List<WmsRolePdaMenu> WmsRolePdaMenus { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆澶氬澶氬叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<SysRole> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(p => p.SysOrgs)
+ .WithMany(p => p.SysRoles)
+ .UsingEntity<SysRoleDataScope>(
+ u => u.HasOne(c => c.SysOrg).WithMany(c => c.SysRoleDataScopes).HasForeignKey(c => c.SysOrgId),
+ u => u.HasOne(c => c.SysRole).WithMany(c => c.SysRoleDataScopes).HasForeignKey(c => c.SysRoleId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysRoleId, c.SysOrgId });
+ });
+
+ entityBuilder.HasMany(p => p.SysMenus)
+ .WithMany(p => p.SysRoles)
+ .UsingEntity<SysRoleMenu>(
+ u => u.HasOne(c => c.SysMenu).WithMany(c => c.SysRoleMenus).HasForeignKey(c => c.SysMenuId),
+ u => u.HasOne(c => c.SysRole).WithMany(c => c.SysRoleMenus).HasForeignKey(c => c.SysRoleId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysRoleId, c.SysMenuId });
+ });
+
+ entityBuilder.HasMany(p => p.WmsPdaPowers)
+ .WithMany(p => p.SysRoles)
+ .UsingEntity<WmsRolePdaMenu>(
+ u => u.HasOne(c => c.WmsPdaPower).WithMany(c => c.WmsRolePdaMenus).HasForeignKey(c => c.PdaMenuId),
+ u => u.HasOne(c => c.SysRole).WithMany(c => c.WmsRolePdaMenus).HasForeignKey(c => c.SysRoleId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysRoleId, c.PdaMenuId });
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs
new file mode 100644
index 0000000..9a04127
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleDataScope.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瑙掕壊鏁版嵁鑼冨洿琛�
+ /// </summary>
+ [Table("sys_role_data_scope")]
+ [Comment("瑙掕壊鏁版嵁鑼冨洿琛�")]
+ public class SysRoleDataScope : IEntity
+ {
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Comment("瑙掕壊Id")]
+ public long SysRoleId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熻鑹诧級
+ /// </summary>
+ public SysRole SysRole { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Comment("鏈烘瀯Id")]
+ public long SysOrgId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熸満鏋勶級
+ /// </summary>
+ public SysOrg SysOrg { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs
new file mode 100644
index 0000000..8933f65
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysRoleMenu.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瑙掕壊鑿滃崟琛�
+ /// </summary>
+ [Table("sys_role_menu")]
+ [Comment("瑙掕壊鑿滃崟琛�")]
+ public class SysRoleMenu : IEntity
+ {
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Comment("瑙掕壊Id")]
+ public long SysRoleId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+ /// </summary>
+ public SysRole SysRole { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟Id
+ /// </summary>
+ [Comment("鑿滃崟Id")]
+ public long SysMenuId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熻彍鍗曪級
+ /// </summary>
+ public SysMenu SysMenu { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs
new file mode 100644
index 0000000..69f53ce
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysTimer.cs
@@ -0,0 +1,96 @@
+锘縰sing Furion.TaskScheduler;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀹氭椂浠诲姟
+ /// </summary>
+ [Table("sys_timer")]
+ [Comment("瀹氭椂浠诲姟琛�")]
+ public class SysTimer : DEntityBase
+ {
+ /// <summary>
+ /// 浠诲姟鍚嶇О
+ /// </summary>
+ /// <example>dilon</example>
+ [Comment("浠诲姟鍚嶇О")]
+ [Required, MaxLength(20)]
+ public string JobName { get; set; }
+
+ /// <summary>
+ /// 鍙墽琛屼竴娆�
+ /// </summary>
+ [Comment("鍙墽琛屼竴娆�")]
+ public bool DoOnce { get; set; } = false;
+
+ /// <summary>
+ /// 绔嬪嵆鎵ц锛堥粯璁ょ瓑寰呭惎鍔級
+ /// </summary>
+ [Comment("绔嬪嵆鎵ц")]
+ public bool StartNow { get; set; } = false;
+
+ /// <summary>
+ /// 鎵ц绫诲瀷(骞惰銆佸垪闃�)
+ /// </summary>
+ [Comment("鎵ц绫诲瀷")]
+ public SpareTimeExecuteTypes ExecuteType { get; set; } = SpareTimeExecuteTypes.Parallel;
+
+ /// <summary>
+ /// 鎵ц闂撮殧鏃堕棿锛堝崟浣嶇锛�
+ /// </summary>
+ /// <example>5</example>
+ [Comment("闂撮殧鏃堕棿")]
+ public int? Interval { get; set; } = 5;
+
+ /// <summary>
+ /// Cron琛ㄨ揪寮�
+ /// </summary>
+ /// <example></example>
+ [Comment("Cron琛ㄨ揪寮�")]
+ [MaxLength(200)]
+ public string Cron { get; set; }
+
+ /// <summary>
+ /// 瀹氭椂鍣ㄧ被鍨�
+ /// </summary>
+ [Comment("瀹氭椂鍣ㄧ被鍨�")]
+ public SpareTimeTypes TimerType { get; set; } = SpareTimeTypes.Interval;
+
+ /// <summary>
+ /// 璇锋眰url
+ /// </summary>
+ [Comment("璇锋眰url")]
+ [MaxLength(200)]
+ public string RequestUrl { get; set; }
+
+ /// <summary>
+ /// 璇锋眰鍙傛暟锛圥ost锛孭ut璇锋眰鐢級
+ /// </summary>
+ [Comment("璇锋眰鍙傛暟")]
+ public string RequestParameters { get; set; }
+
+ /// <summary>
+ /// Headers(鍙互鍖呭惈濡傦細Authorization鎺堟潈璁よ瘉)
+ /// 鏍煎紡锛歿"Authorization":"userpassword.."}
+ /// </summary>
+ [Comment("Headers")]
+ public string Headers { get; set; }
+
+ /// <summary>
+ /// 璇锋眰绫诲瀷
+ /// </summary>
+ /// <example>2</example>
+ [Comment("璇锋眰绫诲瀷")]
+ public RequestTypeEnum RequestType { get; set; } = RequestTypeEnum.Post;
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs
new file mode 100644
index 0000000..03de49e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUser.cs
@@ -0,0 +1,163 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐢ㄦ埛琛�
+ /// </summary>
+ [Table("sys_user")]
+ [Comment("鐢ㄦ埛琛�")]
+ public class SysUser : DEntityBase, IEntityTypeBuilder<SysUser>
+ {
+ /// <summary>
+ /// 璐﹀彿
+ /// </summary>
+ [Comment("璐﹀彿")]
+ [Required, MaxLength(50)]
+ public string Account { get; set; }
+
+ /// <summary>
+ /// 瀵嗙爜锛堥粯璁D5鍔犲瘑锛�
+ /// </summary>
+ [Comment("瀵嗙爜")]
+ [Required, MaxLength(50)]
+ public string Password { get; set; }
+
+ /// <summary>
+ /// 鏄电О
+ /// </summary>
+ [Comment("鏄电О")]
+ [MaxLength(20)]
+ public string NickName { get; set; }
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ [Comment("濮撳悕")]
+ [MaxLength(20)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 澶村儚
+ /// </summary>
+ [Comment("澶村儚")]
+ public string Avatar { get; set; }
+
+ /// <summary>
+ /// 鐢熸棩
+ /// </summary>
+ [Comment("鐢熸棩")]
+ public DateTimeOffset? Birthday { get; set; }
+
+ /// <summary>
+ /// 鎬у埆-鐢穇1銆佸コ_2
+ /// </summary>
+ [Comment("鎬у埆-鐢穇1銆佸コ_2")]
+ public Gender Sex { get; set; }
+
+ /// <summary>
+ /// 閭
+ /// </summary>
+ [Comment("閭")]
+ [MaxLength(50)]
+ public string Email { get; set; }
+
+ /// <summary>
+ /// 鎵嬫満
+ /// </summary>
+ [Comment("鎵嬫満")]
+ [MaxLength(20)]
+ public string Phone { get; set; }
+
+ /// <summary>
+ /// 鐢佃瘽
+ /// </summary>
+ [Comment("鐢佃瘽")]
+ [MaxLength(20)]
+ public string Tel { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰旾P
+ /// </summary>
+ [Comment("鏈�鍚庣櫥褰旾P")]
+ [MaxLength(20)]
+ public string LastLoginIp { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庣櫥褰曟椂闂�
+ /// </summary>
+ [Comment("鏈�鍚庣櫥褰曟椂闂�")]
+ public DateTimeOffset? LastLoginTime { get; set; }
+
+ /// <summary>
+ /// 绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3
+ /// </summary>
+ [Comment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3")]
+ public AdminType AdminType { get; set; }
+
+ /// <summary>
+ /// 鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2
+ /// </summary>
+ [Comment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+
+ /// <summary>
+ /// 澶氬澶氾紙瑙掕壊锛�
+ /// </summary>
+ public ICollection<SysRole> SysRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴�-瑙掕壊锛�
+ /// </summary>
+ public List<SysUserRole> SysUserRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙鏈烘瀯锛�
+ /// </summary>
+ public ICollection<SysOrg> SysOrgs { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴�-鏈烘瀯 鏁版嵁鑼冨洿锛�
+ /// </summary>
+ public List<SysUserDataScope> SysUserDataScopes { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆澶氬澶氬叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<SysUser> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(p => p.SysRoles).WithMany(p => p.SysUsers).UsingEntity<SysUserRole>(
+ u => u.HasOne(c => c.SysRole).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysRoleId),
+ u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserRoles).HasForeignKey(c => c.SysUserId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysUserId, c.SysRoleId });
+ });
+
+ entityBuilder.HasMany(p => p.SysOrgs).WithMany(p => p.SysUsers).UsingEntity<SysUserDataScope>(
+ u => u.HasOne(c => c.SysOrg).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysOrgId),
+ u => u.HasOne(c => c.SysUser).WithMany(c => c.SysUserDataScopes).HasForeignKey(c => c.SysUserId),
+ u =>
+ {
+ u.HasKey(c => new { c.SysUserId, c.SysOrgId });
+ });
+ }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂翠骇绾�
+ /// </summary>
+ public long ProductionlineId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs
new file mode 100644
index 0000000..10ecb6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserDataScope.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐢ㄦ埛鏁版嵁鑼冨洿琛�
+ /// </summary>
+ [Table("sys_user_data_scope")]
+ [Comment("鐢ㄦ埛鏁版嵁鑼冨洿琛�")]
+ public class SysUserDataScope : IEntity
+ {
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ [Comment("鐢ㄦ埛Id")]
+ public long SysUserId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+ /// </summary>
+ public SysUser SysUser { get; set; }
+
+ /// <summary>
+ /// 鏈烘瀯Id
+ /// </summary>
+ [Comment("鏈烘瀯Id")]
+ public long SysOrgId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熸満鏋勶級
+ /// </summary>
+ public SysOrg SysOrg { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs
new file mode 100644
index 0000000..08aead9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/SysUserRole.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐢ㄦ埛瑙掕壊琛�
+ /// </summary>
+ [Table("sys_user_role")]
+ [Comment("鐢ㄦ埛瑙掕壊琛�")]
+ public class SysUserRole : IEntity
+ {
+ /// <summary>
+ /// 鐢ㄦ埛Id
+ /// </summary>
+ [Comment("鐢ㄦ埛Id")]
+ public long SysUserId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+ /// </summary>
+ public SysUser SysUser { get; set; }
+
+ /// <summary>
+ /// 绯荤粺瑙掕壊Id
+ /// </summary>
+ [Comment("瑙掕壊Id")]
+ public long SysRoleId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熻鑹诧級
+ /// </summary>
+ public SysRole SysRole { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs
new file mode 100644
index 0000000..7be8a02
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableColumn.cs
@@ -0,0 +1,51 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍒�
+ /// </summary>
+ public class TableColumn
+ {
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ public string ColumnName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撲腑绫诲瀷
+ /// </summary>
+ public string DataType { get; set; }
+
+ /// <summary>
+ /// .NET瀛楁绫诲瀷
+ /// </summary>
+ public string NetType { get; set; }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ public string ColumnComment { get; set; }
+
+ /// <summary>
+ /// 涓诲閿�
+ /// </summary>
+ public string ColumnKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁蹇呭~
+ /// </summary>
+ public bool IsRequired { get; set; }
+
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ public string Remark { get; set; }
+
+
+ /// <summary>
+ /// 瀛楁绫诲瀷
+ /// </summary>
+ public string FieldType { get; set; }
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs
new file mode 100644
index 0000000..1c0c44c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/System/TableInfo.cs
@@ -0,0 +1,38 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏁版嵁搴撹〃鍙傛暟
+ /// </summary>
+ public class TableInfo
+ {
+ /// <summary>
+ /// 搴撳悕锛堝瓧姣嶅舰寮忕殑锛�
+ /// </summary>
+ public string DatabaseName { get; set; }
+
+ /// <summary>
+ /// 搴撳悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ /// </summary>
+ public string DatabaseComment { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕锛堝瓧姣嶅舰寮忕殑锛�
+ /// </summary>
+ public string TableName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public string CreateTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// </summary>
+ public string UpdateTime { get; set; }
+
+ /// <summary>
+ /// 琛ㄥ悕绉版弿杩帮紙娉ㄩ噴锛夛紙鍔熻兘鍚嶏級
+ /// </summary>
+ public string TableComment { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs
new file mode 100644
index 0000000..f959673
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent.cs
@@ -0,0 +1,55 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�
+ /// </summary>
+ [Comment("瀛︾敓淇℃伅琛�")]
+ [Table("test_students")]
+ public class TestStudent : DEntityBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ [Comment("瀛︾敓濮撳悕")]
+ [MaxLength(10)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ [Comment("瀛︾敓骞撮緞")]
+ public int Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ [Comment("鏄惁鍦ㄦ牎")]
+ [MaxLength(50)]
+ public bool StartName { get; set; }
+
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ [Comment("鎬у埆")]
+ public GenderChinese Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ [Comment("鍑虹敓鏃ユ湡")]
+ public DateTime BrithDate { get; set; }
+
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// </summary>
+ [Comment("鍏宠仈鑰佸笀")]
+ public long? TeacherId { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs
new file mode 100644
index 0000000..f680a93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent2.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�
+ /// </summary>
+ [Comment("瀛︾敓淇℃伅琛�")]
+ [Table("test_students2")]
+ public class TestStudent2 : DEntityBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ [Comment("瀛︾敓濮撳悕")]
+ [MaxLength(10)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ [Comment("瀛︾敓骞撮緞")]
+ public int Age { get; set; }
+
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ [Comment("闆惰姳閽�")]
+ [Column("HasMoney", TypeName = "decimal(10,3)")]
+ public decimal HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ [Comment("鏄惁鍦ㄦ牎")]
+ [MaxLength(50)]
+ public bool StartName { get; set; }
+
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ [Comment("鎬у埆")]
+ public GenderChinese Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ [Comment("鍑虹敓鏃ユ湡")]
+ public DateTime BrithDate { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs
new file mode 100644
index 0000000..2b0292b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent3.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛︾敓淇℃伅琛�
+ /// </summary>
+ [Comment("瀛︾敓淇℃伅琛�")]
+ [Table("test_students3")]
+ public class TestStudent3 : DEntityBase
+ {
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// </summary>
+ [Comment("瀛︾敓濮撳悕")]
+ [MaxLength(10)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// </summary>
+ [Comment("瀛︾敓骞撮緞")]
+ public int Age { get; set; }
+
+
+ /// <summary>
+ /// 闆惰姳閽�
+ /// </summary>
+ [Comment("闆惰姳閽�")]
+ [Column("HasMoney", TypeName = "decimal(10,3)")]
+ public decimal HasMoney { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// </summary>
+ [Comment("鏄惁鍦ㄦ牎")]
+ [MaxLength(50)]
+ public bool StartName { get; set; }
+
+
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ [Comment("鎬у埆")]
+ public GenderChinese Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// </summary>
+ [Comment("鍑虹敓鏃ユ湡")]
+ public DateTime BrithDate { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs
new file mode 100644
index 0000000..c0af6f2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestStudent5.cs
@@ -0,0 +1,36 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : shaocx
+ * @date : 2024/4/19涓嬪崍3:13:43
+ * @desc : 娴嬭瘯瀛︾敓琛�
+ */
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 娴嬭瘯瀛︾敓琛�
+ /// </summary>
+ [Table("test_student5")]
+ [Comment("娴嬭瘯瀛︾敓琛�")]
+ public class TestStudent5 : DEntityBase
+ {
+
+ /// <summary>
+ /// 濮撳悕
+ /// </summary>
+ [Comment("濮撳悕")]
+ [MaxLength(50)]
+ public string Name { get; set; }
+
+
+ /// <summary>
+ /// 骞撮緞
+ /// </summary>
+ [Comment("骞撮緞")]
+
+ public int? Age { get; set; }
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs
new file mode 100644
index 0000000..c4aa2f9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/TestDemo/TestTeacher.cs
@@ -0,0 +1,38 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : 鎮ㄧ殑鍚嶅瓧
+ * @date : 2024/4/15涓嬪崍4:23:55
+ * @desc : 娴嬭瘯鑰佸笀琛�
+ */
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 娴嬭瘯鑰佸笀琛�
+ /// </summary>
+ [Table("test_teacher")]
+ [Comment("娴嬭瘯鑰佸笀琛�")]
+ public class TestTeacher : DEntityBase
+ {
+
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required]
+ [MaxLength(255)]
+ public string Name { get; set; }
+
+
+
+
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs
new file mode 100644
index 0000000..004a186
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/View_Materialstock_Material/View_Materialstock_Material.cs
@@ -0,0 +1,51 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ [Comment("搴撳瓨鐗╂枡瑙嗗浘")]
+ [Table("View_Materialstock_Material")]
+ public class View_Materialstock_Material
+ {
+
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ [Comment("鐗╂枡鎵规")]
+ [MaxLength(50)]
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鐗╂枡绫诲埆")]
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 瀹炵墿搴撳瓨鏁�
+ /// </summary>
+ [Comment("瀹炵墿搴撳瓨鏁�")]
+ [Required]
+ public decimal StockNumber { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs
new file mode 100644
index 0000000..9071135
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsArea.cs
@@ -0,0 +1,83 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳尯琛�
+ /// </summary>
+ [Table("wms_area")]
+ [Comment("搴撳尯琛�")]
+ public class WmsArea : DEntityBase, IEntityTypeBuilder<WmsArea>
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ [Comment("鎻忚堪")]
+ [MaxLength(250)]
+ public string AreaDesc { get; set; }
+
+ /// <summary>
+ /// 鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鐘舵��")]
+ [Required]
+ public CommonStatus AreaStatus { get; set; }
+
+ /// <summary>
+ /// 鍒嗙被;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鍒嗙被")]
+ [Required]
+ public AreaType AreaType { get; set; }
+
+ /// <summary>
+ /// 鏄惁涓洪挗骞冲彴
+ /// </summary>
+ [Comment("鏄惁涓洪挗骞冲彴")]
+ public bool IsSteel { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 搴撲綅琛�
+ /// </summary>
+ public ICollection<WmsPlace> WmsPlaces { get; set; }
+
+ /// <summary>
+ /// 搴撳彛琛�
+ /// </summary>
+ public ICollection<LesEntrance> LesEntrance { get; set; }
+
+ /// <summary>
+ /// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsArea> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(x => x.WmsPlaces)
+ .WithOne(x => x.WmsArea)
+ .HasForeignKey(x => x.AreaId).IsRequired(true);
+ entityBuilder.HasMany(x => x.LesEntrance)
+ .WithOne(x => x.WmsArea)
+ .HasForeignKey(x => x.AreaId).IsRequired(true);
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs
new file mode 100644
index 0000000..fb9735a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsContainer.cs
@@ -0,0 +1,150 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵樼洏淇℃伅琛�
+ /// </summary>
+ [Table("wms_container")]
+ [Comment("鎵樼洏淇℃伅琛�")]
+ public class WmsContainer : DEntityBase //, IEntityTypeBuilder<WmsContainer>
+ {
+ /// <summary>
+ /// 缂栧彿
+ /// </summary>
+ [Comment("缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("绫诲瀷")]
+ [Required]
+ public ContainerType ContainerType { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鎵樼洏鐘舵��")]
+ [Required]
+ public ContainerStatus ContainerStatus { get; set; }
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ [Comment("闀垮害")]
+ public decimal SpecLength { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ [Comment("瀹藉害")]
+ public decimal SpecWidth { get; set; }
+
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ [Comment("楂樺害")]
+ public decimal SpecHeight { get; set; }
+
+ /// <summary>
+ /// 闄愰暱
+ /// </summary>
+ [Comment("闄愰暱")]
+ public decimal LimitLength { get; set; }
+
+ /// <summary>
+ /// 闄愬
+ /// </summary>
+ [Comment("闄愬")]
+ public decimal LimitWidth { get; set; }
+
+ /// <summary>
+ /// 闄愰珮
+ /// </summary>
+ [Comment("闄愰珮")]
+ public decimal LimitHeight { get; set; }
+
+ /// <summary>
+ /// 杞介噸涓婇檺
+ /// </summary>
+ [Comment("杞介噸涓婇檺")]
+ public decimal MaxWeight { get; set; }
+
+ /// <summary>
+ /// 鐖舵墭鐩業d
+ /// </summary>
+ [Comment("鐖舵墭鐩業d")]
+ public long ParentContainerId { get; set; }
+
+ /// <summary>
+ /// 璧勪骇缂栧彿
+ /// </summary>
+ [Comment("璧勪骇缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string AssetNo { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ [Comment("鎵樼洏鍒嗙被")]
+ [Required]
+ public ContainerCategory ContainerCategory { get; set; } = ContainerCategory.TY;
+
+ /// <summary>
+ /// Erp鍗曞彿
+ /// </summary>
+ [Comment("Erp鍗曞彿")]
+ [Required]
+ [MaxLength(50)]
+ public string ErpNo { get; set; }
+
+ /// <summary>
+ /// 鏄惁铏氭嫙;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鏄惁铏氭嫙")]
+ [Required]
+ public YesOrNot IsVirtually { get; set; } = YesOrNot.N;
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ [Required]
+ public LesWorkShopType WorkShopType { get; set; }
+
+ ///// <summary>
+ ///// 缁勮杞﹂棿鐗╂枡鎵樼洏鍏崇郴琛�
+ ///// </summary>
+ //public ICollection<WmsAssembleMaterialContainer> WmsAssembleMaterialContainer { get; set; }
+
+ ///// <summary>
+ ///// 鐗╂枡鎵樼洏鍘嗗彶琛�
+ ///// </summary>
+ //public ICollection<WmsAssembleHistoryMaterialContainer> WmsAssembleHistoryMaterialContainer { get; set; }
+
+ ///// <summary>
+ ///// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+ ///// </summary>
+ ///// <param name="entityBuilder"></param>
+ ///// <param name="dbContext"></param>
+ ///// <param name="dbContextLocator"></param>
+ //public void Configure(EntityTypeBuilder<WmsContainer> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ //{
+ // entityBuilder.HasMany(x => x.WmsAssembleMaterialContainer)
+ // .WithOne(x => x.WmsContainer)
+ // .HasForeignKey(x => x.ContainerId);
+
+ // entityBuilder.HasMany(x => x.WmsAssembleHistoryMaterialContainer)
+ // .WithOne(x => x.WmsContainer)
+ // .HasForeignKey(x => x.Id).IsRequired(false);
+ //}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
new file mode 100644
index 0000000..6cc53d6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMaterial.cs
@@ -0,0 +1,174 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐗╂枡淇℃伅琛�
+ /// </summary>
+ [Table("wms_material")]
+ [Comment("鐗╂枡淇℃伅琛�")]
+ public class WmsMaterial : DEntityBase, IEntityTypeBuilder<WmsMaterial>
+ {
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ [Comment("鐗╂枡鎵规")]
+ [MaxLength(50)]
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鐗╂枡绫诲埆")]
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡妫�楠�
+ /// </summary>
+ [Comment("鐗╂枡妫�楠�")]
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ [Comment("鐗╂枡瑙勬牸")]
+ [MaxLength(50)]
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ [Comment("鐗╂枡瀵嗗害")]
+ [MaxLength(50)]
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍗曚綅
+ /// </summary>
+ [Comment("鐗╂枡鍗曚綅")]
+ [MaxLength(50)]
+ public string MaterialUnit { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Ids
+ /// </summary>
+ [Comment("搴撳尯Ids")]
+ public string AreaIds { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍙傛暟
+ /// </summary>
+ [Comment("搴撳尯鍙傛暟")]
+ public string AreaNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖篒ds
+ /// </summary>
+ [Comment("宸ヤ綔鍖篒ds")]
+ public string StationIds { get; set; }
+
+ /// <summary>
+ /// 宸ヤ綔鍖哄弬鏁�
+ /// </summary>
+ [Comment("宸ヤ綔鍖哄弬鏁�")]
+ public string StationNameParameter { get; set; }
+
+ /// <summary>
+ /// 宸ユ
+ /// </summary>
+ //[Comment("宸ユ")]
+ //[Required]
+ //public LesWorkshopSection LesWorkshopSection { get; set; }
+
+ //1215
+
+ /// <summary>
+ /// 鎻忚堪
+ /// </summary>
+ [Comment("鎻忚堪")]
+
+ [MaxLength(500)]
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 瀹夊叏瀛橀噺
+ /// </summary>
+ [Comment("瀹夊叏瀛橀噺")]
+
+ public decimal Safeqty { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у瓨閲�
+ /// </summary>
+ [Comment("鏈�澶у瓨閲�")]
+
+ public decimal MaxImumqty { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓簱榫�
+ /// </summary>
+ [Comment("鏈�灏忓簱榫�")]
+
+ public decimal MinstorageAge { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у簱榫�
+ /// </summary>
+ [Comment("鏈�澶у簱榫�")]
+
+ public decimal MaxstorageAge { get; set; }
+
+
+
+
+
+
+ /// <summary>
+ /// 鐗╂枡鎵樼洏鍏崇郴琛�
+ /// </summary>
+ public ICollection<WmsMaterialContainer> WmsFoamingMaterialContainer { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵樼洏鍘嗗彶琛�
+ /// </summary>
+ public ICollection<WmsHistoryMaterialContainer> WmsFoamingHistoryMaterialContainer { get; set; }
+
+ /// <summary>
+ /// 鏋勫缓涓�瀵瑰鐨勫叧绯�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void Configure(EntityTypeBuilder<WmsMaterial> entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ entityBuilder.HasMany(x => x.WmsFoamingMaterialContainer)
+ .WithOne(x => x.WmsMaterial)
+ .HasForeignKey(x => x.MaterialId).IsRequired(false);
+
+ entityBuilder.HasMany(x => x.WmsFoamingHistoryMaterialContainer)
+ .WithOne(x => x.WmsMaterial)
+ .HasForeignKey(x => x.MaterialId).IsRequired(false);
+ }
+ }
+}
+
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs
new file mode 100644
index 0000000..89cbefa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsMerchantinfo.cs
@@ -0,0 +1,103 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : http://www.chiner.com.cn
+ * @date : 2023-8-17
+ * @desc : 瀹㈠晢淇℃伅琛�
+ */
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀹㈠晢淇℃伅琛�
+ /// </summary>
+ [Table("wms_merchantinfo")]
+ [Comment("瀹㈠晢淇℃伅琛�")]
+ public class WmsMerchantinfo : DEntityBase
+ {
+ /// <summary>
+ /// 瀹㈠晢缂栧彿
+ /// </summary>
+ [Comment("瀹㈠晢缂栧彿")]
+ [MaxLength(50)]
+ public string MerchantNo { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍚嶇О
+ /// </summary>
+ [Comment("瀹㈠晢鍚嶇О")]
+ [MaxLength(50)]
+ public string MerchantName { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍒嗙被
+ /// </summary>
+ [Comment("瀹㈠晢鍒嗙被")]
+ public MerchantType MerchantType { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绠�绉�
+ /// </summary>
+ [Comment("瀹㈠晢绠�绉�")]
+ [MaxLength(50)]
+ public string MerchantShort { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢绛夌骇
+ /// </summary>
+ [Comment("瀹㈠晢绛夌骇")]
+ public MerchantGrade MerchantGrade { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢灞炴��
+ /// </summary>
+ [Comment("瀹㈠晢灞炴��")]
+ [MaxLength(50)]
+ public string MerchantAttribute { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢琛屼笟
+ /// </summary>
+ [Comment("瀹㈠晢琛屼笟")]
+ [MaxLength(50)]
+ public string MerchantTmt { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鑱旂郴浜�
+ /// </summary>
+ [Comment("瀹㈠晢鑱旂郴浜�")]
+ [MaxLength(50)]
+ public string MerchantContact { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鐢佃瘽
+ /// </summary>
+ [Comment("瀹㈠晢鐢佃瘽")]
+ [MaxLength(50)]
+ public string MerchantPhone { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢浼犵湡
+ /// </summary>
+ [Comment("瀹㈠晢浼犵湡")]
+ [MaxLength(50)]
+ public string MerchantFax { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢閭
+ /// </summary>
+ [Comment("瀹㈠晢閭")]
+ [MaxLength(50)]
+ public string MerchantEmail { get; set; }
+
+ /// <summary>
+ /// 瀹㈠晢鍦板潃
+ /// </summary>
+ [Comment("瀹㈠晢鍦板潃")]
+ [MaxLength(50)]
+ public string MerchantAddress { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs
new file mode 100644
index 0000000..9b7ee35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsOrderType.cs
@@ -0,0 +1,65 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁绫诲瀷缁存姢琛�
+ /// </summary>
+ [Table("wms_order_type")]
+ [Comment("鍗曟嵁绫诲瀷缁存姢琛�")]
+ public class WmsOrderType : DEntityBase
+ {
+ /// <summary>
+ /// 鐖禝d
+ /// </summary>
+ [Comment("鐖禝d")]
+ public long Pid { get; set; }
+
+ /// <summary>
+ /// 鐖禝ds
+ /// </summary>
+ [Comment("鐖禝ds")]
+ public string Pids { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭
+ /// </summary>
+ [Comment("鎺掑簭")]
+ public int Sort { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs
new file mode 100644
index 0000000..6d056c2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPdaPower.cs
@@ -0,0 +1,63 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Admin.NET.Core.Entity.WmsBase;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// PDA鑿滃崟琛�
+ /// </summary>
+ [Table("wms_pdapower")]
+ [Comment("PDA鑿滃崟琛�")]
+ public class WmsPdaPower : DEntityBase
+ {
+ /// <summary>
+ /// 鍥炬爣
+ /// </summary>
+ [Comment("鍥炬爣")]
+ [Required]
+ [MaxLength(50)]
+ public string Icon { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 棰滆壊
+ /// </summary>
+ [Comment("棰滆壊")]
+ [Required]
+ public string Clolor { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType WorkShopType { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氾紙瑙掕壊锛�
+ /// </summary>
+ public ICollection<SysRole> SysRoles { get; set; }
+
+ /// <summary>
+ /// 澶氬澶氫腑闂磋〃锛堢敤鎴疯鑹诧級
+ /// </summary>
+ public List<WmsRolePdaMenu> WmsRolePdaMenus { get; set; }
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs
new file mode 100644
index 0000000..0429a33
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsPlace.cs
@@ -0,0 +1,173 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撲綅琛�
+ /// </summary>
+ [Table("wms_place")]
+ [Comment("搴撲綅琛�")]
+ public class WmsPlace : DEntityBase
+ {
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀵瑰簲AGV缂栫爜
+ /// </summary>
+ [Comment("搴撲綅瀵瑰簲AGV缂栫爜")]
+ [MaxLength(50)]
+ public string AgvCode { get; set; }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("搴撲綅鐘舵��")]
+ [Required]
+ public PlaceStatus PlaceStatus { get; set; }
+
+ /// <summary>
+ /// 鎵�鍦ㄥ簱鍖�
+ /// </summary>
+ [Comment("鎵�鍦ㄥ簱鍖�")]
+ [Required]
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 鎺�
+ /// </summary>
+ [Comment("鎺�")]
+ [Required]
+ public int RowNo { get; set; }
+
+ /// <summary>
+ /// 鍒�
+ /// </summary>
+ [Comment("鍒�")]
+ [Required]
+ public int ColumnNo { get; set; }
+
+ /// <summary>
+ /// 灞�
+ /// </summary>
+ [Comment("灞�")]
+ [Required]
+ public int LayerNo { get; set; }
+
+ /// <summary>
+ /// 杩涙繁鍙�
+ /// </summary>
+ [Comment("杩涙繁鍙�")]
+ [Required]
+ public int DeepcellNo { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ [Comment("宸烽亾")]
+ [Required]
+ public int Aisle { get; set; }
+
+ /// <summary>
+ /// 绾垮彿
+ /// </summary>
+ [Comment("绾垮彿")]
+ [Required]
+ public int Line { get; set; }
+
+ /// <summary>
+ /// 鏄惁閿佸畾;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鏄惁閿佸畾")]
+ [Required]
+ public YesOrNot Islock { get; set; }
+
+ /// <summary>
+ /// 鏄惁绌烘墭;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鏄惁绌烘墭")]
+ public YesOrNot EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆
+ /// </summary>
+ [Comment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆")]
+ [MaxLength(50)]
+ public string PositionnoForSrm { get; set; }
+
+ /// <summary>
+ /// 搴撲綅X鍧愭爣
+ /// </summary>
+ [Comment("搴撲綅X鍧愭爣")]
+ [MaxLength(50)]
+ public string Xzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Y鍧愭爣
+ /// </summary>
+ [Comment("搴撲綅Y鍧愭爣")]
+ [MaxLength(50)]
+ public string Yzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅Z鍧愭爣
+ /// </summary>
+ [Comment("搴撲綅Z鍧愭爣")]
+ [MaxLength(50)]
+ public string Zzb { get; set; }
+
+ /// <summary>
+ /// 搴撲綅闀垮害
+ /// </summary>
+ [Comment("搴撲綅闀垮害")]
+ public decimal Length { get; set; }
+
+ /// <summary>
+ /// 搴撲綅瀹藉害
+ /// </summary>
+ [Comment("搴撲綅瀹藉害")]
+ public decimal Width { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害
+ /// </summary>
+ [Comment("搴撲綅楂樺害")]
+ public decimal Height { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ф壙閲�
+ /// </summary>
+ [Comment("鏈�澶ф壙閲�")]
+ public decimal MaxWeight { get; set; }
+
+ /// <summary>
+ /// 搴撲綅楂樺害灞炴��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("搴撲綅楂樺害灞炴��")]
+ public Heightlevel HeightLevel { get; set; }
+
+ /// <summary>
+ /// 浼樺厛绾�
+ /// </summary>
+ [Comment("浼樺厛绾�")]
+ public int Priority { get; set; }
+
+ /// <summary>
+ /// 閫昏緫鍖哄煙
+ /// </summary>
+ [Comment("閫昏緫鍖哄煙")]
+ public int LogicalName { get; set; }
+
+ /// <summary>
+ /// 搴撳尯琛�
+ /// </summary>
+ public WmsArea WmsArea { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs
new file mode 100644
index 0000000..228ac54
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsRolePdaMenu.cs
@@ -0,0 +1,36 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core.Entity.WmsBase
+{
+ /// <summary>
+ /// 瑙掕壊鑿滃崟琛�
+ /// </summary>
+ [Table("wms_role_pdamenu")]
+ [Comment("瑙掕壊鑿滃崟琛�")]
+ public class WmsRolePdaMenu : IEntity
+ {
+ /// <summary>
+ /// 瑙掕壊Id
+ /// </summary>
+ [Comment("瑙掕壊Id")]
+ public long SysRoleId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熺敤鎴凤級
+ /// </summary>
+ public SysRole SysRole { get; set; }
+
+ /// <summary>
+ /// 鑿滃崟Id
+ /// </summary>
+ [Comment("鑿滃崟Id")]
+ public long PdaMenuId { get; set; }
+
+ /// <summary>
+ /// 涓�瀵逛竴寮曠敤锛堢郴缁熻彍鍗曪級
+ /// </summary>
+ public WmsPdaPower WmsPdaPower { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs
new file mode 100644
index 0000000..587fe09
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseEntrance.cs
@@ -0,0 +1,60 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳彛琛�
+ /// </summary>
+ [Table("wms_warehouse_entrance")]
+ [Comment("搴撳彛琛�")]
+ public class WmsWarehouseEntrance : DEntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷-1.鍏ュ簱_2.鍑哄簱
+ /// </summary>
+ [Comment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�")]
+ [Required]
+ public WarehouseEntranceEnum Type { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炶溅闂�
+ /// </summary>
+ [Comment("鎵�灞炶溅闂�")]
+ public LesWorkShopType LesWorkShopType { get; set; }
+
+ /// <summary>
+ /// 鎵�灞炲贩閬�
+ /// </summary>
+ [Comment("鎵�灞炲贩閬�")]
+ public int AffiliatedRoadway { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [Comment("澶囨敞")]
+ [MaxLength(100)]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊紙瀛楀吀 0姝e父 1鍋滅敤 2鍒犻櫎锛�
+ /// </summary>
+ [Comment("鐘舵��")]
+ public CommonStatus Status { get; set; } = CommonStatus.ENABLE;
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs
new file mode 100644
index 0000000..1217a11
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsBase/WmsWarehouseManage.cs
@@ -0,0 +1,41 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core.Entity.WmsBase
+{
+ /// <summary>
+ /// 浠撳簱绠$悊
+ /// </summary>
+ [Table("wms_warehouse_manage")]
+ [Comment("搴撳彛琛�")]
+ public class WmsWarehouseManage: DEntityBase
+ {
+ /// <summary>
+ /// 鍚嶇О
+ /// </summary>
+ [Comment("鍚嶇О")]
+ [Required, MaxLength(100)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 缂栫爜
+ /// </summary>
+ [Comment("缂栫爜")]
+ [Required, MaxLength(50)]
+ public string Code { get; set; }
+
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ [Comment("绫诲瀷")]
+ public int Type { get; set; }
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs
new file mode 100644
index 0000000..79c3337
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/VAccessDetails.cs
@@ -0,0 +1,104 @@
+锘縰sing Furion.DatabaseAccessor;
+
+namespace Admin.NET.Core.Entity
+{
+ /// <summary>
+ /// 鍑哄叆搴撴槑缁嗚瘯鍥�
+ /// </summary>
+ public class VAccessDetails : EntityNotKey
+ {
+ /// <summary>
+ /// 閰嶇疆瑙嗗浘鍚�
+ /// </summary>
+ public VAccessDetails() : base("View_AccessDetails") { }
+
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡
+ /// </summary>
+ public TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ public int TaskLevel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鐘舵�� 瀛楀吀 鏈墽琛岋紝鎵ц涓紝瀹屾垚
+ /// </summary>
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮
+ /// </summary>
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ public string Batch { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 淇敼鏃堕棿
+ /// </summary>
+ public virtual DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 浠诲姟寮�濮嬫椂闂�
+ /// </summary>
+ public DateTimeOffset? TaskCreatedTime { get; set; }
+
+ /// <summary>
+ /// 浠诲姟缁撴潫鏃堕棿
+ /// </summary>
+ public DateTimeOffset? TaskUpdatedTime { get; set; }
+
+ public int Long { get; set; }
+ public int Wide { get; set; }
+ public int High { get; set; }
+
+ /// <summary>
+ /// Id涓婚敭
+ /// </summary>
+ public long? Id { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs
new file mode 100644
index 0000000..ce0c36f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsCount/WmsMaterialStock.cs
@@ -0,0 +1,167 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳瓨琛�
+ /// </summary>
+ [Table("wms_materialstock")]
+ [Comment("搴撳瓨琛�")]
+ public class WmsMaterialStock : DEntityBase
+ {
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鐗╂枡绫诲埆")]
+ [Required]
+ public MaterialType MaterialType { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ [Comment("鐗╂枡鎵规")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ [Comment("鐗╂枡瑙勬牸")]
+ [MaxLength(50)]
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 闀�
+ /// </summary>
+ [Comment("闀�")]
+ public int Long { get; set; }
+
+ /// <summary>
+ /// 瀹�
+ /// </summary>
+ [Comment("瀹�")]
+ public int Wide { get; set; }
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ [Comment("楂�")]
+ public int High { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ [Comment("鐗╂枡瀵嗗害")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 妫�楠屾柟寮�;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("妫�楠屾柟寮�")]
+ public MaterialInspection InspectionMethod { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鍗曚綅绫诲埆")]
+ public UnitType UnitType { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鍗曚綅缂栧彿")]
+ public UnitNoType UnitNo { get; set; }
+
+ /// <summary>
+ /// 瀹炵墿搴撳瓨鏁�
+ /// </summary>
+ [Comment("瀹炵墿搴撳瓨鏁�")]
+ [Required]
+ public decimal StockNumber { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ [Comment("鎵樼洏Id")]
+ [Required]
+ public long ContainerId{ get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 搴撳尯Id
+ /// </summary>
+ [Comment("搴撳尯Id")]
+ [Required]
+ public long AreaId { get; set; }
+
+ /// <summary>
+ /// 璐﹂潰鏁伴噺
+ /// </summary>
+ [Comment("璐﹂潰鏁伴噺")]
+ [Required]
+ public decimal QuantityOfBill { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ [Comment("鍏ュ簱鏉ユ簮")]
+ public RuKuSourceEnum Source { get; set; }
+
+ /// <summary>
+ /// 椤圭洰缂栧彿
+ /// </summary>
+ [Comment("椤圭洰缂栧彿")]
+ [MaxLength(255)]
+ public string ProjectCode { get; set; }
+
+ /// <summary>
+ /// 鍚堝悓缂栧彿
+ /// </summary>
+ [Comment("鍚堝悓缂栧彿")]
+ [MaxLength(255)]
+ public string ContractCode { get; set; }
+
+ /// <summary>
+ /// TA鍙�
+ /// </summary>
+ [Comment("TA鍙�")]
+ [MaxLength(255)]
+ public string TACode { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs
new file mode 100644
index 0000000..c4b37e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsContainerPlace.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵樼洏搴撲綅鍏崇郴琛�
+ /// </summary>
+ [Table("wms_containerplace")]
+ [Comment("鎵樼洏搴撲綅鍏崇郴琛�")]
+ public class WmsContainerPlace : DEntityBase
+ {
+ /// <summary>
+ /// 搴撲綅Id
+ /// </summary>
+ [Comment("搴撲綅Id")]
+ [Required]
+ public long PlaceId { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string PlaceCode { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ [Comment("鎵樼洏Id")]
+ [Required]
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 搴撲綅缂栫爜
+ /// </summary>
+ [Comment("搴撲綅缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("鐘舵��")]
+ [Required]
+ public CommonStatus ContainerPlaceStatus { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs
new file mode 100644
index 0000000..ca2d900
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsHistoryMaterialContainer .cs
@@ -0,0 +1,108 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐗╂枡鎵樼洏鍘嗗彶琛�
+ /// </summary>
+ [Table("wms_history_materialcontainer")]
+ [Comment("鐗╂枡鎵樼洏鍘嗗彶琛�")]
+ public class WmsHistoryMaterialContainer : DEntityBase
+ {
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ [Comment("鎵樼洏Id")]
+ [Required]
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ [Comment("鐗╂枡鎵规")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ [Comment("鐗╂枡瑙勬牸")]
+ [MaxLength(50)]
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡Id
+ /// </summary>
+ [Comment("鐗╂枡Id")]
+ [Required]
+ public long MaterialId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鏁伴噺
+ /// </summary>
+ [Comment("缁勭洏鏁伴噺")]
+ [Required]
+ public decimal BindQuantity { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("缁勭洏鐘舵��")]
+ [Required]
+ public CommonStatus BindStatus { get; set; }
+
+ /// <summary>
+ /// 鎶芥鏁伴噺
+ /// </summary>
+ [Comment("鎶芥鏁伴噺")]
+ public decimal SampleQty { get; set; }
+
+ /// <summary>
+ /// 鍗曞彿
+ /// </summary>
+ [Comment("鍗曞彿")]
+ [Required]
+ [MaxLength(50)]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ [Comment("鐗╂枡瀵嗗害")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅琛�
+ /// </summary>
+ public WmsMaterial WmsMaterial { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs
new file mode 100644
index 0000000..dd361f2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsMaterialContainer.cs
@@ -0,0 +1,120 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐗╂枡鎵樼洏鍏崇郴琛�
+ /// </summary>
+ [Table("wms_materialcontainer")]
+ [Comment("鐗╂枡鎵樼洏鍏崇郴琛�")]
+ public class WmsMaterialContainer : DEntityBase
+ {
+ /// <summary>
+ /// 鎵樼洏Id
+ /// </summary>
+ [Comment("鎵樼洏Id")]
+ [Required]
+ public long ContainerId { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栫爜
+ /// </summary>
+ [Comment("鎵樼洏缂栫爜")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ [Comment("鐗╂枡鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialName { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿
+ /// </summary>
+ [Comment("鐗╂枡缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialNo { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鎵规
+ /// </summary>
+ [Comment("鐗╂枡鎵规")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialBatch { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ [Comment("鐗╂枡瑙勬牸")]
+ [MaxLength(50)]
+ public string MaterialSpec { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡Id
+ /// </summary>
+ [Comment("鐗╂枡Id")]
+ [Required]
+ public long MaterialId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鏁伴噺
+ /// </summary>
+ [Comment("缁勭洏鏁伴噺")]
+ [Required]
+ public decimal BindQuantity { get; set; }
+
+ /// <summary>
+ /// 缁勭洏鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("缁勭洏鐘舵��")]
+ [Required]
+ public CommonStatus BindStatus { get; set; }
+
+ /// <summary>
+ /// 鎶芥鏁伴噺
+ /// </summary>
+ [Comment("鎶芥鏁伴噺")]
+ public decimal SampleQty { get; set; }
+
+ /// <summary>
+ /// 鍗曞彿
+ /// </summary>
+ [Comment("鍗曞彿")]
+ [Required]
+ [MaxLength(50)]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ [Comment("鍗曟嵁鏄庣粏Id")]
+ [Required]
+ public long OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡瀵嗗害
+ /// </summary>
+ [Comment("鐗╂枡瀵嗗害")]
+ [Required]
+ [MaxLength(50)]
+ public string MaterialDensity { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏淇℃伅琛�
+ /// </summary>
+ public WmsContainer WmsContainer { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡淇℃伅琛�
+ /// </summary>
+ public WmsMaterial WmsMaterial { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs
new file mode 100644
index 0000000..b0d88ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Entity/WmsJob/WmsTask.cs
@@ -0,0 +1,157 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浠诲姟绠$悊琛�
+ /// </summary>
+ [Table("wms_task")]
+ [Comment("浠诲姟绠$悊琛�")]
+ public class WmsTask : DEntityBase
+ {
+ /// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [Comment("浠诲姟鍙�")]
+ [Required]
+ [MaxLength(50)]
+ public string TaskNo { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鏂瑰紡;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("浠诲姟鏂瑰紡")]
+ [Required]
+ public TaskModel TaskModel { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("浠诲姟绫诲瀷")]
+ [Required]
+ public TaskType TaskType { get; set; }
+
+ /// <summary>
+ /// 浠诲姟绾у埆
+ /// </summary>
+ [Comment("浠诲姟绾у埆")]
+ [Required]
+ public int TaskLevel { get; set; } = 1;
+
+ /// <summary>
+ /// 浠诲姟鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("浠诲姟鐘舵��")]
+ [Required]
+ public TaskStatusEnum TaskStatus { get; set; }
+
+ /// <summary>
+ /// WCS鏄惁鍙互璇诲彇
+ /// </summary>
+ [Comment("WCS鏄惁鍙互璇诲彇")]
+ [Required]
+ public bool IsRead { get; set; }
+
+ /// <summary>
+ /// 鎵樼洏缂栧彿
+ /// </summary>
+ [Comment("鎵樼洏缂栧彿")]
+ [Required]
+ [MaxLength(50)]
+ public string ContainerCode { get; set; }
+
+ /// <summary>
+ /// 璧峰搴撲綅
+ /// </summary>
+ [Comment("璧峰搴撲綅")]
+ [Required]
+ [MaxLength(50)]
+ public string SourcePlace { get; set; }
+
+ /// <summary>
+ /// 鐩爣搴撲綅
+ /// </summary>
+ [Comment("鐩爣搴撲綅")]
+ [Required]
+ [MaxLength(50)]
+ public string ToPlace { get; set; }
+
+ /// <summary>
+ /// 宸烽亾
+ /// </summary>
+ [Comment("宸烽亾")]
+ [Required]
+ public int Aisle { get; set; }
+
+
+ /// <summary>
+ /// 鏄惁绌烘墭
+ /// </summary>
+ [Comment("鏄惁绌烘墭")]
+ public YesOrNot EmptyContainer { get; set; }
+
+ /// <summary>
+ /// 搴撳尯鍚嶇О
+ /// </summary>
+ [Comment("搴撳尯鍚嶇О")]
+ [Required]
+ [MaxLength(50)]
+ public string AreaName { get; set; }
+
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏Id
+ /// </summary>
+ [Comment("鍗曟嵁鏄庣粏Id")]
+ [Required]
+ public long OrderDetailsId { get; set; }
+
+ /// <summary>
+ /// 缁勭洏璁板綍鍗曟嵁鍙�
+ /// </summary>
+ [Comment("缁勭洏璁板綍鍗曟嵁鍙�")]
+ [Required]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍙戦�佹鏁�
+ /// </summary>
+ [Comment("鍙戦�佹鏁�")]
+ public int SendTimes { get; set; }
+
+ /// <summary>
+ /// 浠诲姟鎵ц鍫嗗灈鏈篒d
+ /// </summary>
+ [Comment("浠诲姟鎵ц鍫嗗灈鏈篒d")]
+ public int DodeviceId { get; set; }
+
+ /// <summary>
+ /// 璁惧鎵ц鑺傜偣Id
+ /// </summary>
+ [Comment("璁惧鎵ц鑺傜偣Id")]
+ [MaxLength(50)]
+ public string DodevicenodeId { get; set; }
+
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ [Comment("璁惧绫诲瀷")]
+ [MaxLength(50)]
+ public DodeviceType Dodevicetype { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��;鏁版嵁瀛楀吀
+ /// </summary>
+ [Comment("浠诲姟璁惧鐘舵��")]
+ [Required]
+ public TaskDodeviceStatusEnum TaskDodeviceStatus { get; set; }
+
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ [Comment("鍏ュ簱鏉ユ簮")]
+ [MaxLength(50)]
+ public string Description { get; set; }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs
new file mode 100644
index 0000000..2adffc9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/AdminType.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璐﹀彿绫诲瀷
+ /// </summary>
+ public enum AdminType
+ {
+ /// <summary>
+ /// 瓒呯骇绠$悊鍛�
+ /// </summary>
+ [Description("瓒呯骇绠$悊鍛�")]
+ SuperAdmin = 1,
+
+ /// <summary>
+ /// 绠$悊鍛�
+ /// </summary>
+ [Description("绠$悊鍛�")]
+ Admin = 2,
+
+ /// <summary>
+ /// 鏅�氳处鍙�
+ /// </summary>
+ [Description("鏅�氳处鍙�")]
+ None = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs
new file mode 100644
index 0000000..1313855
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Class.cs
@@ -0,0 +1,24 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public enum Class
+ {
+ /// <summary>
+ /// 涓�鐝�
+ /// </summary>
+ [Description("涓�鐝�")]
+ 涓�鐝� = 1,
+
+ /// <summary>
+ /// 浜岀彮
+ /// </summary>
+ [Description("浜岀彮")]
+ 浜岀彮 = 2
+ }
+
+
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs
new file mode 100644
index 0000000..26744e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/CommonStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍏叡鐘舵��
+ /// </summary>
+ public enum CommonStatus
+ {
+ /// <summary>
+ /// 姝e父
+ /// </summary>
+ [Description("姝e父")]
+ ENABLE = 0,
+
+ /// <summary>
+ /// 鍋滅敤
+ /// </summary>
+ [Description("鍋滅敤")]
+ DISABLE = 1,
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ [Description("鍒犻櫎")]
+ DELETED = 2
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs
new file mode 100644
index 0000000..8df13a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataOpType.cs
@@ -0,0 +1,78 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏁版嵁鎿嶄綔绫诲瀷
+ /// </summary>
+ public enum DataOpType
+ {
+ /// <summary>
+ /// 鍏跺畠
+ /// </summary>
+ OTHER,
+
+ /// <summary>
+ /// 澧炲姞
+ /// </summary>
+ ADD,
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ DELETE,
+
+ /// <summary>
+ /// 缂栬緫
+ /// </summary>
+ EDIT,
+
+ /// <summary>
+ /// 鏇存柊
+ /// </summary>
+ UPDATE,
+
+ /// <summary>
+ /// 鏌ヨ
+ /// </summary>
+ QUERY,
+
+ /// <summary>
+ /// 璇︽儏
+ /// </summary>
+ DETAIL,
+
+ /// <summary>
+ /// 鏍�
+ /// </summary>
+ TREE,
+
+ /// <summary>
+ /// 瀵煎叆
+ /// </summary>
+ IMPORT,
+
+ /// <summary>
+ /// 瀵煎嚭
+ /// </summary>
+ EXPORT,
+
+ /// <summary>
+ /// 鎺堟潈
+ /// </summary>
+ GRANT,
+
+ /// <summary>
+ /// 寮洪��
+ /// </summary>
+ FORCE,
+
+ /// <summary>
+ /// 娓呯┖
+ /// </summary>
+ CLEAN,
+
+ /// <summary>
+ /// 淇敼鐘舵��
+ /// </summary>
+ CHANGE_STATUS
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs
new file mode 100644
index 0000000..09afa03
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/DataScopeType.cs
@@ -0,0 +1,37 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ public enum DataScopeType
+ {
+ /// <summary>
+ /// 鍏ㄩ儴鏁版嵁
+ /// </summary>
+ [Description("鍏ㄩ儴鏁版嵁")]
+ ALL = 1,
+
+ /// <summary>
+ /// 鏈儴闂ㄥ強浠ヤ笅鏁版嵁
+ /// </summary>
+ [Description("鏈儴闂ㄥ強浠ヤ笅鏁版嵁")]
+ DEPT_WITH_CHILD = 2,
+
+ /// <summary>
+ /// 鏈儴闂ㄦ暟鎹�
+ /// </summary>
+ [Description("鏈儴闂ㄦ暟鎹�")]
+ DEPT = 3,
+
+ /// <summary>
+ /// 浠呮湰浜烘暟鎹�
+ /// </summary>
+ [Description("浠呮湰浜烘暟鎹�")]
+ SELF = 4,
+
+ /// <summary>
+ /// 鑷畾涔夋暟鎹�
+ /// </summary>
+ [Description("鑷畾涔夋暟鎹�")]
+ DEFINE = 5
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs
new file mode 100644
index 0000000..4434ef8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/EnumAuditStatus.cs
@@ -0,0 +1,25 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ public enum EnumAuditStatus
+ {
+ /// <summary>
+ /// 寰呭鏍�
+ /// </summary>
+ [Description("鏈鏍�")]
+ UnAudited = 0,
+
+ /// <summary>
+ /// 瀹℃牳閫氳繃
+ /// </summary>
+ [Description("瀹℃牳閫氳繃")]
+ Pass = 1,
+
+ /// <summary>
+ /// 鍥為��
+ /// </summary>
+ [Description("宸插洖閫�")]
+ Backup = 2,
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs
new file mode 100644
index 0000000..d5800aa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ErrorCode.cs
@@ -0,0 +1,497 @@
+锘縰sing Furion.FriendlyException;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺閿欒鐮�
+ /// </summary>
+ [ErrorCodeType]
+ public enum ErrorCode
+ {
+ /// <summary>
+ /// 鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶆纭�
+ /// </summary>
+ [ErrorCodeItemMetadata("鐢ㄦ埛鍚嶆垨瀵嗙爜涓嶆纭�")]
+ D1000,
+
+ /// <summary>
+ /// 闈炴硶鎿嶄綔锛佺姝㈠垹闄よ嚜宸�
+ /// </summary>
+ [ErrorCodeItemMetadata("闈炴硶鎿嶄綔锛岀姝㈠垹闄よ嚜宸�")]
+ D1001,
+
+ /// <summary>
+ /// 璁板綍涓嶅瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("璁板綍涓嶅瓨鍦�")]
+ D1002,
+
+ /// <summary>
+ /// 璐﹀彿宸插瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("璐﹀彿宸插瓨鍦�")]
+ D1003,
+
+ /// <summary>
+ /// 鏃у瘑鐮佷笉鍖归厤
+ /// </summary>
+ [ErrorCodeItemMetadata("鏃у瘑鐮佽緭鍏ラ敊璇�")]
+ D1004,
+
+ /// <summary>
+ /// 娴嬭瘯鏁版嵁绂佹鏇存敼admin瀵嗙爜
+ /// </summary>
+ [ErrorCodeItemMetadata("娴嬭瘯鏁版嵁绂佹鏇存敼鐢ㄦ埛銆恆dmin銆戝瘑鐮�")]
+ D1005,
+
+ /// <summary>
+ /// 鏁版嵁宸插瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("鏁版嵁宸插瓨鍦�")]
+ D1006,
+
+ /// <summary>
+ /// 鏁版嵁涓嶅瓨鍦ㄦ垨鍚湁鍏宠仈寮曠敤锛岀姝㈠垹闄�
+ /// </summary>
+ [ErrorCodeItemMetadata("鏁版嵁涓嶅瓨鍦ㄦ垨鍚湁鍏宠仈寮曠敤锛岀姝㈠垹闄�")]
+ D1007,
+
+ /// <summary>
+ /// 绂佹涓虹鐞嗗憳鍒嗛厤瑙掕壊
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹涓虹鐞嗗憳鍒嗛厤瑙掕壊")]
+ D1008,
+
+ /// <summary>
+ /// 閲嶅鏁版嵁鎴栬褰曞惈鏈変笉瀛樺湪鏁版嵁
+ /// </summary>
+ [ErrorCodeItemMetadata("閲嶅鏁版嵁鎴栬褰曞惈鏈変笉瀛樺湪鏁版嵁")]
+ D1009,
+
+ /// <summary>
+ /// 绂佹涓鸿秴绾х鐞嗗憳瑙掕壊鍒嗛厤鏉冮檺
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹涓鸿秴绾х鐞嗗憳瑙掕壊鍒嗛厤鏉冮檺")]
+ D1010,
+
+ /// <summary>
+ /// 闈炴硶鏁版嵁
+ /// </summary>
+ [ErrorCodeItemMetadata("闈炴硶鏁版嵁")]
+ D1011,
+
+ /// <summary>
+ /// Id涓嶈兘涓虹┖
+ /// </summary>
+ [ErrorCodeItemMetadata("Id涓嶈兘涓虹┖")]
+ D1012,
+
+ /// <summary>
+ /// 鎵�灞炴満鏋勪笉鍦ㄨ嚜宸辩殑鏁版嵁鑼冨洿鍐�
+ /// </summary>
+ [ErrorCodeItemMetadata("娌℃湁鏉冮檺鎿嶄綔璇ユ暟鎹�")]
+ D1013,
+
+ /// <summary>
+ /// 绂佹鍒犻櫎瓒呯骇绠$悊鍛�
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹鍒犻櫎瓒呯骇绠$悊鍛�")]
+ D1014,
+
+ /// <summary>
+ /// 绂佹淇敼瓒呯骇绠$悊鍛樼姸鎬�
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹淇敼瓒呯骇绠$悊鍛樼姸鎬�")]
+ D1015,
+
+ /// <summary>
+ /// 娌℃湁鏉冮檺
+ /// </summary>
+ [ErrorCodeItemMetadata("娌℃湁鏉冮檺")]
+ D1016,
+
+ /// <summary>
+ /// 璐﹀彿宸插喕缁�
+ /// </summary>
+ [ErrorCodeItemMetadata("璐﹀彿宸插喕缁�")]
+ D1017,
+
+ /// <summary>
+ /// 绂佹鍒犻櫎绠$悊鍛�
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹鍒犻櫎绠$悊鍛�")]
+ D1018,
+
+ /// <summary>
+ /// 绂佹鍒犻櫎绯荤粺绠$悊鍛樿鑹�(sys_manager_role)
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹鍒犻櫎绯荤粺绠$悊鍛樿鑹�(sys_manager_role)")]
+ D1019,
+
+ /// <summary>
+ /// 绂佹淇敼绯荤粺绠$悊鍛樿鑹�(sys_manager_role)
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹淇敼绯荤粺绠$悊鍛樿鑹�(sys_manager_role)")]
+ D1020,
+
+ /// <summary>
+ /// 绂佹涓虹郴缁熺鐞嗗憳瑙掕壊(sys_manager_role)鍒嗛厤鏉冮檺
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹涓虹郴缁熺鐞嗗憳瑙掕壊(sys_manager_role)鍒嗛厤鏉冮檺")]
+ D1021,
+
+ /// <summary>
+ /// 绂佹涓鸿秴绾х鐞嗗憳鍒嗛厤瑙掕壊
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹涓鸿秴绾х鐞嗗憳鍒嗛厤瑙掕壊")]
+ D1022,
+
+ /// <summary>
+ /// 绂佹鍒犻櫎榛樿绉熸埛
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹鍒犻櫎榛樿绉熸埛")]
+ D1023,
+
+ /// <summary>
+ /// 鐖舵満鏋勪笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("鐖舵満鏋勪笉瀛樺湪")]
+ D2000,
+
+ /// <summary>
+ /// 褰撳墠鏈烘瀯Id涓嶈兘涓庣埗鏈烘瀯Id鐩稿悓
+ /// </summary>
+ [ErrorCodeItemMetadata("褰撳墠鏈烘瀯Id涓嶈兘涓庣埗鏈烘瀯Id鐩稿悓")]
+ D2001,
+
+ /// <summary>
+ /// 宸叉湁鐩稿悓缁勭粐鏈烘瀯,缂栫爜鎴栧悕绉扮浉鍚�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸叉湁鐩稿悓缁勭粐鏈烘瀯,缂栫爜鎴栧悕绉扮浉鍚�")]
+ D2002,
+
+ /// <summary>
+ /// 娌℃湁鏉冮檺鎿嶄綔鏈烘瀯
+ /// </summary>
+ [ErrorCodeItemMetadata("娌℃湁鏉冮檺鎿嶄綔鏈烘瀯")]
+ D2003,
+
+ /// <summary>
+ /// 璇ユ満鏋勪笅鏈夊憳宸ョ姝㈠垹闄�
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ユ満鏋勪笅鏈夊憳宸ョ姝㈠垹闄�")]
+ D2004,
+
+ /// <summary>
+ /// 闄勫睘鏈烘瀯涓嬫湁鍛樺伐绂佹鍒犻櫎
+ /// </summary>
+ [ErrorCodeItemMetadata("闄勫睘鏈烘瀯涓嬫湁鍛樺伐绂佹鍒犻櫎")]
+ D2005,
+
+ /// <summary>
+ /// 鍙兘澧炲姞涓嬬骇鏈烘瀯
+ /// </summary>
+ [ErrorCodeItemMetadata("鍙兘澧炲姞涓嬬骇鏈烘瀯")]
+ D2006,
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷涓嶅瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀绫诲瀷涓嶅瓨鍦�")]
+ D3000,
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷宸插瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀绫诲瀷宸插瓨鍦�,鍚嶇О鎴栫紪鐮侀噸澶�")]
+ D3001,
+
+ /// <summary>
+ /// 瀛楀吀绫诲瀷涓嬮潰鏈夊瓧鍏稿�肩姝㈠垹闄�
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀绫诲瀷涓嬮潰鏈夊瓧鍏稿�肩姝㈠垹闄�")]
+ D3002,
+
+ /// <summary>
+ /// 瀛楀吀鍊煎凡瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀鍊煎凡瀛樺湪,鍚嶇О鎴栫紪鐮侀噸澶�")]
+ D3003,
+
+ /// <summary>
+ /// 瀛楀吀鍊间笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀鍊间笉瀛樺湪")]
+ D3004,
+
+ /// <summary>
+ /// 瀛楀吀鐘舵�侀敊璇�
+ /// </summary>
+ [ErrorCodeItemMetadata("瀛楀吀鐘舵�侀敊璇�")]
+ D3005,
+
+ /// <summary>
+ /// 鑿滃崟宸插瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("鑿滃崟宸插瓨鍦�")]
+ D4000,
+
+ /// <summary>
+ /// 璺敱鍦板潃涓虹┖
+ /// </summary>
+ [ErrorCodeItemMetadata("璺敱鍦板潃涓虹┖")]
+ D4001,
+
+ /// <summary>
+ /// 鎵撳紑鏂瑰紡涓虹┖
+ /// </summary>
+ [ErrorCodeItemMetadata("鎵撳紑鏂瑰紡涓虹┖")]
+ D4002,
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑鏍煎紡涓虹┖
+ /// </summary>
+ [ErrorCodeItemMetadata("鏉冮檺鏍囪瘑鏍煎紡涓虹┖")]
+ D4003,
+
+ /// <summary>
+ /// 鏉冮檺鏍囪瘑鏍煎紡閿欒
+ /// </summary>
+ [ErrorCodeItemMetadata("鏉冮檺鏍囪瘑鏍煎紡閿欒")]
+ D4004,
+
+ /// <summary>
+ /// 鏉冮檺涓嶅瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("鏉冮檺涓嶅瓨鍦�")]
+ D4005,
+
+ /// <summary>
+ /// 鐖剁骇鑿滃崟涓嶈兘涓哄綋鍓嶈妭鐐癸紝璇烽噸鏂伴�夋嫨鐖剁骇鑿滃崟
+ /// </summary>
+ [ErrorCodeItemMetadata("鐖剁骇鑿滃崟涓嶈兘涓哄綋鍓嶈妭鐐癸紝璇烽噸鏂伴�夋嫨鐖剁骇鑿滃崟")]
+ D4006,
+
+ /// <summary>
+ /// 涓嶈兘绉诲姩鏍硅妭鐐�
+ /// </summary>
+ [ErrorCodeItemMetadata("涓嶈兘绉诲姩鏍硅妭鐐�")]
+ D4007,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�")]
+ D5000,
+
+ /// <summary>
+ /// 榛樿婵�娲荤郴缁熷彧鑳芥湁涓�涓�
+ /// </summary>
+ [ErrorCodeItemMetadata("榛樿婵�娲荤郴缁熷彧鑳芥湁涓�涓�")]
+ D5001,
+
+ /// <summary>
+ /// 璇ュ簲鐢ㄤ笅鏈夎彍鍗曠姝㈠垹闄�
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ュ簲鐢ㄤ笅鏈夎彍鍗曠姝㈠垹闄�")]
+ D5002,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸簲鐢�")]
+ D5003,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佽亴浣�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佽亴浣�")]
+ D6000,
+
+ /// <summary>
+ /// 璇ヨ亴浣嶄笅鏈夊憳宸ョ姝㈠垹闄�
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ヨ亴浣嶄笅鏈夊憳宸ョ姝㈠垹闄�")]
+ D6001,
+
+ /// <summary>
+ /// 閫氱煡鍏憡鐘舵�侀敊璇�
+ /// </summary>
+ [ErrorCodeItemMetadata("閫氱煡鍏憡鐘舵�侀敊璇�")]
+ D7000,
+
+ /// <summary>
+ /// 閫氱煡鍏憡鍒犻櫎澶辫触
+ /// </summary>
+ [ErrorCodeItemMetadata("閫氱煡鍏憡鍒犻櫎澶辫触")]
+ D7001,
+
+ /// <summary>
+ /// 閫氱煡鍏憡缂栬緫澶辫触
+ /// </summary>
+ [ErrorCodeItemMetadata("閫氱煡鍏憡缂栬緫澶辫触锛岀被鍨嬪繀椤讳负鑽夌")]
+ D7002,
+
+ /// <summary>
+ /// 閫氱煡鍏憡鎿嶄綔澶辫触锛岄潪鍙戝竷鑰呬笉鑳借繘琛屾搷浣�
+ /// </summary>
+ [ErrorCodeItemMetadata("閫氱煡鍏憡鎿嶄綔澶辫触锛岄潪鍙戝竷鑰呬笉鑳借繘琛屾搷浣�")]
+ D7003,
+
+ /// <summary>
+ /// 鏂囦欢涓嶅瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("鏂囦欢涓嶅瓨鍦�")]
+ D8000,
+
+ /// <summary>
+ /// 涓嶅厑璁哥殑鏂囦欢绫诲瀷
+ /// </summary>
+ [ErrorCodeItemMetadata("涓嶅厑璁哥殑鏂囦欢绫诲瀷")]
+ D8001,
+
+ /// <summary>
+ /// 鏂囦欢瓒呰繃鍏佽澶у皬
+ /// </summary>
+ [ErrorCodeItemMetadata("鏂囦欢瓒呰繃鍏佽澶у皬")]
+ D8002,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸弬鏁伴厤缃�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮佸弬鏁伴厤缃�")]
+ D9000,
+
+ /// <summary>
+ /// 绂佹鍒犻櫎绯荤粺鍙傛暟
+ /// </summary>
+ [ErrorCodeItemMetadata("绂佹鍒犻櫎绯荤粺鍙傛暟")]
+ D9001,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶄换鍔¤皟搴�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶄换鍔¤皟搴�")]
+ D1100,
+
+ /// <summary>
+ /// 浠诲姟璋冨害涓嶅瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("浠诲姟璋冨害涓嶅瓨鍦�")]
+ D1101,
+
+ /// <summary>
+ /// 婕旂ず鐜绂佹淇敼鏁版嵁
+ /// </summary>
+ [ErrorCodeItemMetadata("婕旂ず鐜绂佹淇敼鏁版嵁")]
+ D1200,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀鐞嗗憳鎴栧悓涓绘満绉熸埛
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚屼富鏈虹鎴�")]
+ D1300,
+
+ /// <summary>
+ /// 璇ヨ〃浠g爜妯℃澘宸茬粡鐢熸垚杩�
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ヨ〃浠g爜妯℃澘宸茬粡鐢熸垚杩�")]
+ D1400,
+
+ /// <summary>
+ /// 璇ョ被鍨嬩笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ョ被鍨嬩笉瀛樺湪")]
+ D1501,
+
+ /// <summary>
+ /// 璇ュ瓧娈典笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ュ瓧娈典笉瀛樺湪")]
+ D1502,
+
+ /// <summary>
+ /// 璇ョ被鍨嬩笉鏄灇涓剧被鍨�
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ョ被鍨嬩笉鏄灇涓剧被鍨�")]
+ D1503,
+
+ /// <summary>
+ /// 璇ュ疄浣撲笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("璇ュ疄浣撲笉瀛樺湪")]
+ D1504,
+
+ /// <summary>
+ /// 鐖惰彍鍗曚笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("鐖惰彍鍗曚笉瀛樺湪")]
+ D1505,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶄笟鍔″悕绉�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶄笟鍔″悕绉�")]
+ D1600,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮侀」鐩�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄥ悓鍚嶆垨鍚岀紪鐮侀」鐩�")]
+ xg1000,
+
+ /// <summary>
+ /// 宸插瓨鍦ㄧ浉鍚岃瘉浠跺彿鐮佷汉鍛�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄧ浉鍚岃瘉浠跺彿鐮佷汉鍛�")]
+ xg1001,
+
+ /// <summary>
+ /// 妫�娴嬫暟鎹笉瀛樺湪
+ /// </summary>
+ [ErrorCodeItemMetadata("妫�娴嬫暟鎹笉瀛樺湪")]
+ xg1002,
+
+
+ /// <summary>
+ /// 闈炴硶鐨凟xcel鏂囦欢
+ /// </summary>
+ [ErrorCodeItemMetadata("闈炴硶鐨凟xcel鏂囦欢")]
+ Excel001,
+
+
+ /// <summary>
+ /// 鏃犳硶鎵惧埌鐩爣鏂囦欢
+ /// </summary>
+ [ErrorCodeItemMetadata("鏃犳硶鎵惧埌鐩爣鏂囦欢")]
+ Excel002,
+
+ /// <summary>
+ /// Sheet鍚嶇О涓嶅尮閰�
+ /// </summary>
+ [ErrorCodeItemMetadata("Sheet鍚嶇О涓嶅尮閰�")]
+ Excel003,
+
+ /// <summary>
+ /// 鎵句笉鍒扮殑鏋氫妇鎻忚堪
+ /// </summary>
+ [ErrorCodeItemMetadata("鎵句笉鍒扮殑鏋氫妇鎻忚堪")]
+ Enum001,
+
+ /// <summary>
+ /// 鍞竴閿睘鎬ч泦涓虹┖
+ /// </summary>
+ [ErrorCodeItemMetadata("鍞竴閿睘鎬ч泦涓虹┖")]
+ Key001,
+ /// <summary>
+ /// 鏁版嵁宸插瓨鍦�
+ /// </summary>
+ [ErrorCodeItemMetadata("鏁版嵁宸插瓨鍦�")]
+ E0001,
+ /// <summary>
+ /// 宸插瓨鍦ㄧ浉鍚屼俊鎭暟鎹�
+ /// </summary>
+ [ErrorCodeItemMetadata("宸插瓨鍦ㄧ浉鍚屼俊鎭暟鎹�")]
+ E0002,
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs
new file mode 100644
index 0000000..b12c6c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FieldType.cs
@@ -0,0 +1,35 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏂囦欢瀛樺偍瀛楁
+ /// </summary>
+ [Description("瀛楁绫诲瀷")]
+ public enum FieldType
+ {
+ /// <summary>
+ /// 鏍囬噺绫诲瀷
+ /// </summary>
+ [Description("鏍囬噺绫诲瀷")]
+ SCALAR = 1,
+
+ /// <summary>
+ /// 瀵艰埅绫诲瀷
+ /// </summary>
+ [Description("瀵艰埅绫诲瀷")]
+ NAVIGATION = 2,
+
+ /// <summary>
+ /// 澶栭敭绫诲瀷
+ /// </summary>
+ [Description("澶栭敭绫诲瀷")]
+ FK = 3,
+
+ /// <summary>
+ /// 鎸囩ず绫诲瀷
+ /// </summary>
+ [Description("鎸囩ず绫诲瀷")]
+ NO_MAP = 4
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs
new file mode 100644
index 0000000..d9d0c6b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FileLocation.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏂囦欢瀛樺偍浣嶇疆
+ /// </summary>
+ public enum FileLocation
+ {
+ /// <summary>
+ /// 闃块噷浜�
+ /// </summary>
+ [Description("闃块噷浜�")]
+ ALIYUN = 1,
+
+ /// <summary>
+ /// 鑵捐浜�
+ /// </summary>
+ [Description("鑵捐浜�")]
+ TENCENT = 2,
+
+ /// <summary>
+ /// minio鏈嶅姟鍣�
+ /// </summary>
+ [Description("minio鏈嶅姟鍣�")]
+ MINIO = 3,
+
+ /// <summary>
+ /// 鏈湴
+ /// </summary>
+ [Description("鏈湴")]
+ LOCAL = 4
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs
new file mode 100644
index 0000000..126c61f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/FormDesignType.cs
@@ -0,0 +1,16 @@
+锘縰sing System.ComponentModel;
+
+namespace Furion.Extras.Admin.NET
+{
+ /// <summary>
+ /// 鍔ㄦ�佽〃鍗曠被鍨�
+ /// </summary>
+ public enum FormDesignType
+ {
+ /// <summary>
+ /// vue-form-design
+ /// </summary>
+ [Description("vue-form-design")]
+ VueFormDesign = 1
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs
new file mode 100644
index 0000000..134f2b2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Gender.cs
@@ -0,0 +1,52 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public enum Gender
+ {
+ /// <summary>
+ /// 鐢�
+ /// </summary>
+ [Description("鐢�")]
+ MALE = 1,
+
+ /// <summary>
+ /// 濂�
+ /// </summary>
+ [Description("濂�")]
+ FEMALE = 2,
+
+ /// <summary>
+ /// 鏈煡
+ /// </summary>
+ [Description("鏈煡")]
+ UNKNOWN = 3
+ }
+ /// <summary>
+ /// 鎬у埆
+ /// </summary>
+ public enum GenderChinese
+ {
+ /// <summary>
+ /// 鐢�
+ /// </summary>
+ [Description("鐢�")]
+ 鐢� = 1,
+
+ /// <summary>
+ /// 濂�
+ /// </summary>
+ [Description("濂�")]
+ 濂� = 2,
+
+ /// <summary>
+ /// 鏈煡
+ /// </summary>
+ [Description("鏈煡")]
+ 鏈煡 = 3
+ }
+
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs
new file mode 100644
index 0000000..5a572b8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpMethod.cs
@@ -0,0 +1,64 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璇锋眰鏂瑰紡绫诲瀷
+ /// </summary>
+ public enum HttpMethod
+ {
+ /// <summary>
+ /// GET
+ /// </summary>
+ [Description("GET")]
+ GET = 0,
+
+ /// <summary>
+ /// POST
+ /// </summary>
+ [Description("POST")]
+ POST = 1,
+
+ /// <summary>
+ /// PUT
+ /// </summary>
+ [Description("PUT")]
+ PUT = 2,
+
+ /// <summary>
+ /// DELETE
+ /// </summary>
+ [Description("DELETE")]
+ DELETE = 3,
+
+ /// <summary>
+ /// PATCH
+ /// </summary>
+ [Description("PATCH")]
+ PATCH = 4,
+
+ /// <summary>
+ /// HEAD
+ /// </summary>
+ [Description("HEAD")]
+ HEAD = 5,
+
+ /// <summary>
+ /// CONNECT
+ /// </summary>
+ [Description("CONNECT")]
+ CONNECT = 6,
+
+ /// <summary>
+ /// TRACE
+ /// </summary>
+ [Description("TRACE")]
+ TRACE = 7,
+
+ /// <summary>
+ /// OPTIONS
+ /// </summary>
+ [Description("OPTIONS")]
+ OPTIONS = 8
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs
new file mode 100644
index 0000000..0fc6384
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/HttpStatusCode.cs
@@ -0,0 +1,252 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// HTTP鐘舵�佺爜
+ /// </summary>
+ public enum HttpStatusCode
+ {
+ /// <summary>
+ /// 瀹㈡埛绔彲鑳界户缁叾璇锋眰
+ /// </summary>
+ [Description("缁х画")]
+ Continue = 100,
+
+ /// <summary>
+ /// 姝e湪鏇存敼鍗忚鐗堟湰鎴栧崗璁�
+ /// </summary>
+ [Description("浜ゆ崲鍗忚")]
+ SwitchingProtocols = 101,
+
+ /// <summary>
+ /// 璇锋眰鎴愬姛锛屼笖璇锋眰鐨勪俊鎭寘鍚湪鍝嶅簲涓�
+ /// </summary>
+ [Description("OK")]
+ OK = 200,
+
+ /// <summary>
+ /// 璇锋眰瀵艰嚧鍦ㄥ搷搴旇鍙戦�佸墠鍒涘缓鏂拌祫婧�
+ /// </summary>
+ [Description("宸插垱寤�")]
+ Created = 201,
+
+ /// <summary>
+ /// 璇锋眰宸茶鎺ュ彈鍋氳繘涓�姝ュ鐞�
+ /// </summary>
+ [Description("鎺ユ敹")]
+ Accepted = 202,
+
+ /// <summary>
+ /// 杩斿洖鐨勫厓淇℃伅鏉ヨ嚜缂撳瓨鍓湰鑰屼笉鏄師濮嬫湇鍔″櫒锛屽洜姝ゅ彲鑳戒笉姝g‘
+ /// </summary>
+ [Description("闈炶璇佷俊鎭�")]
+ NonAuthoritativeInformation = 203,
+
+ /// <summary>
+ /// 宸叉垚鍔熷鐞嗚姹傚苟涓斿搷搴斿凡琚瀹氫负鏃犲唴瀹�
+ /// </summary>
+ [Description("鏃犲唴瀹�")]
+ NoContent = 204,
+
+ /// <summary>
+ /// 瀹㈡埛绔簲閲嶇疆锛堟垨閲嶆柊鍔犺浇锛夊綋鍓嶈祫婧�
+ /// </summary>
+ [Description("閲嶇疆鍐呭")]
+ ResetContent = 205,
+
+ /// <summary>
+ /// 鍝嶅簲鏄寘鎷瓧鑺傝寖鍥寸殑 GET璇锋眰鎵�璇锋眰鐨勯儴鍒嗗搷搴�
+ /// </summary>
+ [Description("閮ㄥ垎鍐呭")]
+ PartialContent = 206,
+
+ /// <summary>
+ /// 璇锋眰鐨勪俊鎭湁澶氱琛ㄧず褰㈠紡锛岄粯璁ゆ搷浣滄槸灏嗘鐘舵�佽涓洪噸瀹氬悜
+ /// </summary>
+ [Description("澶氳矾閫夋嫨")]
+ MultipleChoices = 300,
+
+ /// <summary>
+ /// 璇锋眰鐨勪俊鎭凡绉诲埌 Location澶翠腑鎸囧畾鐨� URI 澶�
+ /// </summary>
+ [Description("姘镐箙杞Щ")]
+ MovedPermanently = 301,
+
+ /// <summary>
+ /// 璇锋眰鐨勪俊鎭綅浜� Location 澶翠腑鎸囧畾鐨� URI 澶�
+ /// </summary>
+ [Description("鏆傛椂杞Щ")]
+ Found = 302,
+
+ /// <summary>
+ /// 灏嗗鎴风鑷姩閲嶅畾鍚戝埌 Location 澶翠腑鎸囧畾鐨� URI
+ /// </summary>
+ [Description("鍙傝鍏跺畠")]
+ SeeOther = 303,
+
+ /// <summary>
+ /// 瀹㈡埛绔殑缂撳瓨鍓湰鏄渶鏂扮殑
+ /// </summary>
+ [Description("鏈慨鏀�")]
+ NotModified = 304,
+
+ /// <summary>
+ /// 璇锋眰搴斾娇鐢ㄤ綅浜� Location 澶翠腑鎸囧畾鐨� URI 鐨勪唬鐞嗘湇鍔″櫒
+ /// </summary>
+ [Description("浣跨敤浠g悊")]
+ UseProxy = 305,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄦ湭鑳借瘑鍒姹�
+ /// </summary>
+ [Description("閿欒璇锋眰")]
+ BadRequest = 400,
+
+ /// <summary>
+ /// 璇锋眰鐨勮祫婧愯姹傝韩浠介獙璇�
+ /// </summary>
+ [Description("鏈璇�")]
+ Unauthorized = 401,
+
+ /// <summary>
+ /// 闇�瑕佷粯璐�
+ /// </summary>
+ [Description("闇�瑕佷粯璐�")]
+ PaymentRequired = 402,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄦ嫆缁濇弧瓒宠姹�
+ /// </summary>
+ [Description("绂佹")]
+ Forbidden = 403,
+
+ /// <summary>
+ /// 璇锋眰鐨勮祫婧愪笉鍦ㄦ湇鍔″櫒涓�
+ /// </summary>
+ [Description("鏈壘鍒�")]
+ NotFound = 404,
+
+ /// <summary>
+ /// 璇锋眰鐨勮祫婧愪笂涓嶅厑璁歌姹傛柟娉曪紙POST鎴� GET锛�
+ /// </summary>
+ [Description("璇锋眰鏂规硶涓嶅厑璁�")]
+ MethodNotAllowed = 405,
+
+ /// <summary>
+ /// 瀹㈡埛绔凡鐢� Accept 澶存寚绀哄皢涓嶆帴鍙楄祫婧愮殑浠讳綍鍙敤琛ㄧず褰㈠紡
+ /// </summary>
+ [Description("涓嶆帴鍙�")]
+ NotAcceptable = 406,
+
+ /// <summary>
+ /// 璇锋眰鐨勪唬鐞嗚姹傝韩浠介獙璇�
+ /// Proxy-authenticate 澶村寘鍚浣曟墽琛岃韩浠介獙璇佺殑璇︾粏淇℃伅
+ /// </summary>
+ [Description("闇�瑕佷唬鐞嗚璇�")]
+ ProxyAuthenticationRequired = 407,
+
+ /// <summary>
+ /// 瀹㈡埛绔病鏈夊湪鏈嶅姟鍣ㄦ湡鏈涜姹傜殑鏃堕棿鍐呭彂閫佽姹�
+ /// </summary>
+ [Description("璇锋眰瓒呮椂")]
+ RequestTimeout = 408,
+
+ /// <summary>
+ /// 鐢变簬鏈嶅姟鍣ㄤ笂鐨勫啿绐佽�屾湭鑳芥墽琛岃姹�
+ /// </summary>
+ [Description("鍐茬獊")]
+ Conflict = 409,
+
+ /// <summary>
+ /// 璇锋眰鐨勮祫婧愪笉鍐嶅彲鐢�
+ /// </summary>
+ [Description("澶辫触")]
+ Gone = 410,
+
+ /// <summary>
+ /// 缂哄皯蹇呴渶鐨� Content-length
+ /// </summary>
+ [Description("缂哄皯Content-length澶�")]
+ LengthRequired = 411,
+
+ /// <summary>
+ /// 涓烘璇锋眰璁剧疆鐨勬潯浠跺け璐ワ紝涓旀棤娉曟墽琛屾璇锋眰
+ /// 鏉′欢鏄敤鏉′欢璇锋眰鏍囧ご锛堝 If-Match銆両f-None-Match 鎴� If-Unmodified-Since锛夎缃殑銆�
+ /// </summary>
+ [Description("鏉′欢澶辫触")]
+ PreconditionFailed = 412,
+
+ /// <summary>
+ /// 璇锋眰澶ぇ锛屾湇鍔″櫒鏃犳硶澶勭悊
+ /// </summary>
+ [Description("璇锋眰瀹炰綋澶ぇ")]
+ RequestEntityTooLarge = 413,
+
+ /// <summary>
+ /// URI 澶暱
+ /// </summary>
+ [Description("璇锋眰URI澶暱")]
+ RequestUriTooLong = 414,
+
+ /// <summary>
+ /// 璇锋眰鏄笉鏀寔鐨勭被鍨�
+ /// </summary>
+ [Description("涓嶆敮鎸佺殑濯掍綋绫诲瀷")]
+ UnsupportedMediaType = 415,
+
+ /// <summary>
+ /// 鏃犳硶杩斿洖浠庤祫婧愯姹傜殑鏁版嵁鑼冨洿锛屽洜涓鸿寖鍥寸殑寮�澶村湪璧勬簮鐨勫紑澶翠箣鍓嶏紝鎴栧洜涓鸿寖鍥寸殑缁撳熬鍦ㄨ祫婧愮殑缁撳熬涔嬪悗
+ /// </summary>
+ [Description("鏁版嵁鑼冨洿涓嶅尮閰�")]
+ RequestedRangeNotSatisfiable = 416,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄦ湭鑳界鍚圗xpect澶翠腑缁欏畾鐨勯鏈熷��
+ /// </summary>
+ [Description("鏈嶅姟鍣ㄤ笌Expect澶翠笉鍖归厤")]
+ ExpectationFailed = 417,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄦ嫆缁濆鐞嗗鎴风浣跨敤褰撳墠鍗忚鍙戦�佺殑璇锋眰锛屼絾鏄彲浠ユ帴鍙楀叾浣跨敤鍗囩骇鍚庣殑鍗忚鍙戦�佺殑璇锋眰
+ /// </summary>
+ [Description("褰撳墠鍗忚涓嶅彈鏀寔")]
+ UpgradeRequired = 426,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄤ笂鍙戠敓浜嗕竴鑸敊璇�
+ /// </summary>
+ [Description("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�")]
+ InternalServerError = 500,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄤ笉鏀寔璇锋眰鐨勫嚱鏁�
+ /// </summary>
+ [Description("鏈疄鐜�")]
+ NotImplemented = 501,
+
+ /// <summary>
+ /// 涓棿浠g悊鏈嶅姟鍣ㄤ粠鍙︿竴浠g悊鎴栧師濮嬫湇鍔″櫒鎺ユ敹鍒伴敊璇搷搴�
+ /// </summary>
+ [Description("缃戝叧澶辫触")]
+ BadGateway = 502,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄦ殏鏃朵笉鍙敤锛岄�氬父鏄敱浜庤繃澶氬姞杞芥垨缁存姢
+ /// </summary>
+ [Description("鏈嶅姟鍣ㄧ淮鎶�")]
+ ServiceUnavailable = 503,
+
+ /// <summary>
+ /// 涓棿浠g悊鏈嶅姟鍣ㄥ湪绛夊緟鏉ヨ嚜鍙︿竴涓唬鐞嗘垨鍘熷鏈嶅姟鍣ㄧ殑鍝嶅簲鏃跺凡瓒呮椂
+ /// </summary>
+ [Description("缃戝叧瓒呮椂")]
+ GatewayTimeout = 504,
+
+ /// <summary>
+ /// 鏈嶅姟鍣ㄤ笉鏀寔璇锋眰鐨凥TTP鐗堟湰
+ /// </summary>
+ [Description("HTTP鐗堟湰涓嶆敮鎸�")]
+ HttpVersionNotSupported = 505
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs
new file mode 100644
index 0000000..eedd659
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/ImportExcelType.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀵煎叆Excel鏂瑰紡
+ /// </summary>
+ [Description("瀵煎叆Excel鏂瑰紡")]
+ public enum ImportExcelType
+ {
+ /// <summary>
+ /// 浠呮柊澧�
+ /// </summary>
+ [Description("浠呮柊澧�")]
+ ADD_ONLY = 1,
+
+ /// <summary>
+ /// 鏂板骞舵洿鏂�
+ /// </summary>
+ [Description("鏂板骞舵洿鏂�")]
+ ADD_AND_UPDATE = 2
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs
new file mode 100644
index 0000000..92b8272
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/InventoryRuleType.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐩樼偣绫诲瀷
+ /// </summary>
+ public enum RuleType
+ {
+ /// <summary>
+ /// 鍔ㄧ洏
+ /// </summary>
+ [Description("鍔ㄧ洏")]
+ DONGPANG = 1,
+
+ /// <summary>
+ /// 闈欑洏
+ /// </summary>
+ [Description("闈欑洏")]
+ JINGPANG = 2
+ }
+
+ /// <summary>
+ /// 鐩樼偣妯″紡
+ /// </summary>
+ public enum RuleMode
+ {
+ /// <summary>
+ /// 闅忔満
+ /// </summary>
+ [Description("闅忔満")]
+ SUIJI = 1,
+
+ /// <summary>
+ /// 鎶芥牱
+ /// </summary>
+ [Description("鎶芥牱")]
+ CHOUYANG = 2,
+
+ /// <summary>
+ /// 鍏ㄧ洏
+ /// </summary>
+ [Description("鍏ㄧ洏")]
+ QUANPANG = 3
+ }
+
+ /// <summary>
+ /// 鐩樼偣鍛ㄦ湡
+ /// </summary>
+ public enum RuleCycle
+ {
+ /// <summary>
+ /// 鏈堝害
+ /// </summary>
+ [Description("鏈堝害")]
+ YUEDU = 1,
+
+ /// <summary>
+ /// 瀛e害
+ /// </summary>
+ [Description("瀛e害")]
+ JIDU = 2,
+
+ /// <summary>
+ /// 骞村害
+ /// </summary>
+ [Description("骞村害")]
+ NIANGDU = 3
+ }
+
+ /// <summary>
+ /// 瀹℃壒鐘舵��
+ /// </summary>
+ public enum ExamineStateEnum
+ {
+ /// <summary>
+ /// 鏈鎵�
+ /// </summary>
+ [Description("鏈鎵�")]
+ WEISHENPI = 1,
+
+ /// <summary>
+ /// 閫氳繃
+ /// </summary>
+ [Description("閫氳繃")]
+ TONGGUO = 2,
+
+ /// <summary>
+ /// 椹冲洖
+ /// </summary>
+ [Description("椹冲洖")]
+ BOHUI = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs
new file mode 100644
index 0000000..008c27d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/IssueState.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绛炬牳鐘舵��
+ /// </summary>
+ public enum IssueState
+ {
+ /// <summary>
+ /// 涓嶄娇鐢�
+ /// </summary>
+ [Description("涓嶄娇鐢�")]
+ Unused = 1,
+
+ /// <summary>
+ /// 鏈鏍�
+ /// </summary>
+ [Description("鏈鏍�")]
+ Unfrozen = 2,
+
+ /// <summary>
+ /// 绛炬牳涓�
+ /// </summary>
+ [Description("绛炬牳涓�")]
+ Pending = 3,
+
+ /// <summary>
+ /// 宸茬鏍�
+ /// </summary>
+ [Description("宸茬鏍�")]
+ Active = 4
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs
new file mode 100644
index 0000000..a6db976
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesAisle.cs
@@ -0,0 +1,46 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 缁勮杞﹂棿鎻愬崌鏈烘灇涓�
+ /// </summary>
+ public enum LesAisle
+ {
+ /// <summary>
+ /// 涓�鍙锋彁鍗囨満
+ /// </summary>
+ [Description("涓�鍙�")]
+ YI = 1,
+
+ /// <summary>
+ /// 浜屽彿鎻愬崌鏈�
+ /// </summary>
+ [Description("浜屽彿")]
+ ER = 2,
+
+ /// <summary>
+ /// 涓夊彿鎻愬崌鏈�
+ /// </summary>
+ [Description("涓夊彿")]
+ SAN = 3,
+
+ /// <summary>
+ /// 鍥涘彿鎻愬崌鏈�
+ /// </summary>
+ [Description("鍥涘彿")]
+ SI = 4,
+
+ /// <summary>
+ /// 浜斿彿鎻愬崌鏈�
+ /// </summary>
+ [Description("浜斿彿")]
+ WU = 5,
+
+ /// <summary>
+ /// 鍏彿鎻愬崌鏈�
+ /// </summary>
+ [Description("鍏彿")]
+ LIU = 6,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs
new file mode 100644
index 0000000..e4c1920
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesEntranceType.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳彛绫诲瀷
+ /// </summary>
+ public enum LesEntranceType
+ {
+ /// <summary>
+ /// 鍏ュ簱鍙�
+ /// </summary>
+ [Description("鍏ュ簱鍙�")]
+ RUKU = 1,
+
+ /// <summary>
+ /// 鍑哄簱鍙�
+ /// </summary>
+ [Description("鍑哄簱鍙�")]
+ CHUKU = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs
new file mode 100644
index 0000000..e98f701
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesOrderMode.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁妯″紡
+ /// </summary>
+
+ public enum LesOrderMode
+ {
+ /// <summary>
+ /// 鏍规嵁鐗╂枡
+ /// </summary>
+ [Description("鏍规嵁鐗╂枡")]
+ GENJUWULIAO = 1,
+
+ /// <summary>
+ /// 鏍规嵁搴撲綅
+ /// </summary>
+ [Description("鏍规嵁搴撲綅")]
+ GENJUKUWEI = 2,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs
new file mode 100644
index 0000000..a1a9723
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesPackState.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵撳寘鐘舵��
+ /// </summary>
+ public enum LesPackState
+ {
+ /// <summary>
+ /// 鍋滅敤
+ /// </summary>
+ [Description("鍋滅敤")]
+ TINGYONG = 0,
+ /// <summary>
+ /// 鏈嚭搴�
+ /// </summary>
+ [Description("鏈嚭搴�")]
+ WEICHUKU = 1,
+
+ /// <summary>
+ /// 杞Щ搴撲腑
+ /// </summary>
+ [Description("杞Щ搴撲腑")]
+ ZHUANYIKU = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs
new file mode 100644
index 0000000..7e022cc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesTakeMaterialsStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍙枡鍗曠姸鎬�
+ /// </summary>
+ public enum LesTakeMaterialsStatus
+ {
+ /// <summary>
+ /// 鏈紑濮�
+ /// </summary>
+ [Description("鏈紑濮�")]
+ WEIKAISHI = 0,
+
+ /// <summary>
+ /// 杩愰�佷腑
+ /// </summary>
+ [Description("杩愰�佷腑")]
+ YUNSONGZHONG = 1,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs
new file mode 100644
index 0000000..268dadb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkShopType.cs
@@ -0,0 +1,48 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵�灞炶溅闂存灇涓� /缁勮杞﹂棿
+ /// </summary>
+
+ ////鎵�灞炶溅闂� /鑳跺悎鏉胯溅闂�/钖勮啘杞﹂棿/缁勮杞﹂棿锛堣�侊級/缁勮杞﹂棿锛堟柊锛�
+ public enum LesWorkShopType
+ {
+ /// <summary>
+ /// 鍏ュ簱
+ /// </summary>
+ [Description("鍏ュ簱")]
+ FAPAOCHEJIAN = 1,
+
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ [Description("鍑哄簱")]
+ JIAOHEBANCHEJIAN = 2,
+
+ /// <summary>
+ /// 鑳跺悎鏉胯溅闂�
+ /// </summary>
+ [Description("鑳跺悎鏉胯溅闂�")]
+ JHBCJ = 3,
+
+ /// <summary>
+ /// RSB杞﹂棿
+ /// </summary>
+ [Description("RSB杞﹂棿")]
+ RSBCJ = 4,
+
+ /// <summary>
+ /// 鍘熸枡搴撹溅闂�
+ /// </summary>
+ [Description("鍘熸枡搴撹溅闂�")]
+ YLKCJ = 5,
+
+ /// <summary>
+ /// 閫氱敤
+ /// </summary>
+ [Description("閫氱敤")]
+ TY = 6,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs
new file mode 100644
index 0000000..b1e6487
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Les/LesWorkshopSection.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 宸ユ
+ /// </summary>
+ public enum LesWorkshopSection
+ {
+ /// <summary>
+ /// 鍒囧壊
+ /// </summary>
+ [Description("鍒囧壊")]
+ QIEGE = 1,
+
+ /// <summary>
+ /// 鍘嬪悎
+ /// </summary>
+ [Description("鍘嬪悎")]
+ YAHE = 2,
+
+ /// <summary>
+ /// CNC
+ /// </summary>
+ [Description("CNC")]
+ CNC = 3
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs
new file mode 100644
index 0000000..6f0b59f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/LoginType.cs
@@ -0,0 +1,40 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐧婚檰绫诲瀷
+ /// </summary>
+ public enum LoginType
+ {
+ /// <summary>
+ /// 鐧婚檰
+ /// </summary>
+ [Description("鐧婚檰")]
+ LOGIN = 0,
+
+ /// <summary>
+ /// 鐧诲嚭
+ /// </summary>
+ [Description("鐧诲嚭")]
+ LOGOUT = 1,
+
+ /// <summary>
+ /// 娉ㄥ唽
+ /// </summary>
+ [Description("娉ㄥ唽")]
+ REGISTER = 2,
+
+ /// <summary>
+ /// 鏀瑰瘑
+ /// </summary>
+ [Description("鏀瑰瘑")]
+ CHANGEPASSWORD = 3,
+
+ /// <summary>
+ /// 涓夋柟鎺堟潈鐧婚檰
+ /// </summary>
+ [Description("鎺堟潈鐧婚檰")]
+ AUTHORIZEDLOGIN = 4
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs
new file mode 100644
index 0000000..5533fb3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuOpenType.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鑿滃崟绫诲瀷
+ /// </summary>
+ public enum MenuOpenType
+ {
+ /// <summary>
+ /// 鏃�
+ /// </summary>
+ [Description("鏃�")]
+ NONE = 0,
+
+ /// <summary>
+ /// 缁勪欢
+ /// </summary>
+ [Description("缁勪欢")]
+ COMPONENT = 1,
+
+ /// <summary>
+ /// 鍐呴摼
+ /// </summary>
+ [Description("鍐呴摼")]
+ INNER = 2,
+
+ /// <summary>
+ /// 澶栭摼
+ /// </summary>
+ [Description("澶栭摼")]
+ OUTER = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs
new file mode 100644
index 0000000..b6c1cb6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuType.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鑿滃崟绫诲瀷
+ /// </summary>
+ public enum MenuType
+ {
+ /// <summary>
+ /// 鐩綍
+ /// </summary>
+ [Description("鐩綍")]
+ DIR = 0,
+
+ /// <summary>
+ /// 鑿滃崟
+ /// </summary>
+ [Description("鑿滃崟")]
+ MENU = 1,
+
+ /// <summary>
+ /// 鎸夐挳
+ /// </summary>
+ [Description("鎸夐挳")]
+ BTN = 2
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs
new file mode 100644
index 0000000..9baeb33
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MenuWeight.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鑿滃崟鏉冮噸
+ /// </summary>
+ public enum MenuWeight
+ {
+ /// <summary>
+ /// 绯荤粺鏉冮噸
+ /// </summary>
+ [Description("绯荤粺鏉冮噸")]
+ SUPER_ADMIN_WEIGHT = 1,
+
+ /// <summary>
+ /// 涓氬姟鏉冮噸
+ /// </summary>
+ [Description("涓氬姟鏉冮噸")]
+ DEFAULT_WEIGHT = 2
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs
new file mode 100644
index 0000000..4ccfd48
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/MessageType.cs
@@ -0,0 +1,31 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ public enum MessageType
+ {
+ /// <summary>
+ /// 鏅�氫俊鎭�
+ /// </summary>
+ [Description("娑堟伅")]
+ Info = 0,
+
+ /// <summary>
+ /// 鎴愬姛鎻愮ず
+ /// </summary>
+ [Description("鎴愬姛")]
+ Success = 1,
+
+ /// <summary>
+ /// 璀﹀憡鎻愮ず
+ /// </summary>
+ [Description("璀﹀憡")]
+ Warning = 2,
+
+ /// <summary>
+ /// 閿欒鎻愮ず
+ /// </summary>
+ [Description("閿欒")]
+ Error = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs
new file mode 100644
index 0000000..f6f8b73
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeStatus.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鐘舵��
+ /// </summary>
+ public enum NoticeStatus
+ {
+ /// <summary>
+ /// 鑽夌
+ /// </summary>
+ [Description("鑽夌")]
+ DRAFT = 0,
+
+ /// <summary>
+ /// 鍙戝竷
+ /// </summary>
+ [Description("鍙戝竷")]
+ PUBLIC = 1,
+
+ /// <summary>
+ /// 鎾ゅ洖
+ /// </summary>
+ [Description("鎾ゅ洖")]
+ CANCEL = 2,
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ [Description("鍒犻櫎")]
+ DELETED = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs
new file mode 100644
index 0000000..4057a4b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeType.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ public enum NoticeType
+ {
+ /// <summary>
+ /// 閫氱煡
+ /// </summary>
+ [Description("閫氱煡")]
+ NOTICE = 1,
+
+ /// <summary>
+ /// 鍏憡
+ /// </summary>
+ [Description("鍏憡")]
+ ANNOUNCEMENT = 2,
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs
new file mode 100644
index 0000000..906cf06
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/NoticeUserStatus.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫氱煡鍏憡鐢ㄦ埛鐘舵��
+ /// </summary>
+ public enum NoticeUserStatus
+ {
+ /// <summary>
+ /// 鏈
+ /// </summary>
+ [Description("鏈")]
+ UNREAD = 0,
+
+ /// <summary>
+ /// 宸茶
+ /// </summary>
+ [Description("宸茶")]
+ READ = 1,
+
+ /// <summary>
+ /// 鏆備笉閫氱煡
+ /// </summary>
+ [Description("鏆備笉閫氱煡")]
+ NONOTICE = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs
new file mode 100644
index 0000000..c494436
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/QueryTypeEnum.cs
@@ -0,0 +1,82 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏌ヨ绫诲瀷鏋氫妇
+ /// </summary>
+ public enum QueryTypeEnum
+ {
+ /// <summary>
+ /// 绛変簬
+ /// </summary>
+ [Description("绛変簬")]
+ Equals = 0,
+
+ /// <summary>
+ /// 涓嶇瓑浜�
+ /// </summary>
+ [Description("涓嶇瓑浜�")]
+ NotEquals = 1,
+
+ /// <summary>
+ /// 澶т簬
+ /// </summary>
+ [Description("澶т簬")]
+ GreaterThan = 2,
+
+ /// <summary>
+ /// 澶т簬绛変簬
+ /// </summary>
+ [Description("澶т簬绛変簬")]
+ GreaterThanOrEquals = 3,
+
+ /// <summary>
+ /// 灏忎簬
+ /// </summary>
+ [Description("灏忎簬")]
+ LessThan = 4,
+
+ /// <summary>
+ /// 灏忎簬绛変簬
+ /// </summary>
+ [Description("灏忎簬绛変簬")]
+ LessThanOrEquals = 5,
+
+ /// <summary>
+ /// 鍦ㄥ垪琛ㄤ腑
+ /// </summary>
+ [Description("鍦ㄥ垪琛ㄤ腑")]
+ StdIn = 6,
+
+ /// <summary>
+ /// 涓嶅湪鍒楄〃涓�
+ /// </summary>
+ [Description("涓嶅湪鍒楄〃涓�")]
+ StdNotIn = 7,
+
+ /// <summary>
+ /// 鍖呭惈
+ /// </summary>
+ [Description("鍖呭惈")]
+ Contains = 8,
+
+ /// <summary>
+ /// 涓嶅寘鍚�
+ /// </summary>
+ [Description("涓嶅寘鍚�")]
+ NotContains = 9,
+
+ /// <summary>
+ /// 澶撮儴鍖呭惈
+ /// </summary>
+ [Description("澶撮儴鍖呭惈")]
+ StartsWith = 10,
+
+ /// <summary>
+ /// 灏鹃儴鍖呭惈
+ /// </summary>
+ [Description("灏鹃儴鍖呭惈")]
+ EndsWith = 11
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs
new file mode 100644
index 0000000..d106452
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RequestTypeEnum.cs
@@ -0,0 +1,33 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// http璇锋眰绫诲瀷
+ /// </summary>
+ public enum RequestTypeEnum
+ {
+ /// <summary>
+ /// 鎵ц鍐呴儴鏂规硶
+ /// </summary>
+ Run = 0,
+
+ /// <summary>
+ /// GET璇锋眰
+ /// </summary>
+ Get = 1,
+
+ /// <summary>
+ /// POST璇锋眰
+ /// </summary>
+ Post = 2,
+
+ /// <summary>
+ /// PUT璇锋眰
+ /// </summary>
+ Put = 3,
+
+ /// <summary>
+ /// DELETE璇锋眰
+ /// </summary>
+ Delete = 4
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs
new file mode 100644
index 0000000..214fa9f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/RoleTypeEnum.cs
@@ -0,0 +1,28 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瑙掕壊绫诲瀷
+ /// </summary>
+ public enum RoleTypeEnum
+ {
+ /// <summary>
+ /// 闆嗗洟瑙掕壊
+ /// </summary>
+ [Description("闆嗗洟瑙掕壊")]
+ GROUP = 1,
+
+ /// <summary>
+ /// 鍔犵洘鍟嗚鑹�
+ /// </summary>
+ [Description("鍔犵洘鍟嗚鑹�")]
+ JOIN = 2,
+
+ /// <summary>
+ /// 闂ㄥ簵瑙掕壊
+ /// </summary>
+ [Description("闂ㄥ簵瑙掕壊")]
+ STORE = 3
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs
new file mode 100644
index 0000000..1e88415
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/BlankingProductionLineEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 涓嬫枡浜х嚎鏋氫妇
+ /// </summary>
+ public enum BlankingProductionLineEnum
+ {
+ /// <summary>
+ /// 鍙戞场涓�绾�
+ /// </summary>
+ [Description("鍙戞场涓�绾�")]
+ FAPAOYIXIAN = 1,
+
+ /// <summary>
+ /// 鍙戞场浜岀嚎
+ /// </summary>
+ [Description("鍙戞场浜岀嚎")]
+ FAPAOERXIAN = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs
new file mode 100644
index 0000000..7c73a37
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/DodeviceType.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璁惧绫诲瀷
+ /// </summary>
+ public enum DodeviceType
+ {
+ /// <summary>
+ /// AGV
+ /// </summary>
+ [Description("AGV")]
+ AGV = 1,
+
+ /// <summary>
+ /// 鍫嗗灈鏈�
+ /// </summary>
+ [Description("鍫嗗灈鏈�")]
+ DUIDUOJI = 2,
+
+ /// <summary>
+ /// RGV
+ /// </summary>
+ [Description("RGV")]
+ RGV = 3,
+
+ /// <summary>
+ /// 杈撻�佺嚎
+ /// </summary>
+ [Description("SSX")]
+ SSX = 4
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs
new file mode 100644
index 0000000..09450ec
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDetailsStatusEnum.cs
@@ -0,0 +1,34 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁鏄庣粏琛ㄧ姸鎬佹灇涓�
+ /// </summary>
+ public enum OrderDetailsStatusEnum
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WEIZHIXING = 1,
+
+ /// <summary>
+ /// 鎵ц涓�
+ /// </summary>
+ [Description("鎵ц涓�")]
+ ZHIXINGZHONG = 2,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 3,
+
+ /// <summary>
+ /// 寮哄埗瀹屾垚
+ /// </summary>
+ [Description("寮哄埗瀹屾垚")]
+ QIANGZHIWANCHENG = 4
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs
new file mode 100644
index 0000000..d0556d8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderDistributeTypeEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁涓嬪彂绫诲瀷-鍏ㄨ嚜鍔紱鍗婅嚜鍔�
+ /// </summary>
+ public enum OrderDistributeTypeEnum
+ {
+ /// <summary>
+ /// 鍏ㄨ嚜鍔�
+ /// </summary>
+ [Description("鍏ㄨ嚜鍔�")]
+ QUANZIDONG = 1,
+
+ /// <summary>
+ /// 鍗婅嚜鍔�
+ /// </summary>
+ [Description("鍗婅嚜鍔�")]
+ BANZIDONG = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs
new file mode 100644
index 0000000..06d9182
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/OrderStatusEnum.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍗曟嵁涓昏〃鐘舵�佹灇涓�
+ /// </summary>
+ public enum OrderStatusEnum
+ {
+ /// <summary>
+ /// 鏈笅鍙�
+ /// </summary>
+ [Description("鏈笅鍙�")]
+ WEIXIAFA = 1,
+
+ /// <summary>
+ /// 宸蹭笅鍙�
+ /// </summary>
+ [Description("宸蹭笅鍙�")]
+ YIXIAFA = 2,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 3,
+
+ /// <summary>
+ /// 鎾ゅ洖
+ /// </summary>
+ [Description("鎾ゅ洖")]
+ CHEHUI = 4,
+
+ /// <summary>
+ /// 鍙栨秷
+ /// </summary>
+ [Description("鍙栨秷")]
+ QUXIAO = 5
+ }
+
+ /// <summary>
+ /// 閲囪喘鍗曚富琛ㄨ鍗曠姸鎬佹灇涓�
+ /// </summary>
+ public enum PurchaseOrderStatusEnum
+ {
+ /// <summary>
+ /// 鏈紑濮�
+ /// </summary>
+ [Description("鏈紑濮�")]
+ WEIKAISHI = 1,
+
+ /// <summary>
+ /// 閮ㄥ垎鍙戣揣
+ /// </summary>
+ [Description("閮ㄥ垎鍙戣揣")]
+ BUFENFAHUO = 2,
+
+ /// <summary>
+ /// 鍏ㄩ儴鍙戣揣
+ /// </summary>
+ [Description("鍏ㄩ儴鍙戣揣")]
+ CHEHUI = 3,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 4
+ }
+
+ /// <summary>
+ /// 閲囪喘鏀惰揣涓昏〃璁㈠崟鐘舵�佹灇涓�
+ /// </summary>
+ public enum PurchaseReceiveOrderEnum
+ {
+ /// <summary>
+ /// 寰呮敹璐�
+ /// </summary>
+ [Description("寰呮敹璐�")]
+ DAISHOUHUO = 1,
+
+ /// <summary>
+ /// 閮ㄥ垎鏀惰揣
+ /// </summary>
+ [Description("閮ㄥ垎鏀惰揣")]
+ BUFENSHOUHUO = 2,
+
+ /// <summary>
+ /// 鏀惰揣瀹屾垚
+ /// </summary>
+ [Description("鏀惰揣瀹屾垚")]
+ SHWANCHENG = 3,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs
new file mode 100644
index 0000000..e80391e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/RuKuSourceEnum.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍏ュ簱鏉ユ簮
+ /// </summary>
+ public enum RuKuSourceEnum
+ {
+ /// <summary>
+ /// 绌烘墭
+ /// </summary>
+ [Description("绌烘墭")]
+ KONGTUO =1,
+ /// <summary>
+ /// 鐗╂枡
+ /// </summary>
+ [Description("鐗╂枡")]
+ WULIAO =2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs
new file mode 100644
index 0000000..60610dc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/SortStatusEnum.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍒嗘嫞鍗曠姸鎬�
+ /// </summary>
+ public enum SortStatusEnum
+ {
+
+ /// <summary>
+ /// 鏈垎鎷�
+ /// </summary>
+ [Description("鏈垎鎷�")]
+ WEIFENJIAN = 1,
+
+ /// <summary>
+ /// 鍒嗘嫞涓�
+ /// </summary>
+ [Description("鍒嗘嫞涓�")]
+ FENJIANZHONG = 2,
+
+ /// <summary>
+ /// 鍒嗘嫞瀹屾垚
+ /// </summary>
+ [Description("鍒嗘嫞瀹屾垚")]
+ FENJIANWANCHENG = 3,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs
new file mode 100644
index 0000000..947f66c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WarehouseEntranceEnum.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳彛绫诲瀷鏋氫妇
+ /// </summary>
+ public enum WarehouseEntranceEnum
+ {
+ /// <summary>
+ /// 鍏ュ簱鍙�
+ /// </summary>
+ [Description("鍏ュ簱鍙�")]
+ RUKUKOU = 1,
+
+ /// <summary>
+ /// 鍑哄簱鍙�
+ /// </summary>
+ [Description("鍑哄簱鍙�")]
+ CHUKUKOU = 2,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs
new file mode 100644
index 0000000..ea0cecc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsAreaEnum.cs
@@ -0,0 +1,99 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 搴撳尯绫诲瀷
+ /// </summary>
+ public enum AreaType
+ {
+ /// <summary>
+ /// 绔嬩綋搴�
+ /// </summary>
+ [Description("绔嬩綋搴�")]
+ LITIKU = 1,
+
+ /// <summary>
+ /// 鏅�氬簱
+ /// </summary>
+ [Description("鏅�氬簱")]
+ PUTONGK = 2,
+
+ /// <summary>
+ /// 鍏叡搴�
+ /// </summary>
+ [Description("澶栧簱")]
+ WAIKU = 3,
+
+ /// <summary>
+ /// 缂撳瓨搴�
+ /// </summary>
+ [Description("缂撳瓨搴�")]
+ HUANCUNKU = 4,
+
+ /// <summary>
+ /// AGV绔欑偣
+ /// </summary>
+ [Description("AGV绔欑偣")]
+ AGV = 5,
+ /// <summary>
+ /// 杞Щ搴�
+ /// </summary>
+ [Description("杞Щ搴�")]
+ ZHUANYIKU = 6
+ }
+
+ /// <summary>
+ /// 搴撲綅鐘舵��
+ /// </summary>
+ public enum PlaceStatus
+ {
+ /// <summary>
+ /// 绌洪棽
+ /// </summary>
+ [Description("绌洪棽")]
+ KONGXIAN = 1,
+
+ /// <summary>
+ /// 寰呭叆
+ /// </summary>
+ [Description("寰呭叆")]
+ DAIRU = 2,
+
+ /// <summary>
+ /// 瀛樿揣
+ /// </summary>
+ [Description("瀛樿揣")]
+ CUNHUO = 3,
+
+ /// <summary>
+ /// 寰呭嚭
+ /// </summary>
+ [Description("寰呭嚭")]
+ DAICHU = 4,
+ }
+
+ /// <summary>
+ /// 搴撲綅楂樺害灞炴��
+ /// </summary>
+ public enum Heightlevel
+ {
+ /// <summary>
+ /// 浣�
+ /// </summary>
+ [Description("浣�")]
+ DI = 1,
+
+ /// <summary>
+ /// 涓�
+ /// </summary>
+ [Description("涓�")]
+ ZHONG = 2,
+
+ /// <summary>
+ /// 楂�
+ /// </summary>
+ [Description("楂�")]
+ GAO = 3
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs
new file mode 100644
index 0000000..359be34
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsContainerEnum.cs
@@ -0,0 +1,112 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎵樼洏绫诲瀷
+ /// </summary>
+ public enum ContainerType
+ {
+ /// <summary>
+ /// 鍏朵粬
+ /// </summary>
+ [Description("鍏朵粬")]
+ QITA = 0,
+
+ /// <summary>
+ /// 鏈ㄨ川
+ /// </summary>
+ [Description("鏈ㄨ川")]
+ MUZHI = 1,
+
+ /// <summary>
+ /// 閲戝睘
+ /// </summary>
+ [Description("閲戝睘")]
+ JINSHU = 2,
+
+ /// <summary>
+ /// 濉戞枡
+ /// </summary>
+ [Description("濉戞枡")]
+ SULIAO = 3
+ }
+
+ /// <summary>
+ /// 鎵樼洏鐘舵��
+ /// </summary>
+ public enum ContainerStatus
+ {
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ [Description("绂佺敤")]
+ JINYONG = 0,
+
+ /// <summary>
+ /// 绌洪棽
+ /// </summary>
+ [Description("绌洪棽")]
+ KOUXIAN = 1,
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ [Description("缁勭洏")]
+ ZUPANG = 2,
+
+ /// <summary>
+ /// 搴撲綅
+ /// </summary>
+ [Description("搴撲綅")]
+ KUWEI = 3,
+
+ /// <summary>
+ /// 鍒嗘嫞
+ /// </summary>
+ [Description("鍒嗘嫞")]
+ FENJIAN =4
+ }
+
+ /// <summary>
+ /// 鎵樼洏鍒嗙被
+ /// </summary>
+ public enum ContainerCategory
+ {
+ /// <summary>
+ /// 閫氱敤
+ /// </summary>
+ [Description("閫氱敤")]
+ TY = 0,
+
+ /// <summary>
+ /// 鍗卞寲鍝�
+ /// </summary>
+ [Description("鍗卞寲鍝�")]
+ WXP = 1,
+
+ /// <summary>
+ /// 娑蹭綋
+ /// </summary>
+ [Description("娑蹭綋")]
+ YT = 2,
+
+ /// <summary>
+ /// 璐甸噸鍝�
+ /// </summary>
+ [Description("璐甸噸鍝�")]
+ GZP = 3,
+
+ /// <summary>
+ /// 姘斾綋
+ /// </summary>
+ [Description("姘斾綋")]
+ QT = 4,
+
+ /// <summary>
+ /// 浣庢俯
+ /// </summary>
+ [Description("浣庢俯")]
+ DW = 5
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs
new file mode 100644
index 0000000..7ffd97b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsMaterialEnum.cs
@@ -0,0 +1,142 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鐗╂枡妫�楠�
+ /// </summary>
+ public enum MaterialInspection
+ {
+ /// <summary>
+ /// 鍏嶆
+ /// </summary>
+ [Description("鍏嶆")]
+ MIANJIAN = 1,
+
+ /// <summary>
+ /// 鎶芥
+ /// </summary>
+ [Description("鎶芥")]
+ CHOUJIAN = 2
+ }
+
+ /// <summary>
+ /// 鐗╂枡绫诲埆
+ /// </summary>
+ public enum MaterialType
+ {
+ /// <summary>
+ /// 鍘熸潗鏂�
+ /// </summary>
+ [Description("鍘熸潗鏂�")]
+ YUANCAILIAO = 1,
+
+ /// <summary>
+ /// 鍗婃垚鍝�
+ /// </summary>
+ [Description("鍗婃垚鍝�")]
+ BANCHENGPING = 2,
+
+ /// <summary>
+ /// 鎴愬搧
+ /// </summary>
+ [Description("鎴愬搧")]
+ CHENGPING = 3,
+
+ /// <summary>
+ /// 鏍囧噯浜у搧
+ /// </summary>
+ [Description("鏍囧噯浜у搧")]
+ BIAOZHUANCHANPIN = 4,
+
+ /// <summary>
+ /// 鍖呰鏉愭枡
+ /// </summary>
+ [Description("鍖呰鏉愭枡")]
+ BAOZHUANGCAILIAO = 5,
+
+ /// <summary>
+ /// 杈呭姪鏉愭枡
+ /// </summary>
+ [Description("鍖呰鏉愭枡")]
+ FUZHUCAILIAO = 6,
+
+ /// <summary>
+ /// 宸ラ噺鍏�
+ /// </summary>
+ [Description("宸ラ噺鍏�")]
+ GONGLIANGJU = 7,
+
+ /// <summary>
+ /// 绌烘墭
+ /// </summary>
+ [Description("绌烘墭")]
+ KONGTUO = 8,
+
+ /// <summary>
+ /// 娉℃搏
+ /// </summary>
+ [Description("娉℃搏")]
+ PAOMO = 9,
+
+ /// <summary>
+ /// 鑳跺悎鏉�
+ /// </summary>
+ [Description("鑳跺悎鏉�")]
+ JIAOHEBAN = 10,
+
+ /// <summary>
+ /// 涓绘澘
+ /// </summary>
+ [Description("涓绘澘")]
+ ZHUBAN = 11,
+
+ /// <summary>
+ /// RSB
+ /// </summary>
+ [Description("RSB")]
+ RSB = 12,
+ }
+
+ /// <summary>
+ /// 鍗曚綅绫诲埆
+ /// </summary>
+ public enum UnitType
+ {
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ [Description("鏁伴噺")]
+ SHULIANG = 0,
+
+ /// <summary>
+ /// 闀垮害
+ /// </summary>
+ [Description("闀垮害")]
+ CHANGDU = 1,
+
+ /// <summary>
+ /// 閲嶉噺
+ /// </summary>
+ [Description("閲嶉噺")]
+ ZHONGLIANG = 2
+ }
+
+ /// <summary>
+ /// 鍗曚綅缂栧彿
+ /// </summary>
+ public enum UnitNoType
+ {
+ /// <summary>
+ /// cm
+ /// </summary>
+ [Description("cm")]
+ CM = 1,
+
+ /// <summary>
+ /// t
+ /// </summary>
+ [Description("T")]
+ T = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs
new file mode 100644
index 0000000..0dd7678
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/Wms/WmsTaskEnum.cs
@@ -0,0 +1,327 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浠诲姟鍖哄煙
+ /// </summary>
+ public enum TaskArea
+ {
+ /// <summary>
+ /// 涓�妤�
+ /// </summary>
+ [Description("涓�妤�")]
+ YILOU = 1,
+
+ /// <summary>
+ /// 浜屾ゼ
+ /// </summary>
+ [Description("浜屾ゼ")]
+ ERLOU = 2
+ }
+
+ /// <summary>
+ /// 鐔熷寲搴撲换鍔℃柟寮�
+ /// </summary>
+ public enum TaskModel
+ {
+ /// <summary>
+ /// 鎵嬪姩
+ /// </summary>
+ [Description("鎵嬪姩")]
+ SHOUDONG = 1,
+
+ /// <summary>
+ /// 鍏ㄨ嚜鍔�
+ /// </summary>
+ [Description("鍏ㄨ嚜鍔�")]
+ QUANZIDONG = 2,
+
+ /// <summary>
+ /// 鍗婅嚜鍔�
+ /// </summary>
+ [Description("鍗婅嚜鍔�")]
+ BANZIDONG = 3,
+ }
+
+ /// <summary>
+ /// 缁勮搴撲换鍔℃柟寮�
+ /// </summary>
+ public enum AssembleTaskModel
+ {
+ /// <summary>
+ /// 鎵嬪姩
+ /// </summary>
+ [Description("鎵嬪姩")]
+ SHOUDONG = 1,
+
+ /// <summary>
+ /// 鍏ㄨ嚜鍔�
+ /// </summary>
+ [Description("鍏ㄨ嚜鍔�")]
+ QUANZIDONG = 2
+ }
+
+ /// <summary>
+ /// 浠诲姟绫诲瀷
+ /// </summary>
+ public enum TaskType
+ {
+ /// <summary>
+ /// 鍏ュ簱
+ /// </summary>
+ [Description("鍏ュ簱")]
+ RUKU = 1,
+
+ /// <summary>
+ /// 鍑哄簱
+ /// </summary>
+ [Description("鍑哄簱")]
+ CHUKU = 2,
+
+ /// <summary>
+ /// 绉诲簱
+ /// </summary>
+ [Description("绉诲簱")]
+ YIKU = 3,
+
+ /// <summary>
+ /// 鎼繍
+ /// </summary>
+ [Description("鎼繍")]
+ BAIYUN =4
+ }
+
+ /// <summary>
+ /// 浠诲姟鐘舵��
+ /// </summary>
+ public enum TaskStatusEnum
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WEIZHIXING = 1,
+
+ /// <summary>
+ /// 鎵ц涓�
+ /// </summary>
+ [Description("鎵ц涓�")]
+ ZHIXINGZHONG = 2,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WANCHENG = 3,
+
+ /// <summary>
+ /// 鍙栨秷
+ /// </summary>
+ [Description("鍙栨秷")]
+ QUXIAO = 4,
+
+ /// <summary>
+ /// 鏆傚仠
+ /// </summary>
+ [Description("鏆傚仠")]
+ ZANTING = 5,
+
+ /// <summary>
+ /// 鎾ゅ洖
+ /// </summary>
+ [Description("鎾ゅ洖")]
+ CHEHUI = 6,
+
+ /// <summary>
+ /// 寰呮墽琛�
+ /// </summary>
+ [Description("寰呮墽琛�")]
+ DAIZHIXING =7
+ }
+
+ /// <summary>
+ /// 浠诲姟璁惧鐘舵��
+ /// </summary>
+ public enum TaskDodeviceStatusEnum
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WZX= 1,
+
+ /// <summary>
+ /// AGV鎵ц
+ /// </summary>
+ [Description("AGV鎵ц")]
+ ZX_AGV = 2,
+
+ /// <summary>
+ /// AGV瀹屾垚
+ /// </summary>
+ [Description("AGV瀹屾垚")]
+ WC_AGV = 3,
+
+ /// <summary>
+ /// 鍏ュ簱杈撻�佺嚎-鎵ц
+ /// </summary>
+ [Description("鍏ュ簱杈撻�佺嚎-鎵ц")]
+ ZX_RSSX = 4,
+
+ /// <summary>
+ /// 鍏ュ簱杈撻�佺嚎-瀹屾垚
+ /// </summary>
+ [Description("鍏ュ簱杈撻�佺嚎-瀹屾垚")]
+ WC_RSSX = 5,
+
+ /// <summary>
+ /// 鍫嗗灈鏈�-鎵ц
+ /// </summary>
+ [Description("鍫嗗灈鏈�-鎵ц")]
+ ZX_DDJ = 6,
+
+ /// <summary>
+ /// 鍫嗗灈鏈�-瀹屾垚
+ /// </summary>
+ [Description("鍫嗗灈鏈�-瀹屾垚")]
+ WC_DDJ = 7,
+
+ /// <summary>
+ /// 鍑哄簱杈撻�佺嚎-鎵ц
+ /// </summary>
+ [Description("鍑哄簱杈撻�佺嚎-鎵ц")]
+ ZX_CSSX = 8,
+
+ /// <summary>
+ /// 鍑哄簱杈撻�佺嚎-瀹屾垚
+ /// </summary>
+ [Description("鍑哄簱杈撻�佺嚎-瀹屾垚")]
+ WC_CSSX = 9,
+
+
+ /// <summary>
+ /// RGV-鎵ц
+ /// </summary>
+ [Description("RGV-鎵ц")]
+ ZX_RGV = 10,
+
+ /// <summary>
+ /// RGV-瀹屾垚
+ /// </summary>
+ [Description("RGV-瀹屾垚")]
+ WC_RGV = 11,
+
+ /// <summary>
+ /// 绛夊緟
+ /// </summary>
+ [Description("绛夊緟")]
+ DD = 12,
+
+ /// <summary>
+ /// 瀹屾垚
+ /// </summary>
+ [Description("瀹屾垚")]
+ WC = 13,
+
+ /// <summary>
+ /// 鏃�
+ /// </summary>
+ [Description("鏃�")]
+ W = 14,
+
+ /// <summary>
+ /// 鍏ュ簱绉伴噸
+ /// </summary>
+ [Description("鍏ュ簱绉伴噸")]
+ ZX_RKCZ=15
+
+
+ }
+
+ /// <summary>
+ /// AGV浠诲姟璁惧鐘舵��
+ /// </summary>
+ public enum AGVTaskDodeviceStatusEnum
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WZX = 1,
+
+ /// <summary>
+ /// 1-AGV鎵ц
+ /// </summary>
+ [Description("1-AGV鎵ц")]
+ ZX_AGVONE = 2,
+
+ /// <summary>
+ /// 1-AGV瀹屾垚
+ /// </summary>
+ [Description("1-AGV瀹屾垚")]
+ WC_AGVONE = 3,
+
+ /// <summary>
+ /// 2-AGV鎵ц
+ /// </summary>
+ [Description("2-AGV鎵ц")]
+ ZX_AGVTWO = 4,
+
+ /// <summary>
+ /// 2-AGV瀹屾垚
+ /// </summary>
+ [Description("2-AGV瀹屾垚")]
+ WC_AGVTWO = 5,
+
+ /// <summary>
+ /// 鏃�
+ /// </summary>
+ [Description("鏃�")]
+ W = 6
+ }
+
+ /// <summary>
+ /// 缁勮杞﹂棿浠诲姟璁惧鐘舵��
+ /// </summary>
+ public enum TaskAssembleDodeviceStatusEnum
+ {
+ /// <summary>
+ /// 鏈墽琛�
+ /// </summary>
+ [Description("鏈墽琛�")]
+ WZX = 1,
+
+ /// <summary>
+ /// 鎻愬崌鏈烘墽琛�
+ /// </summary>
+ [Description("鎻愬崌鏈烘墽琛�")]
+ ZX_TXJ = 2,
+
+ /// <summary>
+ /// 鎻愬崌鏈哄畬鎴�
+ /// </summary>
+ [Description("鎻愬崌鏈哄畬鎴�")]
+ WC_TXJ = 3,
+
+ /// <summary>
+ /// 鏃�
+ /// </summary>
+ [Description("鏃�")]
+ W = 4,
+
+ /// <summary>
+ /// AGV鎵ц
+ /// </summary>
+ [Description("AGV鎵ц")]
+ ZX_AGV = 5,
+
+ /// <summary>
+ /// AGV瀹屾垚
+ /// </summary>
+ [Description("AGV瀹屾垚")]
+ WC_AGV = 6
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs
new file mode 100644
index 0000000..ae7062a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/YesOrNot.cs
@@ -0,0 +1,22 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏄惁
+ /// </summary>
+ public enum YesOrNot
+ {
+ /// <summary>
+ /// 鏄�
+ /// </summary>
+ [Description("鏄�")]
+ Y = 1,
+
+ /// <summary>
+ /// 鍚�
+ /// </summary>
+ [Description("鍚�")]
+ N = 0
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs
new file mode 100644
index 0000000..7f5d6a6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/GoodsReturnStatus.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫�璐х姸鎬�
+ /// </summary>
+ public enum GoodsReturnStatus
+ {
+ /// <summary>
+ /// 鏈��璐�
+ /// </summary>
+ WEITUIHUO = 1,
+ /// <summary>
+ /// 閫�璐т腑
+ /// </summary>
+ TUIHUOZHONG = 2,
+ /// <summary>
+ /// 宸查��璐�
+ /// </summary>
+ YITUIHUO = 3
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs
new file mode 100644
index 0000000..66c4ead
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionResultsEnum.cs
@@ -0,0 +1,27 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 妫�楠岀粨鏋�
+ /// </summary>
+ public enum InspectionResultsEnum
+ {
+ /// <summary>
+ /// 鏈楠�
+ /// </summary>
+ WEIJIANYAN = 1,
+ /// <summary>
+ /// 鍚堟牸
+ /// </summary>
+ HEGE = 2,
+ /// <summary>
+ /// 涓嶅悎鏍�
+ /// </summary>
+ BUHEGE = 3,
+ /// <summary>
+ /// 甯︽剰瑙佹帴鏀�
+ /// </summary>
+ DAIYIJIANJIESHOU = 4
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs
new file mode 100644
index 0000000..7da1d8b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/InspectionStatus.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鎶ユ鐘舵��
+ /// </summary>
+ public enum InspectionStatus
+ {
+ /// <summary>
+ /// 鏈姤妫�
+ /// </summary>
+ WEIBAOJIAN = 1,
+ /// <summary>
+ /// 宸叉姤妫�
+ /// </summary>
+ YIBAOJIAN = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs
new file mode 100644
index 0000000..a0aafb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/Merchantinfo.cs
@@ -0,0 +1,41 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍟嗗鍒嗙被
+ /// </summary>
+ public enum MerchantType
+ {
+ /// <summary>
+ /// 瀹㈠晢
+ /// </summary>
+ GuestConsult = 1,
+ /// <summary>
+ /// 渚涘簲鍟�
+ /// </summary>
+ Supplier = 2,
+ /// <summary>
+ /// 瀹㈡埛
+ /// </summary>
+ Customers = 3
+ }
+ /// <summary>
+ /// 鍟嗗绛夌骇
+ /// </summary>
+ public enum MerchantGrade
+ {
+ /// <summary>
+ /// 涓�绾�
+ /// </summary>
+ YIJI = 1,
+ /// <summary>
+ /// 浜岀骇
+ /// </summary>
+ ERJI = 2,
+ /// <summary>
+ /// 涓夌骇
+ /// </summary>
+ SANJI = 3
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs
new file mode 100644
index 0000000..37ad02c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/MoveType.cs
@@ -0,0 +1,19 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浜嬪姟绫诲瀷
+ /// </summary>
+ public enum MoveType
+ {
+ /// <summary>
+ /// 鐢熶骇棰嗘枡:Z221
+ /// </summary>
+ SHENGCHANLINGLIAO = 1,
+ /// <summary>
+ /// 閿�鍞鏂欙細Z201
+ /// </summary>
+ XIAOSHOULINGLIAO = 2
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs
new file mode 100644
index 0000000..cb4e1d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/ReceivingStatus.cs
@@ -0,0 +1,23 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏀惰揣鐘舵��
+ /// </summary>
+ public enum ReceivingStatus
+ {
+ /// <summary>
+ /// 鏈敹璐�
+ /// </summary>
+ WEISHOUHUO = 1,
+ /// <summary>
+ /// 鏀惰揣涓�
+ /// </summary>
+ SHOUHUOZHONG = 2,
+ /// <summary>
+ /// 宸叉敹璐�
+ /// </summary>
+ YISHOUHUO = 3
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs
new file mode 100644
index 0000000..3c8044b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Enum/zhaoshang/TradeMode.cs
@@ -0,0 +1,94 @@
+锘縰sing System.ComponentModel;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璐告槗鏂瑰紡
+ /// </summary>
+ public enum TradeMode
+ {
+ /// <summary>
+ /// 鍥戒骇
+ /// </summary>
+ [Description("鍥戒骇")]
+ GUOCHAN = 1,
+
+ /// <summary>
+ /// 杩涙枡瀵瑰彛
+ /// </summary>
+ [Description("杩涙枡瀵瑰彛")]
+ JINLIAODUIKOU = 2,
+
+ /// <summary>
+ /// 涓�鑸锤鏄�
+ /// </summary>
+ [Description("涓�鑸锤鏄�")]
+ YIBANMAOYI = 3,
+
+ /// <summary>
+ /// 鍏朵粬杩涘嚭鍙e厤璐�
+ /// </summary>
+ [Description("鍏朵粬杩涘嚭鍙e厤璐�")]
+ QITAJINCHUKOUMIANFEI = 4,
+
+ /// <summary>
+ /// 淇悊鐗╁搧
+ /// </summary>
+ [Description("淇悊鐗╁搧")]
+ XIULIWUPIN = 5,
+
+ /// <summary>
+ ///杩涙枡鏂欎欢鍐呴攢
+ /// </summary>
+ [Description("杩涙枡鏂欎欢鍐呴攢")]
+ JINLIAOLIAOJIANNEIXIAO = 6,
+
+ /// <summary>
+ ///璐ф牱骞垮憡鍝�
+ /// </summary>
+ [Description("璐ф牱骞垮憡鍝�")]
+ HUOYANGGUANGGAOPIN = 7,
+
+ /// <summary>
+ ///杩涙枡杈硅鏂欏唴閿�
+ /// </summary>
+ [Description("杩涙枡杈硅鏂欏唴閿�")]
+ JINLIAOBIANJIAOLIAONEIXIAO = 8,
+
+ /// <summary>
+ ///杩涙枡浣欐枡缁撹浆
+ /// </summary>
+ [Description("杩涙枡浣欐枡缁撹浆")]
+ JINLIAOYULIAOJIEZHUAN = 9,
+
+ /// <summary>
+ ///杩涙枡娣卞姞宸�
+ /// </summary>
+ [Description("杩涙枡娣卞姞宸�")]
+ JINLIAOSHENJIAOGONG = 10,
+
+ /// <summary>
+ ///淇濈◣浠撳簱璐х墿
+ /// </summary>
+ [Description("淇濈◣浠撳簱璐х墿")]
+ BAOSHUICANGKUHUOWU = 11,
+
+ /// <summary>
+ ///杩涙枡鏂欎欢閫�杩�
+ /// </summary>
+ [Description("杩涙枡鏂欎欢閫�杩�")]
+ JINLIAOLIAOJIANTUIHUAN = 12,
+
+ /// <summary>
+ ///鏆傛椂杩涘嚭璐х墿
+ /// </summary>
+ [Description("鏆傛椂杩涘嚭璐х墿")]
+ ZANSHIJINCHUHUOWU = 13,
+
+ /// <summary>
+ ///杩涙枡鏂欎欢澶嶅嚭
+ /// </summary>
+ [Description("杩涙枡鏂欎欢澶嶅嚭")]
+ JINLIAOLIAOJIANFUCHU = 14,
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs
new file mode 100644
index 0000000..37a815b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/EventSubscriber/LogEventSubscriber.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.EventBus;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Core
+{
+ public class LogEventSubscriber : IEventSubscriber
+ {
+ public IServiceProvider Services { get; }
+
+ public LogEventSubscriber(IServiceProvider services)
+ {
+ Services = services;
+ }
+
+ [EventSubscribe("Create:OpLog")]
+ public async Task CreateOpLog(EventHandlerExecutingContext context)
+ {
+ using var scope = Services.CreateScope();
+ var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogOp>>();
+ var log = (SysLogOp)context.Source.Payload;
+ await _repository.InsertNowAsync(log);
+ }
+
+ [EventSubscribe("Create:ExLog")]
+ public async Task CreateExLog(EventHandlerExecutingContext context)
+ {
+ using var scope = Services.CreateScope();
+ var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogEx>>();
+ var log = (SysLogEx)context.Source.Payload;
+ await _repository.InsertNowAsync(log);
+ }
+
+ [EventSubscribe("Create:VisLog")]
+ public async Task CreateVisLog(EventHandlerExecutingContext context)
+ {
+ using var scope = Services.CreateScope();
+ var _repository = scope.ServiceProvider.GetRequiredService<IRepository<SysLogVis>>();
+ var log = (SysLogVis)context.Source.Payload;
+ await _repository.InsertNowAsync(log);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs
new file mode 100644
index 0000000..d82e10b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/CsRedisExtensions.cs
@@ -0,0 +1,31 @@
+锘縰sing CSRedis;
+using Furion;
+using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Redis;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Core.Extension;
+
+/// <summary>
+/// csredis鎵╁睍
+/// </summary>
+public static class CsRedisExtensions
+{
+ /// <summary>
+ /// 浣跨敤缂撳瓨
+ /// </summary>
+ /// <param name="services"></param>
+ /// <returns></returns>
+ public static void UseCsRedis(this IServiceCollection services)
+ {
+ var redisStr = $"{App.Configuration["Cache:RedisConnectionString"]},prefix={App.Configuration["Cache:InstanceName"]}";
+
+ //csredis鐨勪袱绉嶄娇鐢ㄦ柟寮�
+ var csredis = new CSRedisClient(redisStr);
+ services.AddSingleton(csredis);
+ RedisHelper.Initialization(csredis);
+
+ //鍩轰簬redis鍒濆鍖朓DistributedCache
+ services.AddSingleton<IDistributedCache>(new CSRedisCache(csredis));
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs
new file mode 100644
index 0000000..c0a59bd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/DictionaryExtensions.cs
@@ -0,0 +1,47 @@
+锘縰sing System.Text;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛楀吀鎵╁睍
+ /// </summary>
+ public static class DictionaryExtensions
+ {
+ /// <summary>
+ /// 灏嗕竴涓瓧鍏歌浆鍖栦负 QueryString
+ /// </summary>
+ /// <param name="dict"></param>
+ /// <param name="urlEncode"></param>
+ /// <returns></returns>
+ public static string ToQueryString(this Dictionary<string, string> dict, bool urlEncode = true)
+ {
+ return string.Join("&", dict.Select(p => $"{(urlEncode ? p.Key?.UrlEncode() : "")}={(urlEncode ? p.Value?.UrlEncode() : "")}"));
+ }
+
+ /// <summary>
+ /// 灏嗕竴涓瓧绗︿覆 URL 缂栫爜
+ /// </summary>
+ /// <param name="str"></param>
+ /// <returns></returns>
+ public static string UrlEncode(this string str)
+ {
+ if (string.IsNullOrEmpty(str))
+ {
+ return "";
+ }
+ return System.Web.HttpUtility.UrlEncode(str, Encoding.UTF8);
+ }
+
+ /// <summary>
+ /// 绉婚櫎绌哄�奸」
+ /// </summary>
+ /// <param name="dict"></param>
+ public static void RemoveEmptyValueItems(this Dictionary<string, string> dict)
+ {
+ dict.Where(item => string.IsNullOrEmpty(item.Value)).Select(item => item.Key).ToList().ForEach(key =>
+ {
+ dict.Remove(key);
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs
new file mode 100644
index 0000000..1ca94b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/FakeDeleteExtensions.cs
@@ -0,0 +1,140 @@
+using Furion.DatabaseAccessor.Extensions;
+
+namespace Furion.DatabaseAccessor
+{
+ public static class FakeDeleteExtensions
+ {
+ /// <summary>
+ /// 涓婚敭鍚嶇О
+ /// </summary>
+ private static string PrimaryKeyName { get; set; } = "Id";
+
+ /// <summary>
+ /// 鍋囧垹闄ゅ垪鍚�
+ /// </summary>
+ private static string FakeDeleteColumnName { get; set; } = "IsDeleted";
+
+ /// <summary>
+ /// 鍋囧垹闄わ紝鏍规嵁id鍒犻櫎
+ /// </summary>
+ public static void FakeDelete<TEntity>(this IPrivateRepository<TEntity> repository, int id)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+ var entity = Activator.CreateInstance<TEntity>();
+ var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+ PrimaryKeyProperty.SetValue(PrimaryKeyName, id);
+ repository.FakeDelete(entity);
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄�
+ /// </summary>
+ public static void FakeDelete<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ repository.UpdateInclude(entity, new[] { fakedeleteProperty.Name });
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄ょ珛鍗虫墽琛岋紝鏍规嵁id鍒犻櫎
+ /// </summary>
+ public static void FakeDeleteNow<TEntity>(this IPrivateRepository<TEntity> repository, long id)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+ var entity = Activator.CreateInstance<TEntity>();
+ var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+ PrimaryKeyProperty.SetValue(entity, id);
+ repository.FakeDeleteNow(entity);
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄ょ珛鍗虫墽琛�
+ /// </summary>
+ public static void FakeDeleteNow<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ repository.UpdateIncludeNow(entity, new[] { fakedeleteProperty.Name });
+ }
+
+ /// <summary>
+ /// 寮傛鍋囧垹闄�
+ /// </summary>
+
+ public static async Task FakeDeleteAsync<TEntity>(this IPrivateRepository<TEntity> repository, long id)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ // 鍒涘缓瀹炰綋瀵硅薄骞惰缃富閿��
+ var entity = Activator.CreateInstance<TEntity>();
+ var PrimaryKeyProperty = typeof(TEntity).GetProperty(PrimaryKeyName);
+ PrimaryKeyProperty.SetValue(entity, id);
+ await repository.FakeDeleteAsync(entity);
+ }
+
+ /// <summary>
+ /// 寮傛鍋囧垹闄�
+ /// </summary>
+ public static async Task FakeDeleteAsync<TEntity>(this IPrivateRepository<TEntity> repository, TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = repository.EntityType.ClrType.GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ await repository.UpdateIncludeAsync(entity, new[] { fakedeleteProperty.Name });
+ }
+
+ //鎵╁睍鍦╡ntity涓婄殑鍋囧垹闄�
+
+ /// <summary>
+ /// 寮傛鍋囧垹闄�
+ /// </summary>
+ public static async Task FakeDeleteAsync<TEntity>(this TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ await entity.UpdateIncludeAsync(new[] { fakedeleteProperty.Name });
+ }
+
+ /// <summary>
+ /// 寮傛鍋囧垹闄わ紝绔嬪嵆鎵ц
+ /// </summary>
+ public static async Task FakeDeleteNowAsync<TEntity>(this TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ await entity.UpdateIncludeNowAsync(new[] { fakedeleteProperty.Name });
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄�
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <param name="entity"></param>
+ public static void FakeDelete<TEntity>(this TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ entity.UpdateInclude(new[] { fakedeleteProperty.Name });
+ }
+
+ /// <summary>
+ /// 鍋囧垹闄ょ珛鍗虫墽琛�
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <param name="entity"></param>
+ public static void FakeDeleteNow<TEntity>(this TEntity entity)
+ where TEntity : class, IPrivateEntity, new()
+ {
+ var fakedeleteProperty = typeof(TEntity).GetProperty(FakeDeleteColumnName);
+ fakedeleteProperty.SetValue(entity, true);
+ entity.UpdateIncludeNow(new[] { fakedeleteProperty.Name });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs
new file mode 100644
index 0000000..3ab9fcc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/LambdaExpressionBuilder.cs
@@ -0,0 +1,183 @@
+锘縰sing System.Linq.Expressions;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍔ㄦ�佺敓鎴愭煡璇㈣〃杈惧紡
+ /// </summary>
+ public static class LambdaExpressionBuilder
+ {
+ private static Expression GetExpression(ParameterExpression parameter, Condition condition)
+ {
+ var propertyParam = Expression.Property(parameter, condition.Field);
+
+ var propertyInfo = propertyParam.Member as PropertyInfo;
+ if (propertyInfo == null)
+ throw new MissingMemberException(nameof(Condition), condition.Field);
+
+ //Support Nullable<>
+ var realPropertyType = Nullable.GetUnderlyingType(propertyInfo.PropertyType) ?? propertyInfo.PropertyType;
+ if (propertyInfo.PropertyType.IsGenericType &&
+ propertyInfo.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
+ propertyParam = Expression.Property(propertyParam, "Value");
+
+ //Support IEnumerable && IEnumerable<T>
+ if (condition.Op != QueryTypeEnum.StdIn && condition.Op != QueryTypeEnum.StdNotIn)
+ {
+ condition.Value = Convert.ChangeType(condition.Value, realPropertyType);
+ }
+ else
+ {
+ var typeOfValue = condition.Value.GetType();
+ var typeOfList = typeof(IEnumerable<>).MakeGenericType(realPropertyType);
+ if (typeOfValue.IsGenericType && typeOfList.IsAssignableFrom(typeOfValue))
+ condition.Value = typeof(Enumerable)
+ .GetMethod("ToArray", BindingFlags.Public | BindingFlags.Static)
+ ?.MakeGenericMethod(realPropertyType)
+ .Invoke(null, new[] { condition.Value });
+ }
+
+ var constantParam = Expression.Constant(condition.Value);
+ switch (condition.Op)
+ {
+ case QueryTypeEnum.Equals:
+ return Expression.Equal(propertyParam, constantParam);
+
+ case QueryTypeEnum.NotEquals:
+ return Expression.NotEqual(propertyParam, constantParam);
+
+ case QueryTypeEnum.Contains:
+ return Expression.Call(propertyParam, "Contains", null, constantParam);
+
+ case QueryTypeEnum.NotContains:
+ return Expression.Not(Expression.Call(propertyParam, "Contains", null, constantParam));
+
+ case QueryTypeEnum.StartsWith:
+ return Expression.Call(propertyParam, "StartsWith", null, constantParam);
+
+ case QueryTypeEnum.EndsWith:
+ return Expression.Call(propertyParam, "EndsWith", null, constantParam);
+
+ case QueryTypeEnum.GreaterThan:
+ return Expression.GreaterThan(propertyParam, constantParam);
+
+ case QueryTypeEnum.GreaterThanOrEquals:
+ return Expression.GreaterThanOrEqual(propertyParam, constantParam);
+
+ case QueryTypeEnum.LessThan:
+ return Expression.LessThan(propertyParam, constantParam);
+
+ case QueryTypeEnum.LessThanOrEquals:
+ return Expression.LessThanOrEqual(propertyParam, constantParam);
+
+ case QueryTypeEnum.StdIn:
+ return Expression.Call(typeof(Enumerable), "Contains", new[] { realPropertyType }, constantParam, propertyParam);
+
+ case QueryTypeEnum.StdNotIn:
+ return Expression.Not(Expression.Call(typeof(Enumerable), "Contains", new[] { realPropertyType }, constantParam, propertyParam));
+
+ default:
+ break;
+ }
+
+ return null;
+ }
+
+ private static Expression GetGroupExpression(ParameterExpression parameter, List<Condition> orConditions)
+ {
+ if (orConditions.Count == 0)
+ return null;
+
+ var exps = orConditions.Select(c => GetExpression(parameter, c)).ToList();
+ return exps.Aggregate<Expression, Expression>(null, (left, right) =>
+ left == null ? right : Expression.OrElse(left, right));
+ }
+
+ public static Expression<Func<T, bool>> BuildLambda<T>(IEnumerable<Condition> conditions)
+ {
+ if (conditions == null || !conditions.Any())
+ return x => true;
+
+ var parameter = Expression.Parameter(typeof(T), "x");
+
+ //绠�鍗曟潯浠�
+ var simpleExps = conditions
+ .ToList()
+ .FindAll(c => string.IsNullOrEmpty(c.OrGroup))
+ .Select(c => GetExpression(parameter, c))
+ .ToList();
+
+ //澶嶆潅鏉′欢
+ var complexExps = conditions
+ .ToList()
+ .FindAll(c => !string.IsNullOrEmpty(c.OrGroup))
+ .GroupBy(x => x.OrGroup)
+ .Select(g => GetGroupExpression(parameter, g.ToList()))
+ .ToList();
+
+ var exp = simpleExps.Concat(complexExps).Aggregate<Expression, Expression>(null, (left, right) =>
+ left == null ? right : Expression.AndAlso(left, right));
+ return Expression.Lambda<Func<T, bool>>(exp, parameter);
+ }
+
+ public static Expression<Func<T, bool>> BuildAndAlsoLambda<T>(IEnumerable<Condition> conditions)
+ {
+ if (conditions == null || !conditions.Any())
+ return x => true;
+
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var simpleExps = conditions
+ .ToList()
+ .Select(c => GetExpression(parameter, c))
+ .ToList();
+
+ var exp = simpleExps.Aggregate<Expression, Expression>(null, (left, right) =>
+ left == null ? right : Expression.AndAlso(left, right));
+ return Expression.Lambda<Func<T, bool>>(exp, parameter);
+ }
+
+ public static Expression<Func<T, bool>> BuildOrElseLambda<T>(IEnumerable<Condition> conditions)
+ {
+ if (conditions == null || !conditions.Any())
+ return x => true;
+
+ var parameter = Expression.Parameter(typeof(T), "x");
+ var simpleExps = conditions
+ .ToList()
+ .Select(c => GetExpression(parameter, c))
+ .ToList();
+
+ var exp = simpleExps.Aggregate<Expression, Expression>(null, (left, right) =>
+ left == null ? right : Expression.OrElse(left, right));
+ return Expression.Lambda<Func<T, bool>>(exp, parameter);
+ }
+ }
+
+ /// <summary>
+ /// 鏌ヨ鏉′欢
+ /// </summary>
+ [Serializable]
+ public class Condition
+ {
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ public string Field { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔绗�
+ /// </summary>
+ public QueryTypeEnum Op { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍊�
+ /// </summary>
+ public object Value { get; set; }
+
+ /// <summary>
+ /// 鍒嗙粍鍚嶇О
+ /// </summary>
+ public string OrGroup { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs
new file mode 100644
index 0000000..05ad28c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/NewtonsoftJsonSerializerProvider .cs
@@ -0,0 +1,46 @@
+锘縰sing Furion;
+using Furion.DependencyInjection;
+using Furion.JsonSerialization;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+
+namespace Admin.NET.Core.Extension
+{
+ /// <summary>
+ /// 鑷畾涔夊簭鍒楀寲鎻愪緵鍣∟ewtonsoft
+ /// </summary>
+ public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton
+ {
+ /// <summary>
+ /// 搴忓垪鍖栧璞�
+ /// </summary>
+ /// <param name="value"></param>
+ /// <param name="jsonSerializerOptions"></param>
+ /// <returns></returns>
+ public string Serialize(object value, object jsonSerializerOptions = null)
+ {
+ return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
+ }
+
+ /// <summary>
+ /// 鍙嶅簭鍒楀寲瀛楃涓�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="json"></param>
+ /// <param name="jsonSerializerOptions"></param>
+ /// <returns></returns>
+ public T Deserialize<T>(string json, object jsonSerializerOptions = null)
+ {
+ return JsonConvert.DeserializeObject<T>(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);
+ }
+
+ /// <summary>
+ /// 杩斿洖璇诲彇鍏ㄥ眬閰嶇疆鐨� JSON 閫夐」
+ /// </summary>
+ /// <returns></returns>
+ public object GetSerializerOptions()
+ {
+ return App.GetOptions<MvcNewtonsoftJsonOptions>()?.SerializerSettings;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs
new file mode 100644
index 0000000..b4ea251
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Extension/QueryableExstenstions.cs
@@ -0,0 +1,48 @@
+锘縰sing Furion.LinqBuilder;
+using System.Linq.Expressions;
+
+namespace Admin.NET.Core
+{
+ public static class QueryableExstenstions
+ {
+ /// <summary>
+ /// 鏍规嵁鍒嗛〉鏌ヨ鍙傛暟涓篒Queryable闄勫姞杩囨护鏉′欢
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="searchParameters"></param>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ public static IQueryable<T> Search<T>(this IQueryable<T> source, PageInputBase searchParameters)
+ {
+ if (searchParameters.SearchParameters == null)
+ return source;
+
+ var results = source.Where(LambdaExpressionBuilder.BuildLambda<T>(searchParameters.SearchParameters));
+
+ //鏃犳帓搴忓瓧娈�
+ if (searchParameters.SortField.IsNullOrEmpty())
+ return results;
+
+ return results.ApplyOrder(searchParameters.SortField, searchParameters.SortOrder);
+ }
+
+ /// <summary>
+ /// 闄勫姞鎺掑簭
+ /// </summary>
+ /// <param name="source"></param>
+ /// <param name="property"></param>
+ /// <param name="sortMethod"></param>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ private static IOrderedQueryable<T> ApplyOrder<T>(this IQueryable<T> source, string property, string sortMethod)
+ {
+ var type = typeof(T);
+ var parameterExp = Expression.Parameter(type, "x");
+ var propertyInfo = type.GetProperty(property);
+ var propertyExp = Expression.Property(parameterExp, propertyInfo);
+ var lambdaExp = Expression.Lambda<Func<T, dynamic>>(propertyExp, parameterExp);
+
+ return sortMethod == "descend" ? source.OrderByDescending(lambdaExp) : source.OrderBy(lambdaExp);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs
new file mode 100644
index 0000000..066eae3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/DisableOpLogAttribute.cs
@@ -0,0 +1,10 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绂佺敤鎿嶄綔鏃ュ織
+ /// </summary>
+ [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property)]
+ public class DisableOpLogAttribute : Attribute
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs
new file mode 100644
index 0000000..eb2d198
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/LogExceptionHandler.cs
@@ -0,0 +1,45 @@
+锘縰sing Furion;
+using Furion.DependencyInjection;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Serilog;
+using System.Security.Claims;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍏ㄥ眬寮傚父澶勭悊
+ /// </summary>
+ public class LogExceptionHandler : IGlobalExceptionHandler, ISingleton
+ {
+ private readonly IEventPublisher _eventPublisher;
+
+ public LogExceptionHandler(IEventPublisher eventPublisher)
+ {
+ _eventPublisher = eventPublisher;
+ }
+
+ public async Task OnExceptionAsync(ExceptionContext context)
+ {
+ var userContext = App.User;
+ await _eventPublisher.PublishAsync(new ChannelEventSource("Create:ExLog",
+ new SysLogEx
+ {
+ Account = userContext?.FindFirstValue(ClaimConst.CLAINM_ACCOUNT),
+ Name = userContext?.FindFirstValue(ClaimConst.CLAINM_NAME),
+ ClassName = context.Exception.TargetSite.DeclaringType?.FullName,
+ MethodName = context.Exception.TargetSite.Name,
+ ExceptionName = context.Exception.Message,
+ ExceptionMsg = context.Exception.Message,
+ ExceptionSource = context.Exception.Source,
+ StackTrace = context.Exception.StackTrace,
+ ParamsObj = context.Exception.TargetSite.GetParameters().ToString(),
+ ExceptionTime = DateTimeOffset.Now
+ }));
+
+ // 鍐欐棩蹇楁枃浠�
+ Log.Error(context.Exception.ToString());
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs
new file mode 100644
index 0000000..10064e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Filter/RequestActionFilter.cs
@@ -0,0 +1,105 @@
+using Furion;
+using Furion.EventBus;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.UnifyResult;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Serilog;
+using System.Diagnostics;
+using System.Security.Claims;
+using UAParser;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 璇锋眰鏃ュ織鎷︽埅
+ /// </summary>
+ public class RequestActionFilter : IAsyncActionFilter
+ {
+ private readonly IEventPublisher _eventPublisher;
+
+ public RequestActionFilter(IEventPublisher eventPublisher)
+ {
+ _eventPublisher = eventPublisher;
+ }
+
+ public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+ {
+ var httpContext = context.HttpContext;
+ var httpRequest = httpContext.Request;
+
+ //鑾峰彇head淇℃伅
+ //
+ //var headrparam= httpContext.head
+
+ var sw = new Stopwatch();
+ sw.Start();
+ var actionContext = await next();
+ sw.Stop();
+
+ // 鍒ゆ柇鏄惁璇锋眰鎴愬姛锛堟病鏈夊紓甯稿氨鏄姹傛垚鍔燂級
+ var isRequestSucceed = actionContext.Exception == null;
+ var headers = httpRequest.Headers;
+ var clientInfo = headers.ContainsKey("User-Agent") ? Parser.GetDefault().Parse(headers["User-Agent"]) : null;
+ var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;
+ Log.Error("AppVersion" + headers["AppVersion"].Count + "/" + headers["AppVersion"] + "/"+ headers["IsDevelopment"]+"/"+ App.Configuration["AppVersion:Version"]);
+ //throw Oops.Oh(headers["AppVersion"]);
+ if (headers["AppVersion"].Count ==1 && headers["AppVersion"]!= App.Configuration["AppVersion:Version"] && headers["IsDevelopment"] == "false")
+ {
+ throw Oops.Oh("璇锋洿鏂癙DA鐗堟湰淇℃伅");
+ }
+ var ip = httpContext.GetRequestIPv4();
+
+ //鍒ゆ柇鏄惁闇�鏈夌鐢ㄦ搷浣滄棩蹇楀睘鎬�
+ foreach (var metadata in actionDescriptor.EndpointMetadata)
+ {
+ if (metadata.GetType() == typeof(DisableOpLogAttribute))
+ {
+ //绂佺敤鎿嶄綔鏃ュ織锛岀洿鎺ヨ繑鍥�
+ return;
+ }
+ }
+ await _eventPublisher.PublishAsync(new ChannelEventSource("Create:OpLog",
+ new SysLogOp
+ {
+ Name = httpContext.User?.FindFirstValue(ClaimConst.CLAINM_NAME),
+ Success = isRequestSucceed ? YesOrNot.Y : YesOrNot.N,
+ Ip = ip,
+ Location = httpRequest.GetRequestUrlAddress(),
+ Browser = clientInfo?.UA.Family + clientInfo?.UA.Major,
+ Os = clientInfo?.OS.Family + clientInfo?.OS.Major,
+ Url = httpRequest.Path,
+ ClassName = context.Controller.ToString(),
+ MethodName = actionDescriptor?.ActionName,
+ ReqMethod = httpRequest.Method,
+ Param = context.ActionArguments.Count < 1 ? string.Empty : JSON.Serialize(context.ActionArguments),
+ Result = actionContext.Result?.GetType() == typeof(JsonResult) ? JSON.Serialize(actionContext.Result) : string.Empty,
+ ElapsedTime = sw.ElapsedMilliseconds,
+ OpTime = DateTimeOffset.Now,
+ Account = httpContext.User?.FindFirstValue(ClaimConst.CLAINM_ACCOUNT)
+ }));
+ }
+
+ /// <summary>
+ /// 寮傚父杩斿洖鍊�
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="metadata"></param>
+ /// <returns></returns>
+ public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)
+ {
+ return new JsonResult(new XnRestfulResult<object>
+ {
+ Code = metadata.StatusCode,
+ Success = false,
+ Data = null,
+ Message = metadata.Errors,
+ Extras = UnifyContext.Take(),
+ Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs
new file mode 100644
index 0000000..51a726c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Options/RefreshTokenSettingOptions.cs
@@ -0,0 +1,15 @@
+锘縰sing Furion.ConfigurableOptions;
+
+namespace Admin.NET.Core.Options
+{
+ /// <summary>
+ /// 鍒锋柊浠ょ墝璁剧疆
+ /// </summary>
+ public sealed class RefreshTokenSettingOptions : IConfigurableOptions
+ {
+ /// <summary>
+ /// 浠ょ墝杩囨湡鏃堕棿锛堝垎閽燂級
+ /// </summary>
+ public int ExpiredTime { get; set; } = 4200;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs
new file mode 100644
index 0000000..d56df27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysAppSeedData.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺搴旂敤琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysAppSeedData : IEntitySeedData<SysApp>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysApp> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysApp{Id=535823141748805, Name="TestDemo", Code="TestDemo", Active="N", Status=0, Sort=100 },
+ new SysApp{Id=142307070898245, Name="寮�鍙戠鐞�", Code="system", Active="Y", Status=0, Sort=100 },
+ new SysApp{Id=142307070902341, Name="绯荤粺绠$悊", Code="manage", Active="N", Status=0, Sort=300 },
+ new SysApp{Id=142307070922869, Name="涓氬姟搴旂敤", Code="busiapp", Active="N", Status=0, Sort=400 },
+ new SysApp{Id=355686432948293, Name="浠撳簱浣滀笟", Code="warejob", Active="N", Status=0, Sort=500 },
+ new SysApp{Id=355686518018117, Name="缁熻鏌ヨ", Code="warecount", Active="N", Status=0, Sort=600 }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs
new file mode 100644
index 0000000..80f8a13
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysConfigSeedData.cs
@@ -0,0 +1,57 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鍙傛暟閰嶇疆琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysConfigSeedData : IEntitySeedData<SysConfig>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysConfig> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysConfig{Id=142307070902342, Name="jwt瀵嗛挜", Code="DILON_JWT_SECRET", Value="weiben",SysFlag="Y", Remark="锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆", Status=0, GroupCode="DEFAULT"},
+ new SysConfig{Id=142307070902343, Name="榛樿瀵嗙爜", Code="DILON_DEFAULT_PASSWORD", Value="123456",SysFlag="Y", Remark="榛樿瀵嗙爜", Status=0, GroupCode="DEFAULT"},
+ new SysConfig{Id=142307070902344, Name="token杩囨湡鏃堕棿", Code="DILON_TOKEN_EXPIRE", Value="86400",SysFlag="Y", Remark="token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", Status=0, GroupCode="DEFAULT"},
+ new SysConfig{Id=142307070902345, Name="session浼氳瘽杩囨湡鏃堕棿", Code="DILON_SESSION_EXPIRE", Value="7200",SysFlag="Y", Remark="session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", Status=0, GroupCode="DEFAULT"},
+ //new SysConfig{Id=142307070902346, Name="闃块噷浜戠煭淇eyId", Code="DILON_ALIYUN_SMS_ACCESSKEY_ID", Value="浣犵殑keyId",SysFlag="Y", Remark="闃块噷浜戠煭淇eyId", Status=0, GroupCode="ALIYUN_SMS"},
+ //new SysConfig{Id=142307070902347, Name="闃块噷浜戠煭淇ecret", Code="DILON_ALIYUN_SMS_ACCESSKEY_SECRET", Value="浣犵殑secret",SysFlag="Y", Remark="闃块噷浜戠煭淇ecret", Status=0, GroupCode="ALIYUN_SMS"},
+ //new SysConfig{Id=142307070902348, Name="闃块噷浜戠煭淇$鍚�", Code="DILON_ALIYUN_SMS_SIGN_NAME", Value="浣犵殑绛惧悕",SysFlag="Y", Remark="闃块噷浜戠煭淇$鍚�", Status=0, GroupCode="ALIYUN_SMS"},
+ //new SysConfig{Id=142307070902349, Name="闃块噷浜戠煭淇�-鐧诲綍妯℃澘鍙�", Code="DILON_ALIYUN_SMS_LOGIN_TEMPLATE_CODE", Value="SMS_1877123456",SysFlag="Y", Remark="闃块噷浜戠煭淇�-鐧诲綍妯℃澘鍙�", Status=0, GroupCode="ALIYUN_SMS"},
+ //new SysConfig{Id=142307070902350, Name="闃块噷浜戠煭淇¢粯璁ゅけ鏁堟椂闂�", Code="DILON_ALIYUN_SMS_INVALIDATE_MINUTES", Value="5",SysFlag="Y", Remark="闃块噷浜戠煭淇¢粯璁ゅけ鏁堟椂闂达紙鍗曚綅锛氬垎閽燂級", Status=0, GroupCode="ALIYUN_SMS"},
+ //new SysConfig{Id=142307070902351, Name="鑵捐浜戠煭淇ecretId", Code="DILON_TENCENT_SMS_SECRET_ID", Value="浣犵殑secretId",SysFlag="Y", Remark="鑵捐浜戠煭淇ecretId", Status=0, GroupCode="TENCENT_SMS"},
+ //new SysConfig{Id=142307070902352, Name="鑵捐浜戠煭淇ecretKey", Code="DILON_TENCENT_SMS_SECRET_KEY", Value="浣犵殑secretkey",SysFlag="Y", Remark="鑵捐浜戠煭淇ecretKey", Status=0, GroupCode="TENCENT_SMS"},
+ //new SysConfig{Id=142307070902353, Name="鑵捐浜戠煭淇dkAppId", Code="DILON_TENCENT_SMS_SDK_APP_ID", Value="1400375123",SysFlag="Y", Remark="鑵捐浜戠煭淇dkAppId", Status=0, GroupCode="TENCENT_SMS"},
+ //new SysConfig{Id=142307070902354, Name="鑵捐浜戠煭淇$鍚�", Code="DILON_TENCENT_SMS_SIGN", Value="浣犵殑绛惧悕",SysFlag="Y", Remark="鑵捐浜戠煭淇$鍚�", Status=0, GroupCode="TENCENT_SMS"},
+ //new SysConfig{Id=142307070902355, Name="閭host", Code="DILON_EMAIL_HOST", Value="smtp.126.com",SysFlag="Y", Remark="閭host", Status=0, GroupCode="EMAIL"},
+ //new SysConfig{Id=142307070902356, Name="閭鐢ㄦ埛鍚�", Code="DILON_EMAIL_USERNAME", Value="test@126.com",SysFlag="Y", Remark="閭鐢ㄦ埛鍚�", Status=0, GroupCode="EMAIL"},
+ //new SysConfig{Id=142307070902357, Name="閭瀵嗙爜", Code="DILON_EMAIL_PASSWORD", Value="浣犵殑閭瀵嗙爜",SysFlag="Y", Remark="閭瀵嗙爜", Status=0, GroupCode="EMAIL"},
+ //new SysConfig{Id=142307070902358, Name="閭绔彛", Code="DILON_EMAIL_PORT", Value="465",SysFlag="Y", Remark="閭绔彛", Status=0, GroupCode="EMAIL"},
+ //new SysConfig{Id=142307070902359, Name="閭鏄惁寮�鍚痵sl", Code="DILON_EMAIL_SSL", Value="true",SysFlag="Y", Remark="閭鏄惁寮�鍚痵sl", Status=0, GroupCode="EMAIL"},
+ //new SysConfig{Id=142307070902360, Name="閭鍙戜欢浜�", Code="DILON_EMAIL_FROM", Value="test@126.com",SysFlag="Y", Remark="閭鍙戜欢浜�", Status=0, GroupCode="EMAIL"},
+ new SysConfig{Id=142307070902361, Name="Win鏈湴涓婁紶鏂囦欢璺緞", Code="DILON_FILE_UPLOAD_PATH_FOR_WINDOWS", Value="D:/tmp",SysFlag="Y", Remark="Win鏈湴涓婁紶鏂囦欢璺緞", Status=0, GroupCode="FILE_PATH"},
+ //new SysConfig{Id=142307070902362, Name="Linux/Mac鏈湴涓婁紶鏂囦欢璺緞", Code="DILON_FILE_UPLOAD_PATH_FOR_LINUX", Value="/tmp",SysFlag="Y", Remark="Linux/Mac鏈湴涓婁紶鏂囦欢璺緞", Status=0, GroupCode="FILE_PATH"},
+ new SysConfig{Id=142307070902363, Name="鏀惧紑XSS杩囨护鐨勬帴鍙�", Code="DILON_UN_XSS_FILTER_URL", Value="/demo/xssfilter,/demo/unxss",SysFlag="Y", Remark="澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑", Status=0, GroupCode="DEFAULT"},
+ new SysConfig{Id=142307070902364, Name="鍗曠敤鎴风櫥闄嗙殑寮�鍏�", Code="DILON_ENABLE_SINGLE_LOGIN", Value="false",SysFlag="Y", Remark="true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓", Status=0, GroupCode="DEFAULT"},
+ new SysConfig{Id=142307070902365, Name="鐧诲綍楠岃瘉鐮佺殑寮�鍏�", Code="DILON_CAPTCHA_OPEN", Value="true",SysFlag="Y", Remark="true-鎵撳紑锛宖alse-鍏抽棴", Status=0, GroupCode="DEFAULT"},
+ //new SysConfig{Id=142307070902366, Name="Druid鐩戞帶鐧诲綍璐﹀彿", Code="DILON_DRUID_USERNAME", Value="superAdmin",SysFlag="Y", Remark="Druid鐩戞帶鐧诲綍璐﹀彿", Status=0, GroupCode="DEFAULT"},
+ //new SysConfig{Id=142307070902367, Name="Druid鐩戞帶鐣岄潰鐧诲綍瀵嗙爜", Code="DILON_DRUID_PASSWORD", Value="123456",SysFlag="Y", Remark="Druid鐩戞帶鐣岄潰鐧诲綍瀵嗙爜", Status=0, GroupCode="DEFAULT"},
+ //new SysConfig{Id=142307070902368, Name="闃块噷浜戝畾浣峚pi鎺ュ彛鍦板潃", Code="DILON_IP_GEO_API", Value="http://api01.aliyun.venuscn.com/ip?ip=%s",SysFlag="Y", Remark="闃块噷浜戝畾浣峚pi鎺ュ彛鍦板潃", Status=0, GroupCode="DEFAULT"},
+ // new SysConfig{Id=142307070902369, Name="闃块噷浜戝畾浣峚ppCode", Code="DILON_IP_GEO_APP_CODE", Value="461535aabeae4f34861884d392f5d452",SysFlag="Y", Remark="闃块噷浜戝畾浣峚ppCode", Status=0, GroupCode="DEFAULT"},
+ //new SysConfig{Id=142307070902370, Name="Oauth鐢ㄦ埛鐧诲綍鐨勫紑鍏�", Code="DILON_ENABLE_OAUTH_LOGIN", Value="true",SysFlag="Y", Remark="Oauth鐢ㄦ埛鐧诲綍鐨勫紑鍏�", Status=0, GroupCode="OAUTH"},
+ //new SysConfig{Id=142307070902371, Name="Oauth鐮佷簯鐧诲綍ClientId", Code="DILON_OAUTH_GITEE_CLIENT_ID", Value="浣犵殑clientId",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍ClientId", Status=0, GroupCode="OAUTH"},
+ //new SysConfig{Id=142307070902372, Name="Oauth鐮佷簯鐧诲綍ClientSecret", Code="DILON_OAUTH_GITEE_CLIENT_SECRET", Value="浣犵殑clientSecret",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍ClientSecret", Status=0, GroupCode="OAUTH"},
+ //new SysConfig{Id=142307070902373, Name="Oauth鐮佷簯鐧诲綍鍥炶皟鍦板潃", Code="DILON_OAUTH_GITEE_REDIRECT_URI", Value="http://127.0.0.1:5566/oauth/callback/gitee",SysFlag="Y", Remark="Oauth鐮佷簯鐧诲綍鍥炶皟鍦板潃", Status=0, GroupCode="OAUTH"},
+ //new SysConfig{Id=142307070902374, Name="婕旂ず鐜", Code="DILON_DEMO_ENV_FLAG", Value="false",SysFlag="Y", Remark="婕旂ず鐜鐨勫紑鍏�,true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滄紨绀虹幆澧冨紑鍚紝鍒欏彧鑳借鏁版嵁涓嶈兘鍐欐暟鎹�", Status=0, GroupCode="DEFAULT"},
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
new file mode 100644
index 0000000..2e1fca1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictDataSeedData.cs
@@ -0,0 +1,261 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺瀛楀吀鍊肩瀛愭暟鎹�
+ /// </summary>
+ public class SysDictDataSeedData : IEntitySeedData<SysDictData>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysDictData> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysDictData{Id=142307070902375, TypeId=142307070906484, Value="鐢�", Code="1", Sort=100, Remark="鐢锋��", Status=0 },
+ new SysDictData{Id=142307070902376, TypeId=142307070906484, Value="濂�", Code="2", Sort=100, Remark="濂虫��", Status=0 },
+ new SysDictData{Id=142307070902377, TypeId=142307070906484, Value="鏈煡", Code="3", Sort=100, Remark="鏈煡鎬у埆", Status=0 },
+
+ //new SysDictData{Id=142307070902378, TypeId=142307070906485, Value="榛樿甯搁噺", Code="DEFAULT", Sort=100, Remark="榛樿甯搁噺锛岄兘浠IAONUO_寮�澶寸殑", Status=0 },
+ //new SysDictData{Id=142307070902379, TypeId=142307070906485, Value="闃块噷浜戠煭淇�", Code="ALIYUN_SMS", Sort=100, Remark="闃块噷浜戠煭淇¢厤缃�", Status=0 },
+ //new SysDictData{Id=142307070902380, TypeId=142307070906485, Value="鑵捐浜戠煭淇�", Code="TENCENT_SMS", Sort=100, Remark="鑵捐浜戠煭淇�", Status=0 },
+ //new SysDictData{Id=142307070902381, TypeId=142307070906485, Value="閭欢閰嶇疆", Code="EMAIL", Sort=100, Remark="閭欢閰嶇疆", Status=0 },
+ //new SysDictData{Id=142307070902382, TypeId=142307070906485, Value="鏂囦欢涓婁紶璺緞", Code="FILE_PATH", Sort=100, Remark="鏂囦欢涓婁紶璺緞", Status=0 },
+ //new SysDictData{Id=142307070902383, TypeId=142307070906485, Value="Oauth閰嶇疆", Code="OAUTH", Sort=100, Remark="Oauth閰嶇疆", Status=0 },
+
+ new SysDictData{Id=142307070902384, TypeId=142307070906483, Value="姝e父", Code="0", Sort=100, Remark="姝e父", Status=0 },
+ new SysDictData{Id=142307070902385, TypeId=142307070906483, Value="鍋滅敤", Code="1", Sort=100, Remark="鍋滅敤", Status=0 },
+ new SysDictData{Id=142307070902386, TypeId=142307070906483, Value="鍒犻櫎", Code="2", Sort=100, Remark="鍒犻櫎", Status=0 },
+
+ new SysDictData{Id=142307070902387, TypeId=142307070906486, Value="鍚�", Code="N", Sort=100, Remark="鍚�", Status=0 },
+ new SysDictData{Id=142307070902388, TypeId=142307070906486, Value="鏄�", Code="Y", Sort=100, Remark="鏄�", Status=0 },
+
+ new SysDictData{Id=142307070902389, TypeId=142307070906487, Value="鐧诲綍", Code="1", Sort=100, Remark="鐧诲綍", Status=0 },
+ new SysDictData{Id=142307070902390, TypeId=142307070906487, Value="鐧诲嚭", Code="2", Sort=100, Remark="鐧诲嚭", Status=0 },
+
+ new SysDictData{Id=142307070902391, TypeId=142307070906488, Value="鐩綍", Code="0", Sort=100, Remark="鐩綍", Status=0 },
+ new SysDictData{Id=142307070902392, TypeId=142307070906488, Value="鑿滃崟", Code="1", Sort=100, Remark="鑿滃崟", Status=0 },
+ new SysDictData{Id=142307070902393, TypeId=142307070906488, Value="鎸夐挳", Code="2", Sort=100, Remark="鎸夐挳", Status=0 },
+
+ new SysDictData{Id=142307070902394, TypeId=142307070906489, Value="鏈彂閫�", Code="0", Sort=100, Remark="鏈彂閫�", Status=0 },
+ new SysDictData{Id=142307070902395, TypeId=142307070906489, Value="鍙戦�佹垚鍔�", Code="1", Sort=100, Remark="鍙戦�佹垚鍔�", Status=0 },
+ new SysDictData{Id=142307070902396, TypeId=142307070906489, Value="鍙戦�佸け璐�", Code="2", Sort=100, Remark="鍙戦�佸け璐�", Status=0 },
+ new SysDictData{Id=142307070902397, TypeId=142307070906489, Value="澶辨晥", Code="3", Sort=100, Remark="澶辨晥", Status=0 },
+
+ new SysDictData{Id=142307070902398, TypeId=142307070906490, Value="鏃�", Code="0", Sort=100, Remark="鏃�", Status=0 },
+ new SysDictData{Id=142307070902399, TypeId=142307070906490, Value="缁勪欢", Code="1", Sort=100, Remark="缁勪欢", Status=0 },
+ new SysDictData{Id=142307070906437, TypeId=142307070906490, Value="鍐呴摼", Code="2", Sort=100, Remark="鍐呴摼", Status=0 },
+ new SysDictData{Id=142307070906438, TypeId=142307070906490, Value="澶栭摼", Code="3", Sort=100, Remark="澶栭摼", Status=0 },
+
+ new SysDictData{Id=142307070906439, TypeId=142307070906491, Value="绯荤粺鏉冮噸", Code="1", Sort=100, Remark="绯荤粺鏉冮噸", Status=0 },
+ new SysDictData{Id=142307070906440, TypeId=142307070906491, Value="涓氬姟鏉冮噸", Code="2", Sort=100, Remark="涓氬姟鏉冮噸", Status=0 },
+
+
+ new SysDictData{Id=142307070906441, TypeId=142307070906492, Value="鍏ㄩ儴鏁版嵁", Code="1", Sort=100, Remark="鍏ㄩ儴鏁版嵁", Status=0 },
+ new SysDictData{Id=142307070906442, TypeId=142307070906492, Value="鏈儴闂ㄥ強浠ヤ笅鏁版嵁", Code="2", Sort=100, Remark="鏈儴闂ㄥ強浠ヤ笅鏁版嵁", Status=0 },
+ new SysDictData{Id=142307070906443, TypeId=142307070906492, Value="鏈儴闂ㄦ暟鎹�", Code="3", Sort=100, Remark="鏈儴闂ㄦ暟鎹�", Status=0 },
+
+ new SysDictData{Id=142307070906444, TypeId=142307070906492, Value="浠呮湰浜烘暟鎹�", Code="4", Sort=100, Remark="浠呮湰浜烘暟鎹�", Status=0 },
+ new SysDictData{Id=142307070906445, TypeId=142307070906492, Value="鑷畾涔夋暟鎹�", Code="5", Sort=100, Remark="鑷畾涔夋暟鎹�", Status=0 },
+
+ //new SysDictData{Id=142307070906446, TypeId=142307070906493, Value="app", Code="1", Sort=100, Remark="app", Status=0 },
+ //new SysDictData{Id=142307070906447, TypeId=142307070906493, Value="pc", Code="2", Sort=100, Remark="pc", Status=0 },
+ //new SysDictData{Id=142307070906448, TypeId=142307070906493, Value="鍏朵粬", Code="3", Sort=100, Remark="鍏朵粬", Status=0 },
+
+ new SysDictData{Id=142307070906449, TypeId=142307070906494, Value="鍏跺畠", Code="0", Sort=100, Remark="鍏跺畠", Status=0 },
+ new SysDictData{Id=142307070906450, TypeId=142307070906494, Value="澧炲姞", Code="1", Sort=100, Remark="澧炲姞", Status=0 },
+ new SysDictData{Id=142307070906451, TypeId=142307070906494, Value="鍒犻櫎", Code="2", Sort=100, Remark="鍒犻櫎", Status=0 },
+ new SysDictData{Id=142307070906452, TypeId=142307070906494, Value="缂栬緫", Code="3", Sort=100, Remark="缂栬緫", Status=0 },
+ new SysDictData{Id=142307070906453, TypeId=142307070906494, Value="鏇存柊", Code="4", Sort=100, Remark="鏇存柊", Status=0 },
+ new SysDictData{Id=142307070906454, TypeId=142307070906494, Value="鏌ヨ", Code="5", Sort=100, Remark="鏌ヨ", Status=0 },
+ new SysDictData{Id=142307070906455, TypeId=142307070906494, Value="璇︽儏", Code="6", Sort=100, Remark="璇︽儏", Status=0 },
+ new SysDictData{Id=142307070906456, TypeId=142307070906494, Value="鏍�", Code="7", Sort=100, Remark="鏍�", Status=0 },
+ new SysDictData{Id=142307070906457, TypeId=142307070906494, Value="瀵煎叆", Code="8", Sort=100, Remark="瀵煎叆", Status=0 },
+ new SysDictData{Id=142307070906458, TypeId=142307070906494, Value="瀵煎嚭", Code="9", Sort=100, Remark="瀵煎嚭", Status=0 },
+ new SysDictData{Id=142307070906459, TypeId=142307070906494, Value="鎺堟潈", Code="10", Sort=100, Remark="鎺堟潈", Status=0 },
+ new SysDictData{Id=142307070906460, TypeId=142307070906494, Value="寮洪��", Code="11", Sort=100, Remark="寮洪��", Status=0 },
+ new SysDictData{Id=142307070906461, TypeId=142307070906494, Value="娓呯┖", Code="12", Sort=100, Remark="娓呯┖", Status=0 },
+ new SysDictData{Id=142307070906462, TypeId=142307070906494, Value="淇敼鐘舵��", Code="13", Sort=100, Remark="淇敼鐘舵��", Status=0 },
+
+ new SysDictData{Id=142307070906463, TypeId=142307070906495, Value="闃块噷浜�", Code="1", Sort=100, Remark="闃块噷浜�", Status=0 },
+ new SysDictData{Id=142307070906464, TypeId=142307070906495, Value="鑵捐浜�", Code="2", Sort=100, Remark="鑵捐浜�", Status=0 },
+ new SysDictData{Id=142307070906465, TypeId=142307070906495, Value="minio", Code="3", Sort=100, Remark="minio", Status=0 },
+ new SysDictData{Id=142307070906466, TypeId=142307070906495, Value="鏈湴", Code="4", Sort=100, Remark="鏈湴", Status=0 },
+
+ new SysDictData{Id=142307070906467, TypeId=142307070910533, Value="杩愯", Code="1", Sort=100, Remark="杩愯", Status=0 },
+ new SysDictData{Id=142307070906468, TypeId=142307070910533, Value="鍋滄", Code="2", Sort=100, Remark="鍋滄", Status=0 },
+
+ new SysDictData{Id=142307070906469, TypeId=142307070910534, Value="閫氱煡", Code="1", Sort=100, Remark="閫氱煡", Status=0 },
+ new SysDictData{Id=142307070906470, TypeId=142307070910534, Value="鍏憡", Code="2", Sort=100, Remark="鍏憡", Status=0 },
+
+ new SysDictData{Id=142307070906471, TypeId=142307070910535, Value="鑽夌", Code="0", Sort=100, Remark="鑽夌", Status=0 },
+ new SysDictData{Id=142307070906472, TypeId=142307070910535, Value="鍙戝竷", Code="1", Sort=100, Remark="鍙戝竷", Status=0 },
+
+ new SysDictData{Id=142307070906473, TypeId=142307070910535, Value="鎾ゅ洖", Code="2", Sort=100, Remark="鎾ゅ洖", Status=0 },
+ new SysDictData{Id=142307070906474, TypeId=142307070910535, Value="鍒犻櫎", Code="3", Sort=100, Remark="鍒犻櫎", Status=0 },
+
+ new SysDictData{Id=142307070906475, TypeId=142307070910536, Value="鏄�", Code="true", Sort=100, Remark="鏄�", Status=0 },
+ new SysDictData{Id=142307070906476, TypeId=142307070910536, Value="鍚�", Code="false", Sort=100, Remark="鍚�", Status=0 },
+
+ new SysDictData{Id=142307070906477, TypeId=142307070910537, Value="涓嬭浇鍘嬬缉鍖�", Code="1", Sort=100, Remark="涓嬭浇鍘嬬缉鍖�", Status=0 },
+ new SysDictData{Id=142307070906478, TypeId=142307070910537, Value="鐢熸垚鍒版湰椤圭洰", Code="2", Sort=100, Remark="鐢熸垚鍒版湰椤圭洰", Status=0 },
+
+ new SysDictData{Id=142307070906479, TypeId=142307070910538, Value="GET", Code="1", Sort=100, Remark="GET", Status=0 },
+ new SysDictData{Id=142307070906480, TypeId=142307070910538, Value="POST", Code="2", Sort=100, Remark="POST", Status=0 },
+ new SysDictData{Id=142307070906481, TypeId=142307070910538, Value="PUT", Code="3", Sort=100, Remark="PUT", Status=0 },
+ new SysDictData{Id=142307070906482, TypeId=142307070910538, Value="DELETE", Code="4", Sort=100, Remark="DELETE", Status=0 },
+
+ new SysDictData{Id=142307070922829, TypeId=142307070922827, Value="澶栭敭", Code="fk", Sort=100, Remark="澶栭敭", Status=0 },
+ new SysDictData{Id=142307070922830, TypeId=142307070922827, Value="杈撳叆妗�", Code="input", Sort=100, Remark="杈撳叆妗�", Status=0 },
+ new SysDictData{Id=142307070922831, TypeId=142307070922827, Value="鏃ユ湡閫夋嫨", Code="datepicker", Sort=100, Remark="鏃ユ湡閫夋嫨", Status=0 },
+ new SysDictData{Id=386523071475758, TypeId=142307070922827, Value="鏃ユ湡鏃堕棿閫夋嫨", Code="datetimepicker", Sort=100, Remark="鏃ユ湡鏃堕棿閫夋嫨", Status=0 },
+
+ new SysDictData{Id=142307070922832, TypeId=142307070922827, Value="涓嬫媺妗�", Code="select", Sort=100, Remark="涓嬫媺妗�", Status=0 },
+ new SysDictData{Id=142307070922833, TypeId=142307070922827, Value="鍗曢�夋", Code="radio", Sort=100, Remark="鍗曢�夋", Status=0 },
+ new SysDictData{Id=142307070922834, TypeId=142307070922827, Value="寮�鍏�", Code="switch", Sort=100, Remark="寮�鍏�", Status=0 },
+ new SysDictData{Id=142307070922835, TypeId=142307070922827, Value="澶氶�夋", Code="checkbox", Sort=100, Remark="澶氶�夋", Status=0 },
+ new SysDictData{Id=142307070922836, TypeId=142307070922827, Value="鏁板瓧杈撳叆妗�", Code="inputnumber", Sort=100, Remark="鏁板瓧杈撳叆妗�", Status=0 },
+ new SysDictData{Id=142307070922837, TypeId=142307070922827, Value="鏂囨湰鍩�", Code="textarea", Sort=100, Remark="鏂囨湰鍩�", Status=0 },
+
+ new SysDictData{Id=142307070922838, TypeId=142307070922828, Value="绛変簬", Code="==", Sort=1, Remark="绛変簬", Status=0 },
+ new SysDictData{Id=142307070922839, TypeId=142307070922828, Value="妯$硦", Code="like", Sort=2, Remark="妯$硦", Status=0 },
+ new SysDictData{Id=142307070922840, TypeId=142307070922828, Value="澶т簬", Code=">", Sort=3, Remark="澶т簬", Status=0 },
+ new SysDictData{Id=142307070922841, TypeId=142307070922828, Value="灏忎簬", Code="<", Sort=4, Remark="灏忎簬", Status=0 },
+ new SysDictData{Id=142307070922842, TypeId=142307070922828, Value="涓嶇瓑浜�", Code="!=", Sort=5, Remark="涓嶇瓑浜�", Status=0 },
+ new SysDictData{Id=142307070922843, TypeId=142307070922828, Value="澶т簬绛変簬", Code=">=", Sort=6, Remark="澶т簬绛変簬", Status=0 },
+ new SysDictData{Id=142307070922844, TypeId=142307070922828, Value="灏忎簬绛変簬", Code="<=", Sort=7, Remark="灏忎簬绛変簬", Status=0 },
+ new SysDictData{Id=142307070922845, TypeId=142307070922828, Value="涓嶄负绌�", Code="isNotNull", Sort=8, Remark="涓嶄负绌�", Status=0 },
+ new SysDictData{Id=386523071475759, TypeId=142307070922828, Value="浠嬩簬", Code="between", Sort=9, Remark="浠嬩簬", Status=0 },
+
+ new SysDictData{Id=142307070922851, TypeId=142307070922829, Value="int", Code="int", Sort=100, Remark="int", Status=0 },
+ new SysDictData{Id=142307070922846, TypeId=142307070922829, Value="long", Code="long", Sort=100, Remark="long", Status=0 },
+ new SysDictData{Id=142307070922847, TypeId=142307070922829, Value="string", Code="string", Sort=100, Remark="string", Status=0 },
+ new SysDictData{Id=142307070922850, TypeId=142307070922829, Value="bool", Code="bool", Sort=100, Remark="bool", Status=0 },
+ new SysDictData{Id=142307070922852, TypeId=142307070922829, Value="double", Code="double", Sort=100, Remark="double", Status=0 },
+ new SysDictData{Id=142307070922848, TypeId=142307070922829, Value="DateTime", Code="DateTime", Sort=100, Remark="DateTime", Status=0 },
+ new SysDictData{Id=142307070922861, TypeId=142307070922829, Value="float", Code="float", Sort=100, Remark="float", Status=0 },
+ new SysDictData{Id=142307070922862, TypeId=142307070922829, Value="decimal", Code="decimal", Sort=100, Remark="decimal", Status=0 },
+ new SysDictData{Id=142307070922863, TypeId=142307070922829, Value="Guid", Code="Guid", Sort=100, Remark="Guid", Status=0 },
+ new SysDictData{Id=142307070922864, TypeId=142307070922829, Value="DateTimeOffset", Code="DateTimeOffset", Sort=100, Remark="DateTimeOffset", Status=0 },
+
+ new SysDictData{Id=142307070926943, TypeId=142307070926941, Value="闆嗗洟瑙掕壊", Code="0", Sort=100, Remark="闆嗗洟瑙掕壊", Status=0 },
+ new SysDictData{Id=142307070926944, TypeId=142307070926941, Value="鍔犵洘鍟嗚鑹�", Code="1", Sort=100, Remark="鍔犵洘鍟嗚鑹�", Status=0 },
+ new SysDictData{Id=142307070926945, TypeId=142307070926941, Value="闂ㄥ簵瑙掕壊", Code="2", Sort=100, Remark="闂ㄥ簵瑙掕壊", Status=0 },
+
+ new SysDictData{Id=142307070926946, TypeId=142307070926942, Value="涓�绾�", Code="1", Sort=100, Remark="涓�绾�", Status=0 },
+ new SysDictData{Id=142307070926947, TypeId=142307070926942, Value="浜岀骇", Code="2", Sort=100, Remark="浜岀骇", Status=0 },
+ new SysDictData{Id=142307070926948, TypeId=142307070926942, Value="涓夌骇", Code="3", Sort=100, Remark="涓夌骇", Status=0 },
+ new SysDictData{Id=142307070926949, TypeId=142307070926942, Value="鍥涚骇", Code="4", Sort=100, Remark="鍥涚骇", Status=0 },
+
+ new SysDictData{Id=285605336563781, TypeId=285605149831237, Value="榛樿琛ㄥ崟鍒嗙被", Code="DefaultFormType", Sort=100, Remark="榛樿琛ㄥ崟鍒嗙被", Status=0 },
+
+ new SysDictData{Id=285641495289925, TypeId=285641358889029, Value="榛樿鍒嗙被", Code="DefaultGroup", Sort=100, Remark="榛樿鍒嗙被", Status=0 },
+
+ new SysDictData{Id=355697634480197, TypeId=355694205325381, Value="鍏朵粬", Code="0", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697676427333, TypeId=355694205325381, Value="鏈ㄨ川", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697726726213, TypeId=355694205325381, Value="閲戝睘", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697755361349, TypeId=355694205325381, Value="濉戞枡", Code="3", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355697944657989, TypeId=355697881423941, Value="绂佺敤", Code="0", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697974415429, TypeId=355697881423941, Value="绌洪棽", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698005966917, TypeId=355697881423941, Value="缁勭洏", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698032828485, TypeId=355697881423941, Value="搴撲綅", Code="3", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355697634480198, TypeId=355697881423942, Value="閫氱敤", Code="0", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697676427399, TypeId=355697881423942, Value="鍗卞寲鍝�", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697726726200, TypeId=355697881423942, Value="娑蹭綋", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697755361301, TypeId=355697881423942, Value="璐甸噸鍝�", Code="3", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697755361302, TypeId=355697881423942, Value="姘斾綋", Code="4", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355697755361303, TypeId=355697881423942, Value="浣庢俯", Code="5", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355698270015557, TypeId=355698224758853, Value="鍏朵粬", Code="0", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698303508549, TypeId=355698224758853, Value="绔嬩綋搴�", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698328531013, TypeId=355698224758853, Value="鏅�氬簱", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698362712133, TypeId=355698224758853, Value="鍏叡搴�", Code="3", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355698476777541, TypeId=355698441912389, Value="绌洪棽", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698510786629, TypeId=355698441912389, Value="寰呭叆", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698549424197, TypeId=355698441912389, Value="瀛樿揣", Code="3", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698576941125, TypeId=355698441912389, Value="寰呭嚭", Code="4", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355698694561861, TypeId=355698661130309, Value="浣�", Code="1", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698716401733, TypeId=355698661130309, Value="涓�", Code="2", Sort=100, Remark="", Status=0 },
+ new SysDictData{Id=355698740326469, TypeId=355698661130309, Value="楂�", Code="3", Sort=100, Remark="", Status=0 },
+
+ new SysDictData{Id=355698898735173,TypeId=355698855280709,Value="鍏嶆",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355698924970053,TypeId=355698855280709,Value="鎶芥",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699041800261,TypeId=355699003580485,Value="鍘熸潗鏂�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699063255109,TypeId=355699003580485,Value="鍗婃垚鍝�",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699088330821,TypeId=355699003580485,Value="鎴愬搧",Code="3",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699113156677,TypeId=355699003580485,Value="绌烘墭",Code="4",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699219353669,TypeId=355699189051461,Value="闀垮害",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699243540549,TypeId=355699189051461,Value="閲嶉噺",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699345645637,TypeId=355699314061381,Value="cm",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699367575621,TypeId=355699314061381,Value="t",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699479236677,TypeId=355699447029829,Value="鎵嬪姩",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699505229893,TypeId=355699447029829,Value="鑷姩",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699615133765,TypeId=355699576467525,Value="鍏ュ簱",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699638476869,TypeId=355699576467525,Value="鍑哄簱",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699661889605,TypeId=355699576467525,Value="绉诲簱",Code="3",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699760455749,TypeId=355699731099717,Value="鏈墽琛�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699784736837,TypeId=355699731099717,Value="鎵ц涓�",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699813859397,TypeId=355699731099717,Value="瀹屾垚",Code="3",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=355699760455798,TypeId=355699731099718,Value="鏈墽琛�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699784736899,TypeId=355699731099718,Value="鎵ц涓�-AGV",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699813859300,TypeId=355699731099718,Value="鎵ц涓�-杈撻�佺嚎",Code="3",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699813859301,TypeId=355699731099718,Value="鎵ц涓�-鍫嗗灈鏈�",Code="4",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699813859302,TypeId=355699731099718,Value="绛夊緟",Code="5",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=355699813859303,TypeId=355699731099718,Value="瀹屾垚",Code="6",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=383290784104517,TypeId=383290718294085,Value="娉℃搏鍒囧壊",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=383290816860229,TypeId=383290718294085,Value="瑁呴厤杞﹂棿",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=383317608218693,TypeId=383317542490181,Value="鏈紑濮�",Code="0",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=383317718302789,TypeId=383317542490181,Value="杩愰�佷腑",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=383317751234629,TypeId=383317542490181,Value="瀹屾垚",Code="2",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=384394737053765,TypeId=384394636988485,Value="AGV",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=384394851618885,TypeId=384394636988485,Value="鍫嗗灈鏈�",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=384394877870149,TypeId=384394636988485,Value="RGV",Code="3",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=385412179521605,TypeId=385412129075269,Value="鍒囧壊",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=385412217618501,TypeId=385412129075269,Value="鍘嬪悎",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=385412280418373,TypeId=385412129075269,Value="CNC",Code="3",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=386523049214021,TypeId=386522984120389,Value="鍏ュ簱鍙�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475781,TypeId=386522984120389,Value="鍑哄簱鍙�",Code="2",Sort=100,Remark="",Status=0},
+
+
+ new SysDictData{Id=386523049214025,TypeId=386522984120391,Value="鏈紑濮�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475726,TypeId=386522984120391,Value="杩涜涓�",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475727,TypeId=386522984120391,Value="瀹屾垚",Code="3",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475728,TypeId=386522984120391,Value="鎾ゅ洖",Code="4",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=386523049214029,TypeId=386522984120392,Value="鍏ュ簱",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475730,TypeId=386522984120392,Value="鍑哄簱",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475731,TypeId=386522984120392,Value="璋冩嫧",Code="3",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475732,TypeId=386522984120392,Value="瓒婂簱",Code="4",Sort=100,Remark="",Status=0},
+
+ new SysDictData{Id=386523049214033,TypeId=386522984120393,Value="鏈笅鍙�",Code="1",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475734,TypeId=386522984120393,Value="宸蹭笅鍙�",Code="2",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475735,TypeId=386522984120393,Value="鎵ц涓�",Code="3",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475736,TypeId=386522984120393,Value="瀹屾垚",Code="4",Sort=100,Remark="",Status=0},
+ new SysDictData{Id=386523071475737,TypeId=386522984120393,Value="鎾ゅ洖",Code="5",Sort=100,Remark="",Status=0},
+
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs
new file mode 100644
index 0000000..f303a60
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysDictTypeSeedData.cs
@@ -0,0 +1,86 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺瀛楀吀绫诲瀷绉嶅瓙鏁版嵁
+ /// </summary>
+ public class SysDictTypeSeedData : IEntitySeedData<SysDictType>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysDictType> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysDictType{Id=142307070906483, Name="閫氱敤鐘舵��", Code="common_status", Sort=100, Remark="閫氱敤鐘舵��", Status=0 },
+ new SysDictType{Id=142307070906484, Name="鎬у埆", Code="sex", Sort=100, Remark="鎬у埆瀛楀吀", Status=0 },
+ new SysDictType{Id=142307070906485, Name="甯搁噺鐨勫垎绫�", Code="consts_type", Sort=100, Remark="甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�", Status=0 },
+ new SysDictType{Id=142307070906486, Name="鏄惁", Code="yes_or_no", Sort=100, Remark="鏄惁", Status=0 },
+ new SysDictType{Id=142307070906487, Name="璁块棶绫诲瀷", Code="vis_type", Sort=100, Remark="璁块棶绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070906488, Name="鑿滃崟绫诲瀷", Code="menu_type", Sort=100, Remark="鑿滃崟绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070906489, Name="鍙戦�佺被鍨�", Code="send_type", Sort=100, Remark="鍙戦�佺被鍨�", Status=0 },
+ new SysDictType{Id=142307070906490, Name="鎵撳紑鏂瑰紡", Code="open_type", Sort=100, Remark="鎵撳紑鏂瑰紡", Status=0 },
+ new SysDictType{Id=142307070906491, Name="鑿滃崟鏉冮噸", Code="menu_weight", Sort=100, Remark="鑿滃崟鏉冮噸", Status=0 },
+ new SysDictType{Id=142307070906492, Name="鏁版嵁鑼冨洿绫诲瀷", Code="data_scope_type", Sort=100, Remark="鏁版嵁鑼冨洿绫诲瀷", Status=0 },
+ //new SysDictType{Id=142307070906493, Name="鐭俊鍙戦�佹潵婧�", Code="sms_send_source", Sort=100, Remark="鐭俊鍙戦�佹潵婧�", Status=0 },
+ new SysDictType{Id=142307070906494, Name="鎿嶄綔绫诲瀷", Code="op_type", Sort=100, Remark="鎿嶄綔绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070906495, Name="鏂囦欢瀛樺偍浣嶇疆", Code="file_storage_location", Sort=100, Remark="鏂囦欢瀛樺偍浣嶇疆", Status=0 },
+ new SysDictType{Id=142307070910533, Name="杩愯鐘舵��", Code="run_status", Sort=100, Remark="瀹氭椂浠诲姟杩愯鐘舵��", Status=0 },
+ new SysDictType{Id=142307070910534, Name="閫氱煡鍏憡绫诲瀷", Code="notice_type", Sort=100, Remark="閫氱煡鍏憡绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070910535, Name="閫氱煡鍏憡鐘舵��", Code="notice_status", Sort=100, Remark="閫氱煡鍏憡鐘舵��", Status=0 },
+ new SysDictType{Id=142307070910536, Name="鏄惁boolean", Code="yes_true_false", Sort=100, Remark="鏄惁boolean", Status=0 },
+ new SysDictType{Id=142307070910537, Name="浠g爜鐢熸垚鏂瑰紡", Code="code_gen_create_type", Sort=100, Remark="浠g爜鐢熸垚鏂瑰紡", Status=0 },
+ new SysDictType{Id=142307070910538, Name="璇锋眰鏂瑰紡", Code="request_type", Sort=100, Remark="璇锋眰鏂瑰紡", Status=0 },
+ new SysDictType{Id=142307070922827, Name="浠g爜鐢熸垚浣滅敤绫诲瀷", Code="code_gen_effect_type", Sort=100, Remark="浠g爜鐢熸垚浣滅敤绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070922828, Name="浠g爜鐢熸垚鏌ヨ绫诲瀷", Code="code_gen_query_type", Sort=100, Remark="浠g爜鐢熸垚鏌ヨ绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070922829, Name="浠g爜鐢熸垚.NET绫诲瀷", Code="code_gen_net_type", Sort=100, Remark="浠g爜鐢熸垚.NET绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070926941, Name="瑙掕壊绫诲瀷", Code="role_type", Sort=100, Remark="瑙掕壊绫诲瀷", Status=0 },
+ new SysDictType{Id=142307070926942, Name="鏈烘瀯绫诲瀷", Code="org_type", Sort=100, Remark="鏈烘瀯绫诲瀷", Status=0 },
+
+ new SysDictType{Id=285605149831237, Name="琛ㄥ崟绫诲瀷", Code="form_type", Sort=100, Remark="琛ㄥ崟绫诲瀷", Status=0 },
+
+ new SysDictType{Id=285641358889029, Name="娴佺▼鍒嗙被", Code="workflow_group", Sort=100, Remark="娴佺▼鍒嗙被", Status=0 },
+
+ new SysDictType{Id=355694205325381, Name="鎵樼洏绫诲瀷", Code="container_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355697881423941, Name="鎵樼洏鐘舵��", Code="container_status", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355697881423942, Name="鎵樼洏鍒嗙被", Code="container_category", Sort=100, Remark="", Status=0 },
+
+
+ new SysDictType{Id=355698224758853, Name="搴撳尯绫诲瀷", Code="area_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355698441912389, Name="搴撲綅鐘舵��", Code="place_status", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355698661130309, Name="搴撲綅楂樺害", Code="height_level", Sort=100, Remark="", Status=0 },
+
+ new SysDictType{Id=355698855280709, Name="鐗╂枡妫�楠�", Code="material_inspection", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355699003580485, Name="鐗╂枡绫诲埆", Code="material_type", Sort=100, Remark="", Status=0 },
+
+ new SysDictType{Id=355699189051461, Name="鍗曚綅绫诲埆", Code="unit_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355699314061381, Name="鍗曚綅缂栧彿", Code="unitno_type", Sort=100, Remark="", Status=0 },
+
+ new SysDictType{Id=355699447029829, Name="浠诲姟鏂瑰紡", Code="task_model", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355699576467525, Name="浠诲姟绫诲瀷", Code="task_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355699731099717, Name="浠诲姟鐘舵��", Code="task_status", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=355699731099718, Name="浠诲姟璁惧鐘舵��", Code="taskdodevice_statusenum", Sort=100, Remark="", Status=0 },
+
+
+ new SysDictType{Id=383290718294085, Name="鎵�灞炶溅闂�", Code="les_workshop_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=383317542490181, Name="鍙枡鍗曠姸鎬�", Code="les_takematerials_status", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=384394636988485, Name="璁惧绫诲瀷", Code="dodevice_type", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=385412129075269, Name="宸ユ", Code="lesworkshop_section", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=386522984120389, Name="搴撳彛绫诲瀷", Code="les_entrance_type", Sort=100, Remark="", Status=0 },
+
+
+ new SysDictType{Id=386522984120391, Name="鍗曟嵁鏄庣粏琛ㄧ姸鎬�", Code="orderdetails_statusenum", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=386522984120392, Name="鍗曟嵁澶х被", Code="orderlargecategory_Enum", Sort=100, Remark="", Status=0 },
+ new SysDictType{Id=386522984120393, Name="鍗曟嵁涓昏〃鐘舵��", Code="order_statusenum", Sort=100, Remark="", Status=0 },
+
+
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs
new file mode 100644
index 0000000..1a53969
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpExtOrgPos.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysEmpExtOrgPosData : IEntitySeedData<SysEmpExtOrgPos>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysEmpExtOrgPos> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910539, SysPosId = 142307070910547 },
+ new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910540, SysPosId = 142307070910548 },
+ new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910541, SysPosId = 142307070910549 },
+ new SysEmpExtOrgPos { SysEmpId = 142307070910551, SysOrgId = 142307070910542, SysPosId = 142307070910550 },
+ new SysEmpExtOrgPos { SysEmpId = 142307070910553, SysOrgId = 142307070910542, SysPosId = 142307070910547 }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs
new file mode 100644
index 0000000..4723cd9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpPosSeedData.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鍛樺伐鑱屼綅琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysEmpPosSeedData : IEntitySeedData<SysEmpPos>
+ {
+ /// <summary>
+ /// 鍛樺伐绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysEmpPos> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysEmpPos{SysEmpId=142307070910551, SysPosId=142307070910547 },
+ new SysEmpPos{SysEmpId=142307070910551, SysPosId=142307070910548 },
+ new SysEmpPos{SysEmpId=142307070910552, SysPosId=142307070910549 },
+ new SysEmpPos{SysEmpId=142307070910553, SysPosId=142307070910547 },
+ new SysEmpPos{SysEmpId=358533464608837, SysPosId=142307070910550 },
+ new SysEmpPos{SysEmpId=358536045723717, SysPosId=142307070910550 },
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs
new file mode 100644
index 0000000..fa98046
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysEmpSeedData.cs
@@ -0,0 +1,38 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鍛樺伐琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysEmpSeedData : IEntitySeedData<SysEmp>
+ {
+ /// <summary>
+ /// 鍛樺伐绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysEmp> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysEmp{Id=142307070910551, JobNum="D1001", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+ new SysEmp{Id=142307070910552, JobNum="D1002", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+ new SysEmp{Id=142307070910553, JobNum="D1003", OrgId=142307070910539, OrgName="绉熸埛3鍏徃" },
+
+ new SysEmp{Id=142307070910554, JobNum="D1001", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+ new SysEmp{Id=142307070910555, JobNum="D1002", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+ new SysEmp{Id=142307070910556, JobNum="D1003", OrgId=142307070910547, OrgName="绉熸埛1鍏徃" },
+
+ new SysEmp{Id=142307070910557, JobNum="D1001", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+ new SysEmp{Id=142307070910558, JobNum="D1002", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+ new SysEmp{Id=142307070910559, JobNum="D1003", OrgId=142307070910548, OrgName="绉熸埛2鍏徃" },
+
+ new SysEmp{Id=358533464608837, JobNum="", OrgId=142307070910539, OrgName="浼熸湰鑲′唤鏈夐檺鍏徃" },
+ new SysEmp{Id=358536045723717, JobNum="", OrgId=142307070910542, OrgName="鐮斿彂閮�" }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs
new file mode 100644
index 0000000..432c656
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysMenuSeedData.cs
@@ -0,0 +1,285 @@
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鑿滃崟琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysMenuSeedData : IEntitySeedData<SysMenu>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysMenu> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysMenu{Id=142307000914633, Pid=0, Pids="[0],", Name="缁勭粐鏋舵瀯", Code="sys_mgr", Type=MenuType.DIR, Icon="team", Router="/sys", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910581, Pid=142307000914633, Pids="[0],[142307000914633],", Name="鏈烘瀯绠$悊", Code="sys_org_mgr", Type=MenuType.MENU, Router="/org", Component="system/org/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910582, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鏌ヨ", Code="sys_org_mgr_page", Type=MenuType.BTN, Permission="sysOrg:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910583, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鍒楄〃", Code="sys_org_mgr_list", Type=MenuType.BTN, Permission="sysOrg:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910584, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯澧炲姞", Code="sys_org_mgr_add", Type=MenuType.BTN, Permission="sysOrg:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910585, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯缂栬緫", Code="sys_org_mgr_edit", Type=MenuType.BTN, Permission="sysOrg:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910586, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鍒犻櫎", Code="sys_org_mgr_delete", Type=MenuType.BTN, Permission="sysOrg:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910587, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯璇︽儏", Code="sys_org_mgr_detail", Type=MenuType.BTN, Permission="sysOrg:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910588, Pid=142307070910581, Pids="[0],[142307000914633],[142307070910581],", Name="鏈烘瀯鏍�", Code="sys_org_mgr_tree", Type=MenuType.BTN, Permission="sysOrg:tree", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910589, Pid=142307000914633, Pids="[0],[142307000914633],", Name="鑱屼綅绠$悊", Code="sys_pos_mgr", Type=MenuType.MENU, Router="/pos", Component="system/pos/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910590, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鏌ヨ", Code="sys_pos_mgr_page", Type=MenuType.BTN, Permission="sysPos:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910591, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鍒楄〃", Code="sys_pos_mgr_list", Type=MenuType.BTN, Permission="sysPos:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914629, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅澧炲姞", Code="sys_pos_mgr_add", Type=MenuType.BTN, Permission="sysPos:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914630, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅缂栬緫", Code="sys_pos_mgr_edit", Type=MenuType.BTN, Permission="sysPos:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070914631, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅鍒犻櫎", Code="sys_pos_mgr_delete", Type=MenuType.BTN, Permission="sysPos:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914632, Pid=142307070910589, Pids="[0],[142307000914633],[142307070910589],", Name="鑱屼綅璇︽儏", Code="sys_pos_mgr_detail", Type=MenuType.BTN, Permission="sysPos:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070910563, Pid=0, Pids="[0],", Name="鏉冮檺绠$悊", Code="auth_manager", Type=MenuType.DIR, Icon="safety-certificate", Router="/auth", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910564, Pid=142307070910563, Pids="[0],[142307070910563],", Name="鐢ㄦ埛绠$悊", Code="sys_user_mgr", Type=MenuType.MENU, Router="/mgr_user", Component="system/user/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910565, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鏌ヨ", Code="sys_user_mgr_page", Type=MenuType.BTN, Permission="sysUser:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910566, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛缂栬緫", Code="sys_user_mgr_edit", Type=MenuType.BTN, Permission="sysUser:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910567, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛澧炲姞", Code="sys_user_mgr_add", Type=MenuType.BTN, Permission="sysUser:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910568, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鍒犻櫎", Code="sys_user_mgr_delete", Type=MenuType.BTN, Permission="sysUser:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910569, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛璇︽儏", Code="sys_user_mgr_detail", Type=MenuType.BTN, Permission="sysUser:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910570, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛瀵煎嚭", Code="sys_user_mgr_export", Type=MenuType.BTN, Permission="sysUser:export", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910571, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛閫夋嫨鍣�", Code="sys_user_mgr_selector", Type=MenuType.BTN, Permission="sysUser:selector", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910572, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎺堟潈瑙掕壊", Code="sys_user_mgr_grant_role", Type=MenuType.BTN, Permission="sysUser:grantRole", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910573, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎷ユ湁瑙掕壊", Code="sys_user_mgr_own_role", Type=MenuType.BTN, Permission="sysUser:ownRole", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910574, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎺堟潈鏁版嵁", Code="sys_user_mgr_grant_data", Type=MenuType.BTN, Permission="sysUser:grantData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910575, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鎷ユ湁鏁版嵁", Code="sys_user_mgr_own_data", Type=MenuType.BTN, Permission="sysUser:ownData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910576, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鏇存柊淇℃伅", Code="sys_user_mgr_update_info", Type=MenuType.BTN, Permission="sysUser:updateInfo", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910577, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼瀵嗙爜", Code="sys_user_mgr_update_pwd", Type=MenuType.BTN, Permission="sysUser:updatePwd", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910578, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼鐘舵��", Code="sys_user_mgr_change_status", Type=MenuType.BTN, Permission="sysUser:changeStatus", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070910579, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛淇敼澶村儚", Code="sys_user_mgr_update_avatar", Type=MenuType.BTN, Permission="sysUser:updateAvatar", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070910580, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛閲嶇疆瀵嗙爜", Code="sys_user_mgr_reset_pwd", Type=MenuType.BTN, Permission="sysUser:resetPwd", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918777, Pid=142307070910564, Pids="[0],[142307070910563],[142307070910564],", Name="鐢ㄦ埛鐧诲綍淇℃伅", Code="sys_user_mgr_login", Type=MenuType.BTN, Permission="getLoginUser", Application="manage", OpenType=MenuOpenType.NONE, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.DISABLE },
+ new SysMenu{Id=142307070914651, Pid=142307070910563, Pids="[0],[142307070910563],", Name="瑙掕壊绠$悊", Code="sys_role_mgr", Type=MenuType.MENU, Router="/role", Component="system/role/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070914652, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鏌ヨ", Code="sys_role_mgr_page", Type=MenuType.BTN, Permission="sysRole:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914653, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊澧炲姞", Code="sys_role_mgr_add", Type=MenuType.BTN, Permission="sysRole:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914654, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊缂栬緫", Code="sys_role_mgr_edit", Type=MenuType.BTN, Permission="sysRole:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914655, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鍒犻櫎", Code="sys_role_mgr_delete", Type=MenuType.BTN, Permission="sysRole:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914656, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊璇︽儏", Code="sys_role_mgr_detail", Type=MenuType.BTN, Permission="sysRole:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914657, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊涓嬫媺", Code="sys_role_mgr_drop_down", Type=MenuType.BTN, Permission="sysRole:dropDown", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914658, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎺堟潈鑿滃崟", Code="sys_role_mgr_grant_menu", Type=MenuType.BTN, Permission="sysRole:grantMenu", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914659, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎷ユ湁鑿滃崟", Code="sys_role_mgr_own_menu", Type=MenuType.BTN, Permission="sysRole:ownMenu", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914660, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎺堟潈鏁版嵁", Code="sys_role_mgr_grant_data", Type=MenuType.BTN, Permission="sysRole:grantData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914661, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="瑙掕壊鎷ユ湁鏁版嵁", Code="sys_role_mgr_own_data", Type=MenuType.BTN, Permission="sysRole:ownData", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914648, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="鑿滃崟鎺堟潈鏍�", Code="sys_menu_mgr_grant_tree", Type=MenuType.BTN, Permission="sysMenu:treeForGrant", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914649, Pid=142307070914651, Pids="[0],[142307070910563],[142307070914651],", Name="鑿滃崟鏍�", Code="sys_menu_mgr_tree", Type=MenuType.BTN, Permission="sysMenu:tree", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070914633, Pid=0, Pids="[0],", Name="骞冲彴绠$悊", Code="sys_platform", Type=MenuType.DIR, Icon="safety-certificate", Router="/platform", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914634, Pid=142307070914633, Pids="[0],[142307070914633],", Name="搴旂敤绠$悊", Code="sys_app_mgr", Type=MenuType.MENU, Router="/app", Component="system/app/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914635, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鏌ヨ", Code="sys_app_mgr_page", Type=MenuType.BTN, Permission="sysApp:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914636, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鍒楄〃", Code="sys_app_mgr_list", Type=MenuType.BTN, Permission="sysApp:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914637, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤澧炲姞", Code="sys_app_mgr_add", Type=MenuType.BTN, Permission="sysApp:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914638, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤缂栬緫", Code="sys_app_mgr_edit", Type=MenuType.BTN, Permission="sysApp:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914639, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤鍒犻櫎", Code="sys_app_mgr_delete", Type=MenuType.BTN, Permission="sysApp:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914640, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="搴旂敤璇︽儏", Code="sys_app_mgr_detail", Type=MenuType.BTN, Permission="sysApp:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914641, Pid=142307070914634, Pids="[0],[142307070914633],[142307070914634],", Name="璁句负榛樿搴旂敤", Code="sys_app_mgr_set_as_default", Type=MenuType.BTN, Permission="sysApp:setAsDefault", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914642, Pid=142307070914633, Pids="[0],[142307070914633],", Name="鑿滃崟绠$悊", Code="sys_menu_mgr", Type=MenuType.MENU, Router="/menu", Component="system/menu/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070914643, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒楄〃", Code="sys_menu_mgr_list", Type=MenuType.BTN, Permission="sysMenu:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914644, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟澧炲姞", Code="sys_menu_mgr_add", Type=MenuType.BTN, Permission="sysMenu:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914645, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟缂栬緫", Code="sys_menu_mgr_edit", Type=MenuType.BTN, Permission="sysMenu:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914646, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒犻櫎", Code="sys_menu_mgr_delete", Type=MenuType.BTN, Permission="sysMenu:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914647, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟璇︽儏", Code="sys_menu_mgr_detail", Type=MenuType.BTN, Permission="sysMenu:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914650, Pid=142307070914642, Pids="[0],[142307070914633],[142307070914642],", Name="鑿滃崟鍒囨崲", Code="sys_menu_mgr_change", Type=MenuType.BTN, Permission="sysMenu:change", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //澧炲姞PDA鑿滃崟椤甸潰 銆怑ditby shaocx,2024-04-07銆�
+ new SysMenu{Id=494834310545477, Pid=142307070914633, Pids="[0],[142307070914633],", Name="Pda鑿滃崟", Code="sys_wmspdapower_mgr", Type=MenuType.MENU, Router="/WmsPdaPower", Component="main/WmsPdaPower/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=101, Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=142307070914662, Pid=0, Pids="[0],", Name="寮�鍙戠鐞�", Code="system_tools", Type=MenuType.DIR, Icon="euro", Router="/tools", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914663, Pid=142307070914662, Pids="[0],[142307070914662],", Name="绯荤粺閰嶇疆", Code="system_tools_config", Type=MenuType.MENU, Router="/config", Component="system/config/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914664, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鏌ヨ", Code="system_tools_config_page", Type=MenuType.BTN, Permission="sysConfig:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914665, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鍒楄〃", Code="system_tools_config_list", Type=MenuType.BTN, Permission="sysConfig:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914666, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆澧炲姞", Code="system_tools_config_add", Type=MenuType.BTN, Permission="sysConfig:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914667, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆缂栬緫", Code="system_tools_config_edit", Type=MenuType.BTN, Permission="sysConfig:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914668, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆鍒犻櫎", Code="system_tools_config_delete", Type=MenuType.BTN, Permission="sysConfig:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914669, Pid=142307070914663, Pids="[0],[142307070914662],[142307070914663],", Name="閰嶇疆璇︽儏", Code="system_tools_config_detail", Type=MenuType.BTN, Permission="sysConfig:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070914671, Pid=142307070914662, Pids="[0],[142307070914662],", Name="閭欢鍙戦��", Code="sys_email_mgr", Type=MenuType.MENU, Router="/email", Component="system/email/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ //new SysMenu{Id=142307070914672, Pid=142307070914671, Pids="[0],[142307070914662],[142307070914671],", Name="鍙戦�佹枃鏈偖浠�", Code="sys_email_mgr_send_email", Type=MenuType.BTN, Permission="email:sendEmail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070914673, Pid=142307070914671, Pids="[0],[142307070914662],[142307070914671],", Name="鍙戦�乭tml閭欢", Code="sys_email_mgr_send_email_html", Type=MenuType.BTN, Permission="email:sendEmailHtml", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070914674, Pid=142307070914662, Pids="[0],[142307070914662],", Name="鐭俊绠$悊", Code="sys_sms_mgr", Type=MenuType.MENU, Router="/sms", Component="system/sms/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ //new SysMenu{Id=142307070914675, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="鐭俊鍙戦�佹煡璇�", Code="sys_sms_mgr_page", Type=MenuType.BTN, Permission="sms:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070914676, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="鍙戦�侀獙璇佺爜鐭俊", Code="sys_sms_mgr_send_login_message", Type=MenuType.BTN, Permission="sms:sendLoginMessage", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070914677, Pid=142307070914674, Pids="[0],[142307070914662],[142307070914674],", Name="楠岃瘉鐭俊楠岃瘉鐮�", Code="sys_sms_mgr_validate_message", Type=MenuType.BTN, Permission="sms:validateMessage", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914678, Pid=142307070914662, Pids="[0],[142307070914662],", Name="瀛楀吀绠$悊", Code="sys_dict_mgr", Type=MenuType.MENU, Router="/dict", Component="system/dict/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070914679, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鏌ヨ", Code="sys_dict_mgr_dict_type_page", Type=MenuType.BTN, Permission="sysDictType:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914680, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鍒楄〃", Code="sys_dict_mgr_dict_type_list", Type=MenuType.BTN, Permission="sysDictType:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914681, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷澧炲姞", Code="sys_dict_mgr_dict_type_add", Type=MenuType.BTN, Permission="sysDictType:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914682, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷鍒犻櫎", Code="sys_dict_mgr_dict_type_delete", Type=MenuType.BTN, Permission="sysDictType:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914683, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷缂栬緫", Code="sys_dict_mgr_dict_type_edit", Type=MenuType.BTN, Permission="sysDictType:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914684, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷璇︽儏", Code="sys_dict_mgr_dict_type_detail", Type=MenuType.BTN, Permission="sysDictType:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914685, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷涓嬫媺", Code="sys_dict_mgr_dict_type_drop_down", Type=MenuType.BTN, Permission="sysDictType:dropDown", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914686, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀绫诲瀷淇敼鐘舵��", Code="sys_dict_mgr_dict_type_change_status", Type=MenuType.BTN, Permission="sysDictType:changeStatus", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070914687, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊兼煡璇�", Code="sys_dict_mgr_dict_page", Type=MenuType.BTN, Permission="sysDictData:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918725, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎垪琛�", Code="sys_dict_mgr_dict_list", Type=MenuType.BTN, Permission="sysDictData:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918726, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎鍔�", Code="sys_dict_mgr_dict_add", Type=MenuType.BTN, Permission="sysDictData:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918727, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊煎垹闄�", Code="sys_dict_mgr_dict_delete", Type=MenuType.BTN, Permission="sysDictData:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918728, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊肩紪杈�", Code="sys_dict_mgr_dict_edit", Type=MenuType.BTN, Permission="sysDictData:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918729, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊艰鎯�", Code="sys_dict_mgr_dict_detail", Type=MenuType.BTN, Permission="sysDictData:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918730, Pid=142307070914678, Pids="[0],[142307070914662],[142307070914678],", Name="瀛楀吀鍊间慨鏀圭姸鎬�", Code="sys_dict_mgr_dict_change_status", Type=MenuType.BTN, Permission="sysDictData:changeStatus", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918731, Pid=142307070914662, Pids="[0],[142307070914662],", Name="鎺ュ彛鏂囨。", Code="sys_swagger_mgr", Type=MenuType.MENU, Router="/swagger", Component="Iframe", Application="system", OpenType=MenuOpenType.INNER, Visible="Y", Link="http://localhost:6677/swagger/", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=142307070918732, Pid=0, Pids="[0],", Name="鏃ュ織绠$悊", Code="sys_log_mgr", Type=MenuType.DIR, Icon="read", Router="/log", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918733, Pid=142307070918732, Pids="[0],[142307070918732],", Name="璁块棶鏃ュ織", Code="sys_log_mgr_vis_log", Type=MenuType.MENU, Router="/vislog", Component="system/log/vislog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918734, Pid=142307070918733, Pids="[0],[142307070918732],[142307070918733],", Name="璁块棶鏃ュ織鏌ヨ", Code="sys_log_mgr_vis_log_page", Type=MenuType.BTN, Permission="sysVisLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918735, Pid=142307070918733, Pids="[0],[142307070918732],[142307070918733],", Name="璁块棶鏃ュ織娓呯┖", Code="sys_log_mgr_vis_log_delete", Type=MenuType.BTN, Permission="sysVisLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918736, Pid=142307070918732, Pids="[0],[142307070918732],", Name="鎿嶄綔鏃ュ織", Code="sys_log_mgr_op_log", Type=MenuType.MENU, Router="/oplog", Component="system/log/oplog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070918737, Pid=142307070918736, Pids="[0],[142307070918732],[142307070918736],", Name="鎿嶄綔鏃ュ織鏌ヨ", Code="sys_log_mgr_op_log_page", Type=MenuType.BTN, Permission="sysOpLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918738, Pid=142307070918736, Pids="[0],[142307070918732],[142307070918736],", Name="鎿嶄綔鏃ュ織娓呯┖", Code="sys_log_mgr_op_log_delete", Type=MenuType.BTN, Permission="sysOpLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070911739, Pid=142307070918732, Pids="[0],[142307070918732],", Name="寮傚父鏃ュ織", Code="sys_log_mgr_ex_log", Type=MenuType.MENU, Router="/exlog", Component="system/log/exlog/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070911740, Pid=142307070911739, Pids="[0],[142307070918732],[142307070911739],", Name="寮傚父鏃ュ織鏌ヨ", Code="sys_log_mgr_ex_log_page", Type=MenuType.BTN, Permission="sysExLog:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070911741, Pid=142307070911739, Pids="[0],[142307070918732],[142307070911739],", Name="寮傚父鏃ュ織娓呯┖", Code="sys_log_mgr_ex_log_delete", Type=MenuType.BTN, Permission="sysExLog:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070918739, Pid=0, Pids="[0],", Name="绯荤粺鐩戞帶", Code="sys_monitor_mgr", Type=MenuType.DIR, Icon="deployment-unit", Router="/monitor", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918740, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鏈嶅姟鐩戞帶", Code="sys_monitor_mgr_machine_monitor", Type=MenuType.MENU, Router="/machine", Component="system/machine/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918741, Pid=142307070918740, Pids="[0],[142307070918739],[142307070918740],", Name="鏈嶅姟鐩戞帶鏌ヨ", Code="sys_monitor_mgr_machine_monitor_query", Type=MenuType.BTN, Permission="sysMachine:query", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918742, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鍦ㄧ嚎鐢ㄦ埛", Code="sys_monitor_mgr_online_user", Type=MenuType.MENU, Router="/onlineUser", Component="system/onlineUser/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070918743, Pid=142307070918742, Pids="[0],[142307070918739],[142307070918742],", Name="鍦ㄧ嚎鐢ㄦ埛鏌ヨ", Code="sys_monitor_mgr_online_user_page", Type=MenuType.BTN, Permission="sysOnlineUser:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918744, Pid=142307070918742, Pids="[0],[142307070918739],[142307070918742],", Name="鍦ㄧ嚎鐢ㄦ埛寮洪��", Code="sys_monitor_mgr_online_user_force_exist", Type=MenuType.BTN, Permission="sysOnlineUser:forceExist", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918745, Pid=142307070918739, Pids="[0],[142307070918739],", Name="鏁版嵁鐩戞帶", Code="sys_monitor_mgr_druid", Type=MenuType.MENU, Router="/druid", Component="Iframe", Application="system", OpenType=MenuOpenType.INNER, Visible="N", Link="http://localhost:82/druid/login.html", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=142307070918746, Pid=0, Pids="[0],", Name="閫氱煡鍏憡", Code="sys_notice", Type=MenuType.DIR, Icon="sound", Router="/notice", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918747, Pid=142307070918746, Pids="[0],[142307070918746],", Name="鍏憡绠$悊", Code="sys_notice_mgr", Type=MenuType.MENU, Router="/notice", Component="system/notice/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918748, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鏌ヨ", Code="sys_notice_mgr_page", Type=MenuType.BTN, Permission="sysNotice:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918749, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡澧炲姞", Code="sys_notice_mgr_add", Type=MenuType.BTN, Permission="sysNotice:add", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918750, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡缂栬緫", Code="sys_notice_mgr_edit", Type=MenuType.BTN, Permission="sysNotice:edit", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918751, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鍒犻櫎", Code="sys_notice_mgr_delete", Type=MenuType.BTN, Permission="sysNotice:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918752, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡鏌ョ湅", Code="sys_notice_mgr_detail", Type=MenuType.BTN, Permission="sysNotice:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918753, Pid=142307070918747, Pids="[0],[142307070918746],[142307070918747],", Name="鍏憡淇敼鐘舵��", Code="sys_notice_mgr_changeStatus", Type=MenuType.BTN, Permission="sysNotice:changeStatus", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918754, Pid=142307070918746, Pids="[0],[142307070918746],", Name="宸叉敹鍏憡", Code="sys_notice_mgr_received", Type=MenuType.MENU, Router="/noticeReceived", Component="system/noticeReceived/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE},
+ new SysMenu{Id=142307070918755, Pid=142307070918754, Pids="[0],[142307070918746],[142307070918754],", Name="宸叉敹鍏憡鏌ヨ", Code="sys_notice_mgr_received_page", Type=MenuType.BTN, Permission="sysNotice:received", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070918756, Pid=0, Pids="[0],", Name="鏂囦欢绠$悊", Code="sys_file_mgr", Type=MenuType.DIR, Icon="file", Router="/file", Component="PageView", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918757, Pid=142307070918756, Pids="[0],[142307070918756],", Name="绯荤粺鏂囦欢", Code="sys_file_mgr_sys_file", Type=MenuType.MENU, Router="/file", Component="system/file/index", Application="manage", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918758, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鏌ヨ", Code="sys_file_mgr_sys_file_page", Type=MenuType.BTN, Permission="sysFileInfo:page", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918759, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鍒楄〃", Code="sys_file_mgr_sys_file_list", Type=MenuType.BTN, Permission="sysFileInfo:list", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918760, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢鍒犻櫎", Code="sys_file_mgr_sys_file_delete", Type=MenuType.BTN, Permission="sysFileInfo:delete", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918761, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢璇︽儏", Code="sys_file_mgr_sys_file_detail", Type=MenuType.BTN, Permission="sysFileInfo:detail", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918762, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢涓婁紶", Code="sys_file_mgr_sys_file_upload", Type=MenuType.BTN, Permission="sysFileInfo:upload", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918763, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囦欢涓嬭浇", Code="sys_file_mgr_sys_file_download", Type=MenuType.BTN, Permission="sysFileInfo:download", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918764, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鍥剧墖棰勮", Code="sys_file_mgr_sys_file_preview", Type=MenuType.BTN, Permission="sysFileInfo:preview", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070922874, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="澶村儚涓婁紶", Code="sys_file_mgr_sys_file_upload_avatar", Type=MenuType.BTN, Permission="sysFileInfo:uploadAvatar", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070922875, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鏂囨。涓婁紶", Code="sys_file_mgr_sys_file_upload_document", Type=MenuType.BTN, Permission="sysFileInfo:uploadDocument", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070922876, Pid=142307070918757, Pids="[0],[142307070918756],[142307070918757],", Name="鍟嗗煄涓婁紶", Code="sys_file_mgr_sys_file_upload_shop", Type=MenuType.BTN, Permission="sysFileInfo:uploadShop", Application="manage", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070918765, Pid=0, Pids="[0],", Name="浠诲姟璋冨害", Code="sys_timers", Type=MenuType.DIR, Icon="dashboard", Router="/timers", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918766, Pid=142307070918765, Pids="[0],[142307070918765],", Name="浠诲姟绠$悊", Code="sys_timers_mgr", Type=MenuType.MENU, Router="/timers", Component="system/timers/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918767, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鏌ヨ", Code="sys_timers_mgr_page", Type=MenuType.BTN, Permission="sysTimers:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918768, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍒楄〃", Code="sys_timers_mgr_list", Type=MenuType.BTN, Permission="sysTimers:list", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918769, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟璇︽儏", Code="sys_timers_mgr_detail", Type=MenuType.BTN, Permission="sysTimers:detail", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918770, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟澧炲姞", Code="sys_timers_mgr_add", Type=MenuType.BTN, Permission="sysTimers:add", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918771, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍒犻櫎", Code="sys_timers_mgr_delete", Type=MenuType.BTN, Permission="sysTimers:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918772, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟缂栬緫", Code="sys_timers_mgr_edit", Type=MenuType.BTN, Permission="sysTimers:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918773, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍙墽琛屽垪琛�", Code="sys_timers_mgr_get_action_classes", Type=MenuType.BTN, Permission="sysTimers:getActionClasses", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918774, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍚姩", Code="sys_timers_mgr_start", Type=MenuType.BTN, Permission="sysTimers:start", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918775, Pid=142307070918766, Pids="[0],[142307070918765],[142307070918766],", Name="瀹氭椂浠诲姟鍏抽棴", Code="sys_timers_mgr_stop", Type=MenuType.BTN, Permission="sysTimers:stop", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070918776, Pid=0, Pids="[0],", Name="浠g爜鐢熸垚", Code="code_gen", Type=MenuType.DIR, Icon="thunderbolt", Router="/codeGenerate", Component="PageView", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918778, Pid=142307070918776, Pids="[0],[142307070918776],", Name="琛ㄥ崟璁捐", Code="low_code", Type=MenuType.MENU, Router="/lowCode/index", Component="gen/lowCode/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ new SysMenu{Id=142307070918779, Pid=142307070918776, Pids="[0],[142307070918776],", Name="浠g爜鐢熸垚", Code="code_gen_gen", Type=MenuType.MENU, Router="/codeGenerate/index", Component="gen/codeGenerate/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070918780, Pid=142307070918776, Pids="[0],[142307070918776],", Name="缁勪欢绠$悊", Code="code_gen_assembly", Type=MenuType.MENU, Router="/codeGenerate/assembly", Component="gen/codeGenerate/assembly", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=142307070922870, Pid=285599875018821, Pids="[0],[285599875018821],", Name="琛ㄥ崟璁捐", Code="form_design", Type=MenuType.MENU, Icon=null, Router="/formDesign/index", Component="system/formDesign/index", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+
+
+ //new SysMenu{Id=142307070910560, Pid=0, Pids="[0],", Name="涓绘帶闈㈡澘", Code="system_index", Type=MenuType.DIR, Icon="home", Router="/", Component="RouteView", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Redirect="/analysis", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=1, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070910561, Pid=142307070910560, Pids="[0],[142307070910560],", Name="鍒嗘瀽椤�", Code="system_index_dashboard", Type=MenuType.MENU, Router="analysis", Component="system/dashboard/Analysis", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+ //new SysMenu{Id=142307070910562, Pid=142307070910560, Pids="[0],[142307070910560],", Name="宸ヤ綔鍙�", Code="system_index_workplace", Type=MenuType.MENU, Router="workplace", Component="system/dashboard/Workplace", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=142307070922877, Pid=0, Pids="[0],", Name="澶у睆鐩戞帶", Code="main_screen_monitor", Type=MenuType.MENU, Icon="desktop", Router="/monitor", Component="main/screenMonitor/index", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=142307070922878, Pid=0, Pids="[0],", Name="鍦扮悊淇℃伅", Code="main_map", Type=MenuType.MENU, Icon="global", Router="/map", Component="main/map/index", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // 宸ヤ綔娴佺鐞嗛〉闈�
+ //new SysMenu{Id=285314199617605, Pid=0, Pids="[0],", Name="宸ヤ綔娴�", Code="sys_workflow", Type=MenuType.DIR, Icon="branches", Router="/workflowmanage", Component="PageView", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285314749218885, Pid=285314199617605, Pids="[0],[285314199617605],", Name="宸ヤ綔娴佸垪琛�", Code="sys_workflow_index", Type=MenuType.MENU, Icon=null, Router="/workflowmanage/index", Component="system/workflow/index", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285326285971525, Pid=285314199617605, Pids="[0],[285314199617605],", Name="鏂板宸ヤ綔娴�", Code="sys_workflow_create", Type=MenuType.DIR, Icon=null, Router="/workflowmanage/create", Component="system/workflow/create", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285584465154117, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鏂板缓宸ヤ綔娴�", Code="btn_workflow_create", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:create", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=285643962318917, Pid=285314199617605, Pids="[0],[285314199617605],", Name="淇敼娴佺▼", Code="sys_workflow_edit", Type=MenuType.MENU, Icon=null, Router="/workflowmanage/edit", Component="system/workflow/edit", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285584607641669, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="淇敼宸ヤ綔娴�", Code="btn_workflow_edit", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285584792772677, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鍒犻櫎宸ヤ綔娴�", Code="btn_workflow_delete", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285314199617897, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="鏌ョ湅宸ヤ綔娴�", Code="btn_workflow_view", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:entity", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=286738138783813, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="寮�濮嬫祦绋�", Code="btn_workflow_start", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowmanager:start", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=286737918222405, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="娴佺▼杈撳叆鍙傛暟", Code="worklfow_inputparameter", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowmanager:inputsparameter", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // new SysMenu{Id=285314199617776, Pid=285314749218885, Pids="[0],[285314199617605],[285314749218885],", Name="宸ヤ綔娴佸垪琛�", Code="btn_workflow_page", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="workflowdefinition:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ // 琛ㄥ崟绠$悊
+ new SysMenu{Id=285599875018821, Pid=0, Pids="[0],", Name="琛ㄥ崟绠$悊", Code="sys_formDesign", Type=MenuType.DIR, Icon="snippets", Router="/formDesign", Component="PageView", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=285599875018823, Pid=285599875018821, Pids="[0],[285599875018821],", Name="琛ㄥ崟鍒楄〃", Code="sys_formDesign_list", Type=MenuType.MENU, Icon=null, Router="/formDesign/list", Component="system/formDesign/list", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=285635743518789, Pid=285599875018821, Pids="[0],[285599875018821],", Name="淇敼琛ㄥ崟", Code="sys_formDesign_edit", Type=MenuType.MENU, Icon=null, Router="/formDesign/edit", Component="system/formDesign/edit", Application="system", OpenType=MenuOpenType.COMPONENT, Visible="N", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=285640475689029, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="淇敼琛ㄥ崟", Code="btn_formDesign_edit", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:edit", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=285640599859269, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="鍒犻櫎琛ㄥ崟", Code="btn_formDesign_delete", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:delete", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=285640740945989, Pid=285599875018823, Pids="[0],[285599875018821],[285599875018823],", Name="琛ㄥ崟鍒楄〃", Code="btn_formDesign_page", Type=MenuType.BTN, Icon=null, Router="", Component="", Permission="formmanager:page", Application="system", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //// 鎴戠殑娴佺▼
+ //new SysMenu{Id=286349479379013, Pid=0, Pids="[0],", Name="鎴戠殑娴佺▼", Code="yw_myworkflow", Type=MenuType.MENU, Icon="branches", Router="/myworkflow", Component="system/myworkflow/index", Application="busiapp", OpenType=MenuOpenType.COMPONENT, Visible="Y", Weight=MenuWeight.SUPER_ADMIN_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=286737175605317, Pid=286349479379013, Pids="[0],[286349479379013],", Name="瀹℃牳", Code="btn_myworkflow_auditor", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="auditorworkflow:auditor", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=286349479379012, Pid=286349479379013, Pids="[0],[286349479379013],", Name="鎴戠殑浠诲姟", Code="myworkflow_auditor", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="auditorworkflow:myworkflowlist", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ //new SysMenu{Id=286349479379014, Pid=286349479379013, Pids="[0],[286349479379013],", Name="鎴戝彂璧风殑娴佺▼", Code="myworkflow_start", Type=MenuType.BTN, Icon="", Router="", Component="", Permission="workflowmanager:page", Application="busiapp", OpenType=MenuOpenType.NONE, Visible="Y", Weight=MenuWeight.DEFAULT_WEIGHT, Sort=100, Status=CommonStatus.ENABLE },
+
+ new SysMenu{Id=355687925174341,Pid=0,Pids="[0],",Name="鎵樼洏淇℃伅",Code="Maste_wmscontainer_mgr",Type=MenuType.MENU,Icon="border",Router="/wmscontainer",Component="main/WmsContainer/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355687925178437,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅鏌ヨ",Code="Maste_wmscontainer_mgr_page",Type=MenuType.BTN,Permission="WmsContainer:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355687925178438,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅璇︽儏",Code="Maste_wmscontainer_mgr_detail",Type=MenuType.BTN,Permission="WmsContainer:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355687925178439,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅澧炲姞",Code="Maste_wmscontainer_mgr_add",Type=MenuType.BTN,Permission="WmsContainer:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355687925182533,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅鍒犻櫎",Code="Maste_wmscontainer_mgr_delete",Type=MenuType.BTN,Permission="WmsContainer:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355687925182534,Pid=355687925174341,Pids="[0],[355687924998213],[355687925174341],",Name="鎵樼洏淇℃伅缂栬緫",Code="Maste_wmscontainer_mgr_edit",Type=MenuType.BTN,Permission="WmsContainer:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=355688792178757,Pid=0,Pids="[0],",Name="搴撳尯淇℃伅",Code="Maste_wmsarea_mgr",Type=MenuType.MENU,Icon="appstore",Router="/wmsarea",Component="main/WmsArea/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355688792182853,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅鏌ヨ",Code="Maste_wmsarea_mgr_page",Type=MenuType.BTN,Permission="WmsArea:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355688792182854,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅璇︽儏",Code="Maste_wmsarea_mgr_detail",Type=MenuType.BTN,Permission="WmsArea:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355688792186949,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅澧炲姞",Code="Maste_wmsarea_mgr_add",Type=MenuType.BTN,Permission="WmsArea:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355688792186950,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅鍒犻櫎",Code="Maste_wmsarea_mgr_delete",Type=MenuType.BTN,Permission="WmsArea:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355688792186951,Pid=355688792178757,Pids="[0],[355688792162373],[355688792178757],",Name="搴撳尯淇℃伅缂栬緫",Code="Maste_wmsarea_mgr_edit",Type=MenuType.BTN,Permission="WmsArea:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=355689496985669,Pid=0,Pids="[0],",Name="搴撲綅淇℃伅",Code="Maste_wmsplace_mgr",Type=MenuType.MENU,Icon="table",Router="/wmsplace",Component="main/WmsPlace/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355689496989765,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅鏌ヨ",Code="Maste_wmsplace_mgr_page",Type=MenuType.BTN,Permission="WmsPlace:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355689496993861,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅璇︽儏",Code="Maste_wmsplace_mgr_detail",Type=MenuType.BTN,Permission="WmsPlace:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355689496993862,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅澧炲姞",Code="Maste_wmsplace_mgr_add",Type=MenuType.BTN,Permission="WmsPlace:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355689496993863,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅鍒犻櫎",Code="Maste_wmsplace_mgr_delete",Type=MenuType.BTN,Permission="WmsPlace:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355689496993864,Pid=355689496985669,Pids="[0],[355689496977477],[355689496985669],",Name="搴撲綅淇℃伅缂栬緫",Code="Maste_wmsplace_mgr_edit",Type=MenuType.BTN,Permission="WmsPlace:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=355690042511429,Pid=0,Pids="[0],",Name="鐗╂枡淇℃伅",Code="Maste_wmsmaterial_mgr",Type=MenuType.MENU,Icon="barcode",Router="/wmsmaterial",Component="main/WmsMaterial/index",Application="busiapp",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355690042515525,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅鏌ヨ",Code="Maste_wmsmaterial_mgr_page",Type=MenuType.BTN,Permission="WmsMaterial:page",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355690042519621,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅璇︽儏",Code="Maste_wmsmaterial_mgr_detail",Type=MenuType.BTN,Permission="WmsMaterial:detail",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355690042519622,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅澧炲姞",Code="Maste_wmsmaterial_mgr_add",Type=MenuType.BTN,Permission="WmsMaterial:add",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355690042519623,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅鍒犻櫎",Code="Maste_wmsmaterial_mgr_delete",Type=MenuType.BTN,Permission="WmsMaterial:delete",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355690042519624,Pid=355690042511429,Pids="[0],[355690042499141],[355690042511429],",Name="鐗╂枡淇℃伅缂栬緫",Code="Maste_wmsmaterial_mgr_edit",Type=MenuType.BTN,Permission="WmsMaterial:edit",Application="busiapp",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+ new SysMenu{Id=355690923847749,Pid=0,Pids="[0],",Name="缁勭洏鍏ュ簱",Code="BindEntrance",Type=MenuType.MENU,Icon="logout",Router="/BindEntrance",Component="main/BindEntrance/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355691450822725,Pid=0,Pids="[0],",Name="鍑哄簱绠$悊",Code="ExWarehouse",Type=MenuType.MENU,Icon="login",Router="/ExWarehouse",Component="main/ExWarehouse/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355691891650629,Pid=0,Pids="[0],",Name="浠诲姟绠$悊",Code="WmsTask",Type=MenuType.MENU,Icon="hourglass",Router="/WmsTask",Component="main/WmsTask/index",Application="warejob",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355692253458501,Pid=0,Pids="[0],",Name="搴撲綅瑙嗗浘",Code="LocationView",Type=MenuType.MENU,Icon="hdd",Router="/LocationView",Component="main/LocationView/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=355692487622725,Pid=0,Pids="[0],",Name="鍑哄叆搴撹褰�",Code="View_AccessDetails",Type=MenuType.MENU,Icon="laptop",Router="/View_AccessDetails",Component="main/View_AccessDetails/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+
+
+
+ new SysMenu{Id=386851902500933,Pid=0,Pids="[0],",Name="搴撳瓨淇℃伅",Code="Maste_wmsmaterialstock_mgr",Type=MenuType.MENU,Icon="vertical-left",Router="/wmsmaterialstock",Component="main/WmsMaterialStock/index",Application="warecount",OpenType=MenuOpenType.COMPONENT,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=386851902545989,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨鏌ヨ",Code="Maste_wmsmaterialstock_mgr_page",Type=MenuType.BTN,Permission="WmsMaterialStock:page",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=386851902550085,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨璇︽儏",Code="Maste_wmsmaterialstock_mgr_detail",Type=MenuType.BTN,Permission="WmsMaterialStock:detail",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=386851902554181,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨澧炲姞",Code="Maste_wmsmaterialstock_mgr_add",Type=MenuType.BTN,Permission="WmsMaterialStock:add",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=386851902558277,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨鍒犻櫎",Code="Maste_wmsmaterialstock_mgr_delete",Type=MenuType.BTN,Permission="WmsMaterialStock:delete",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ new SysMenu{Id=386851902558278,Pid=386851902500933,Pids="[0],[386851902124101],[386851902500933],",Name="搴撳瓨缂栬緫",Code="Maste_wmsmaterialstock_mgr_edit",Type=MenuType.BTN,Permission="WmsMaterialStock:edit",Application="warecount",OpenType=MenuOpenType.NONE,Visible="Y",Weight=MenuWeight.DEFAULT_WEIGHT,Sort=100,Status=CommonStatus.ENABLE},
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs
new file mode 100644
index 0000000..3f64650
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysOrgSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鏈烘瀯琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysOrgSeedData : IEntitySeedData<SysOrg>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysOrg> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysOrg{Id=142307070910539, Pid=0, Pids="[0],", Name="浼熸湰鑲′唤鏈夐檺鍏徃", Code="wbgf", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃", Status=0 },
+ new SysOrg{Id=142307070910540, Pid=142307070910539, Pids="[0],[142307070910539],", Name="浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)", Code="wbgf_sh", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣", Status=0 },
+ new SysOrg{Id=142307070910541, Pid=142307070910539, Pids="[0],[142307070910539],", Name="浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)", Code="wbgf_cq", Sort=100, Remark="浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡", Status=0 },
+ new SysOrg{Id=142307070910542, Pid=142307070910540, Pids="[0],[142307070910539],[142307070910540],", Name="鐮斿彂閮�", Code="wbgf_sh_yfb", Sort=100, Remark="", Status=0 },
+ new SysOrg{Id=142307070910543, Pid=142307070910540, Pids="[0],[142307070910539],[142307070910540],", Name="浼佸垝閮�", Code="wbgf_sh_qhb", Sort=100, Remark="", Status=0 },
+ new SysOrg{Id=142307070910544, Pid=142307070910541, Pids="[0],[142307070910539],[142307070910541],", Name="甯傚満閮�", Code="wbgf_cq_scb", Sort=100, Remark="", Status=0 },
+ new SysOrg{Id=142307070910545, Pid=142307070910541, Pids="[0],[142307070910539],[142307070910541],", Name="璐㈠姟閮�", Code="wbgf_cq_cwb", Sort=100, Remark="", Status=0 },
+ new SysOrg{Id=142307070910546, Pid=142307070910544, Pids="[0],[142307070910539],[142307070910541],[142307070910544],", Name="甯傚満閮ㄤ簩閮�", Code="wbgf_cq_scb", Sort=100, Remark="", Status=0 },
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs
new file mode 100644
index 0000000..a3a6a83
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysPosSeedData.cs
@@ -0,0 +1,28 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鑱屼綅琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysPosSeedData : IEntitySeedData<SysPos>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysPos> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysPos{Id=142307070910547, Name="鎬荤粡鐞�", Code="zjl", Sort=100, Remark="鎬荤粡鐞�", Status=0 },
+ new SysPos{Id=142307070910548, Name="鍓�荤粡鐞�", Code="fzjl", Sort=101, Remark="鍓�荤粡鐞�", Status=0 },
+ new SysPos{Id=142307070910549, Name="閮ㄩ棬缁忕悊", Code="bmjl", Sort=102, Remark="閮ㄩ棬缁忕悊", Status=0 },
+ new SysPos{Id=142307070910550, Name="宸ヤ綔浜哄憳", Code="gzry", Sort=103, Remark="宸ヤ綔浜哄憳", Status=0 },
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs
new file mode 100644
index 0000000..430d607
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysRoleSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺瑙掕壊琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysRoleSeedData : IEntitySeedData<SysRole>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysRole> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysRole{Id=142307070910554, Name="绯荤粺绠$悊鍛�", Code="sys_manager_role", Sort=100, DataScopeType=DataScopeType.ALL, Remark="绯荤粺绠$悊鍛�", Status=0 },
+ //new SysRole{Id=142307070910555, Name="鏅�氱敤鎴�", Code="common_role", Sort=101, DataScopeType=DataScopeType.DEFINE, Remark="鏅�氱敤鎴�", Status=0 },
+ //new SysRole{Id=142307070910556, Name="绯荤粺绠$悊鍛�", Code="sys_manager_role", Sort=100, DataScopeType=DataScopeType.DEFINE, Remark="绯荤粺绠$悊鍛�", Status=0 },
+ //new SysRole{Id=142307070910557, Name="鏅�氱敤鎴�", Code="common_role", Sort=101, DataScopeType=DataScopeType.DEFINE, Remark="鏅�氱敤鎴�", Status=0 },
+
+ new SysRole{Id=356094617575493, Name="绠$悊鍛�", Code="admin", Sort=100, DataScopeType=DataScopeType.ALL, Remark="", Status=0 },
+ new SysRole{Id=358509609758789, Name="浠撳簱鐢ㄦ埛", Code="ware", Sort=100, DataScopeType=DataScopeType.ALL, Remark="", Status=0 },
+ new SysRole{Id=358536344862789, Name="鐮斿彂鐢ㄦ埛", Code="iWare", Sort=100, DataScopeType=DataScopeType.DEFINE, Remark="", Status=0 },
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs
new file mode 100644
index 0000000..4d7c194
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysTimerSeedData.cs
@@ -0,0 +1,39 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.TaskScheduler;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺浠诲姟璋冨害琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysTimerSeedData : IEntitySeedData<SysTimer>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysTimer> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysTimer
+ {
+ Id = 142307070910556,
+ JobName = "鐧惧害api",
+ DoOnce = false,
+ StartNow = false,
+ Interval = 5,
+ TimerType = SpareTimeTypes.Interval,
+ ExecuteType = SpareTimeExecuteTypes.Serial,
+ RequestUrl = "https://www.baidu.com",
+ RequestType = RequestTypeEnum.Post,
+ IsDeleted =false,
+ Remark = "鎺ュ彛API"
+ }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs
new file mode 100644
index 0000000..98bfedd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserDataScopeSeedData.cs
@@ -0,0 +1,22 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core.SeedData
+{
+ public class SysUserDataScopeSeedData : IEntitySeedData<SysUserDataScope>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysUserDataScope> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysUserDataScope{SysUserId=142307070910551, SysOrgId=142307070910540 }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs
new file mode 100644
index 0000000..257e136
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserRoleSeedData.cs
@@ -0,0 +1,24 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core.SeedData
+{
+ public class SysUserRoleSeedData : IEntitySeedData<SysUserRole>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysUserRole> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ // 绉熸埛绠$悊鍛橀粯璁ょ鐞嗗憳瑙掕壊
+ new SysUserRole {SysUserId = 142307070910552, SysRoleId = 142307070910554},
+ //new SysUserRole {SysUserId = 142307070910554, SysRoleId = 142307070910556}
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs
new file mode 100644
index 0000000..f851679
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/SysUserSeedData.cs
@@ -0,0 +1,32 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺鐢ㄦ埛琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ public class SysUserSeedData : IEntitySeedData<SysUser>
+ {
+ /// <summary>
+ /// 绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<SysUser> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new SysUser{Id=142307070910551, Account="superAdmin", Name="瓒呯骇绠$悊鍛�", NickName="superAdmin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.SuperAdmin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+ new SysUser{Id=142307070910552, Account="admin", Name="绯荤粺绠$悊鍛�", NickName="admin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.Admin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE,IsDeleted=false },
+ //new SysUser{Id=142307070910553, Account="zuohuaijun", Name="鏅�氱敤鎴�", NickName="zuohuaijun", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+
+ //new SysUser{Id=142307070910554, Account="zuohuaijun@163.com", Name="绯荤粺绠$悊鍛�", NickName="admin", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.Admin, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+ //new SysUser{Id=142307070910556, Account="dilon@163.com", Name="鏅�氱敤鎴�", NickName="dilon", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="18020030720", Sex=Gender.MALE, IsDeleted=false },
+ new SysUser{Id=358533464608837, Account="warehouse", Name="浠撳簱鐢ㄦ埛", NickName="warehouse", Password="e10adc3949ba59abbe56e057f20f883e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="13869156666", Sex=Gender.MALE,IsDeleted=false },
+ new SysUser{Id=358536045723717, Account="admin1", Name="鐮斿彂閮�", NickName="admin1", Password="f379eaf3c831b04de153469d1bec345e", AdminType=AdminType.None, Birthday=DateTimeOffset.Parse("1986-07-26 00:00:00"), Phone="13869156666", Sex=Gender.MALE, IsDeleted=false }
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs
new file mode 100644
index 0000000..86aa99a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsAreaSeedData.cs
@@ -0,0 +1,24 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsAreaSeedData : IEntitySeedData<WmsArea>
+ {
+ /// <summary>
+ /// 搴撳尯绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsArea> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsArea{Id=355701739634757,AreaName="A鍖�",AreaDesc="",AreaType=AreaType.PUTONGK,AreaStatus=CommonStatus.ENABLE},
+ new WmsArea{Id=358851237277765,AreaName="B鍖�",AreaDesc="",AreaType=AreaType.LITIKU,AreaStatus=CommonStatus.ENABLE},
+ new WmsArea{Id=358851309400133,AreaName="C鍖�",AreaDesc="",AreaType=AreaType.GONGGONGKU,AreaStatus=CommonStatus.ENABLE}
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs
new file mode 100644
index 0000000..0a55c80
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerPlaceSeedData.cs
@@ -0,0 +1,27 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsContainerPlaceSeedData : IEntitySeedData<WmsContainerPlace>
+ {
+ /// <summary>
+ /// 鎵樼洏搴撲綅鍏崇郴琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsContainerPlace> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsContainerPlace{Id=358853586010181,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358852634767429,ContainerCode="TM00001",ContainerPlaceStatus=CommonStatus.DELETED},
+ new WmsContainerPlace{Id=358856088039493,PlaceId=358852152119365,PlaceCode="1-1-1-2-1",ContainerId=358852634767429,ContainerCode="TM00001",ContainerPlaceStatus=CommonStatus.DELETED},
+ new WmsContainerPlace{Id=358856888660037,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358852767887429,ContainerCode="TM00002",ContainerPlaceStatus=CommonStatus.DELETED},
+ new WmsContainerPlace{Id=358857243414597,PlaceId=358852152156229,PlaceCode="1-1-1-5-1",ContainerId=358852831047749,ContainerCode="TM00003",ContainerPlaceStatus=CommonStatus.ENABLE},
+ new WmsContainerPlace{Id=358857693601867,PlaceId=358852152045637,PlaceCode="1-1-1-1-1",ContainerId=358853016055877,ContainerCode="TM00004",ContainerPlaceStatus=CommonStatus.ENABLE},
+ new WmsContainerPlace{Id=358858262188101,PlaceId=358852152143941,PlaceCode="1-1-1-4-1",ContainerId=358853070798917,ContainerCode="TM00005",ContainerPlaceStatus=CommonStatus.ENABLE}
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs
new file mode 100644
index 0000000..d740814
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsContainerSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsContainerSeedData : IEntitySeedData<WmsContainer>
+ {
+ /// <summary>
+ /// 鎵樼洏瀹炰綋绉嶅瓙
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsContainer> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsContainer{Id=358852634767429,ContainerCode="TM00001",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358852767887429,ContainerCode="TM00002",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.ZUPANG,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358852831047749,ContainerCode="TM00003",ContainerType=ContainerType.MUZHI,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358853016055877,ContainerCode="TM00004",ContainerType=ContainerType.MUZHI,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358853070798917,ContainerCode="TM00005",ContainerType=ContainerType.JINSHU,ContainerStatus=ContainerStatus.KUWEI,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358853146058821,ContainerCode="TM00006",ContainerType=ContainerType.JINSHU,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358853199671365,ContainerCode="TM00007",ContainerType=ContainerType.QITA,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ new WmsContainer{Id=358853255102533,ContainerCode="TM00008",ContainerType=ContainerType.SULIAO,ContainerStatus=ContainerStatus.KOUXIAN,SpecLength=(decimal)1,SpecWidth=(decimal)1,SpecHeight=(decimal)1,LimitLength=(decimal)1,LimitWidth=(decimal)1,LimitHeight=(decimal)1,MaxWeight=(decimal)1},
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs
new file mode 100644
index 0000000..e284996
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialContainerSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsMaterialContainerSeedData : IEntitySeedData<WmsMaterialContainer>
+ {
+ /// <summary>
+ /// 鐗╂枡鎵樼洏鍏崇郴鍏崇郴琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsMaterialContainer> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsMaterialContainer{Id=358856845353031,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.DELETED,SampleQty=(decimal)0.00,OrderNo="358856845353029"},
+ new WmsMaterialContainer{Id=358856980582469,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.DISABLE,SampleQty=(decimal)0.00,OrderNo="358856980553798"},
+ new WmsMaterialContainer{Id=358857030975557,ContainerId=358852767887429,ContainerCode="TM00002",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857030971461"},
+ new WmsMaterialContainer{Id=358857618075719,ContainerId=358853016055877,ContainerCode="TM00004",MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",MaterialSpec="16SUP PRO",MaterialId=358845906632773,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857618075717"},
+ new WmsMaterialContainer{Id=358857618153542,ContainerId=358853016055877,ContainerCode="TM00004",MaterialName="瀹氫綅閿�",MaterialNo="3110800160",MaterialBatch="3110800160",MaterialSpec="YDL31-D8-P12-L18-B8-X",MaterialId=358847125188677,BindQuantity=(decimal)100.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358857618075717"},
+ new WmsMaterialContainer{Id=358858261872714,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="鐢垫満",MaterialNo="1222202451",MaterialBatch="1222202451",MaterialSpec="LA21038-020.01-01.10",MaterialId=358851158249541,BindQuantity=(decimal)10.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"},
+ new WmsMaterialContainer{Id=358858262044742,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialNo="2200074102",MaterialBatch="2200074102",MaterialSpec="40488-020-D086",MaterialId=358848226168901,BindQuantity=(decimal)1.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"},
+ new WmsMaterialContainer{Id=358858262089798,ContainerId=358853070798917,ContainerCode="TM00005",MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialNo="2200074125",MaterialBatch="2200074125",MaterialSpec="4301015-40-110-04-01",MaterialId=358847917588549,BindQuantity=(decimal)10.00,BindStatus=CommonStatus.ENABLE,SampleQty=(decimal)0.00,OrderNo="358858261872712"}
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs
new file mode 100644
index 0000000..dc572b4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialSeedData.cs
@@ -0,0 +1,28 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ //public class WmsMaterialSeedData : IEntitySeedData<WmsMaterial>
+ //{
+ // /// <summary>
+ // /// 鐗╂枡琛ㄧ瀛愭暟鎹�
+ // /// </summary>
+ // /// <param name="dbContext"></param>
+ // /// <param name="dbContextLocator"></param>
+ // /// <returns></returns>
+ // public IEnumerable<WmsMaterial> HasData(DbContext dbContext, Type dbContextLocator)
+ // {
+ // return new[]
+ // {
+ // new WmsMaterial{Id=355707111780421,MaterialName="LAPP鍔ㄥ姏鐢电紗",MaterialNo="3570100022",MaterialBatch="3570100022",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.YUANCAILIAO,MaterialSpec="OLFLEX CLASSIC 110 5G6",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)100,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358845906632773,MaterialName="姘斿姩鎷ф澗鏋�",MaterialNo="3070400120",MaterialBatch="3070400120",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.YUANCAILIAO,MaterialSpec="16SUP PRO",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)10,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358847125188677,MaterialName="瀹氫綅閿�",MaterialNo="3110800160",MaterialBatch="3110800160",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.BANCHENGPING,MaterialSpec="YDL31-D8-P12-L18-B8-X",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358847583273029,MaterialName="闃茬垎浼犳劅鍣�",MaterialNo="3090200565",MaterialBatch="3090200565",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="BND-JA12GT4-24PH-25M-TL",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=1,Keymaterials=YesOrNot.N,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358847917588549,MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialNo="2200074125",MaterialBatch="2200074125",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="4301015-40-110-04-01",UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,Safeqty=100,Keymaterials=YesOrNot.Y,Warranty=(decimal)1,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358848226168901,MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialNo="2200074102",MaterialBatch="2200074102",InspectionMethod=MaterialInspection.MIANJIAN,MaterialType=MaterialType.BANCHENGPING,MaterialSpec="40488-020-D086",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=100,Keymaterials=YesOrNot.N,Warranty=(decimal)100,MaxImumqty=(decimal)1,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // new WmsMaterial{Id=358851158249541,MaterialName="鐢垫満",MaterialNo="1222202451",MaterialBatch="1222202451",InspectionMethod=MaterialInspection.CHOUJIAN,MaterialType=MaterialType.CHENGPING,MaterialSpec="LA21038-020.01-01.10",UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,Safeqty=100,Keymaterials=YesOrNot.Y,Warranty=(decimal)1,MaxImumqty=(decimal)100,MinstorageAge=(decimal)1,MaxstorageAge=(decimal)1},
+ // };
+ // }
+ //}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs
new file mode 100644
index 0000000..2f562fc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsMaterialStockSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsMaterialStockSeedData : IEntitySeedData<WmsMaterialStock>
+ {
+ /// <summary>
+ /// 搴撳瓨琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsMaterialStock> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsMaterialStock{Id=358853586690117,MaterialNo="N/A",MaterialType=MaterialType.KONGTUO,MaterialBatch="N/A",MaterialName="N/A",MaterialSpec="N/A",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)0.00,PlaceCode="N/A",ContainerCode="TM00001",AreaId=0},
+ new WmsMaterialStock{Id=358856888787013,MaterialNo="3070400120",MaterialType=MaterialType.YUANCAILIAO,MaterialBatch="3070400120",MaterialName="姘斿姩鎷ф澗鏋�",MaterialSpec="16SUP PRO",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)0.00,PlaceCode="N/A",ContainerCode="TM00002",AreaId=0},
+ new WmsMaterialStock{Id=358857243504709,MaterialNo="N/A",MaterialType=MaterialType.KONGTUO,MaterialBatch="N/A",MaterialName="N/A",MaterialSpec="N/A",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)1.00,PlaceCode="1-1-1-5-1",ContainerCode="TM00003",AreaId=355701739634757},
+ new WmsMaterialStock{Id=358857693638725,MaterialNo="3070400120",MaterialType=MaterialType.YUANCAILIAO,MaterialBatch="3070400120",MaterialName="姘斿姩鎷ф澗鏋�",MaterialSpec="16SUP PRO",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)100.00,PlaceCode="1-1-1-1-1",ContainerCode="TM00004",AreaId=355701739634757},
+ new WmsMaterialStock{Id=358857693646917,MaterialNo="3110800160",MaterialType=MaterialType.BANCHENGPING,MaterialBatch="3110800160",MaterialName="瀹氫綅閿�",MaterialSpec="YDL31-D8-P12-L18-B8-X",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)100.00,PlaceCode="1-1-1-1-1",ContainerCode="TM00004",AreaId=355701739634757},
+ new WmsMaterialStock{Id=358858262392901,MaterialNo="1222202451",MaterialType=MaterialType.CHENGPING,MaterialBatch="1222202451",MaterialName="鐢垫満",MaterialSpec="LA21038-020.01-01.10",InspectionMethod=MaterialInspection.CHOUJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)10.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757},
+ new WmsMaterialStock{Id=358858262401093,MaterialNo="2200074102",MaterialType=MaterialType.BANCHENGPING,MaterialBatch="2200074102",MaterialName="浼犳劅鍣ㄥ畨瑁呮敮鏋�",MaterialSpec="40488-020-D086",InspectionMethod=MaterialInspection.MIANJIAN,UnitType=UnitType.ZHONGLIANG,UnitNo=UnitnoType.T,StockNumber=(decimal)1.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757},
+ new WmsMaterialStock{Id=358858262409285,MaterialNo="2200074125",MaterialType=MaterialType.CHENGPING,MaterialBatch="2200074125",MaterialName="濂楃瓛鏀剁撼鐩掑畨瑁呮澘",MaterialSpec="4301015-40-110-04-01",InspectionMethod=MaterialInspection.CHOUJIAN,UnitType=UnitType.CHANGDU,UnitNo=UnitnoType.CM,StockNumber=(decimal)10.00,PlaceCode="1-1-1-4-1",ContainerCode="TM00005",AreaId=355701739634757}
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs
new file mode 100644
index 0000000..65e97c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsPlaceSeedData.cs
@@ -0,0 +1,69 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsPlaceSeedData : IEntitySeedData<WmsPlace>
+ {
+ /// <summary>
+ /// 搴撲綅琛ㄧ瀛愭暟鎹�
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsPlace> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsPlace{Id=358852152045637,PlaceCode="1-1-1-1-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152119365,PlaceCode="1-1-1-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152131653,PlaceCode="1-1-1-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152143941,PlaceCode="1-1-1-4-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152156229,PlaceCode="1-1-1-5-1",PlaceStatus=PlaceStatus.CUNHUO,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.Y,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152164421,PlaceCode="1-1-1-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=1,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152172613,PlaceCode="1-1-2-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152180805,PlaceCode="1-1-2-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152193093,PlaceCode="1-1-2-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152205381,PlaceCode="1-1-2-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152217669,PlaceCode="1-1-2-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152229957,PlaceCode="1-1-2-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=2,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152238149,PlaceCode="1-1-3-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152246341,PlaceCode="1-1-3-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.Y,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152258629,PlaceCode="1-1-3-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152266821,PlaceCode="1-1-3-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152283205,PlaceCode="1-1-3-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152295493,PlaceCode="1-1-3-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=3,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152307781,PlaceCode="1-1-4-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152315973,PlaceCode="1-1-4-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152328261,PlaceCode="1-1-4-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152336453,PlaceCode="1-1-4-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152344645,PlaceCode="1-1-4-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152356933,PlaceCode="1-1-4-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=4,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152365125,PlaceCode="1-1-5-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152373317,PlaceCode="1-1-5-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152381509,PlaceCode="1-1-5-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152393797,PlaceCode="1-1-5-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152401989,PlaceCode="1-1-5-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152410181,PlaceCode="1-1-5-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=5,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152422469,PlaceCode="1-1-6-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152430661,PlaceCode="1-1-6-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152442949,PlaceCode="1-1-6-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152451141,PlaceCode="1-1-6-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152463429,PlaceCode="1-1-6-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152471621,PlaceCode="1-1-6-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=6,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152479813,PlaceCode="1-1-7-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152496197,PlaceCode="1-1-7-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152504389,PlaceCode="1-1-7-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152516677,PlaceCode="1-1-7-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152524869,PlaceCode="1-1-7-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152610885,PlaceCode="1-1-7-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=7,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152623173,PlaceCode="1-1-8-1-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=1,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152631365,PlaceCode="1-1-8-2-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=2,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152639557,PlaceCode="1-1-8-3-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=3,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152651845,PlaceCode="1-1-8-4-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=4,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152660037,PlaceCode="1-1-8-5-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=5,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ new WmsPlace{Id=358852152668229,PlaceCode="1-1-8-6-1",PlaceStatus=PlaceStatus.KONGXIAN,AreaId=355701739634757,RowNo=1,ColumnNo=8,LayerNo=6,DeepcellNo=1,Aisle=1,Line=0,Islock=YesOrNot.N,EmptyContainer=YesOrNot.N,Length=(decimal)1.2,Width=(decimal)1.5,Height=(decimal)1.8,MaxWeight=(decimal)2.8,HeightLevel=Heightlevel.DI,Priority=0},
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs
new file mode 100644
index 0000000..1456986
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/SeedData/WmsTaskSeedData.cs
@@ -0,0 +1,29 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using Furion.DatabaseAccessor;
+
+namespace YaKe.Les.Core.SeedData
+{
+ public class WmsTaskSeedData : IEntitySeedData<WmsTask>
+ {
+ /// <summary>
+ /// 浠诲姟绠$悊绉嶅瓙鏁版嵁
+ /// </summary>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ /// <returns></returns>
+ public IEnumerable<WmsTask> HasData(DbContext dbContext, Type dbContextLocator)
+ {
+ return new[]
+ {
+ new WmsTask{Id=358853585506373,TaskNo="358853585506374",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="N/A",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+ new WmsTask{Id=358856088019013,TaskNo="358856088019014",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.YIKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="1-1-1-1-1",ToPlace="1-1-1-2-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+ new WmsTask{Id=358856349995077,TaskNo="358856349995078",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.CHUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00001",SourcePlace="1-1-1-2-1",ToPlace="N/A",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+ new WmsTask{Id=358856845733957,TaskNo="358856845733958",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00002",SourcePlace="100",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="358856845353029",SendTimes=0},
+ new WmsTask{Id=358856980553799,TaskNo="358856980553800",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.CHUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00002",SourcePlace="1-1-1-1-1",ToPlace="101",Aisle=1,AreaName="A鍖�",OrderNo="358856980553798",SendTimes=0},
+ new WmsTask{Id=358857243410501,TaskNo="358857243410502",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00003",SourcePlace="N/A",ToPlace="1-1-1-5-1",Aisle=1,AreaName="A鍖�",OrderNo="N/A",SendTimes=0},
+ new WmsTask{Id=358857618247749,TaskNo="358857618247750",TaskModel=TaskModel.ZIDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00004",SourcePlace="101",ToPlace="1-1-1-1-1",Aisle=1,AreaName="A鍖�",OrderNo="358857618075717",SendTimes=0},
+ new WmsTask{Id=358858262179909,TaskNo="358858262179910",TaskModel=TaskModel.SHOUDONG,TaskType=TaskType.RUKU,TaskLevel=1,TaskStatus=Core.TaskStatus.WANCHENG,ContainerCode="TM00005",SourcePlace="N/A",ToPlace="1-1-1-4-1",Aisle=1,AreaName="A鍖�",OrderNo="358858261872712",SendTimes=0}
+ };
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs
new file mode 100644
index 0000000..29f0ef5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Service/BaseId.cs
@@ -0,0 +1,18 @@
+锘縰sing Furion.DataValidation;
+using System.ComponentModel.DataAnnotations;
+
+namespace Admin.NET.Core.Service
+{
+ /// <summary>
+ /// 涓婚敭Id鏄犲皠DTO
+ /// </summary>
+ public class BaseId
+ {
+ /// <summary>
+ /// 涓婚敭Id
+ /// </summary>
+ [Required(ErrorMessage = "Id涓嶈兘涓虹┖")]
+ [DataValidation(ValidationTypes.Numeric)]
+ public long Id { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs
new file mode 100644
index 0000000..1826377
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/CodeGenUtil.cs
@@ -0,0 +1,85 @@
+锘縰sing System.Text.RegularExpressions;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 浠g爜鐢熸垚甯姪绫�
+ /// </summary>
+ public static class CodeGenUtil
+ {
+ public static string ConvertDataType(string dataType)
+ {
+ if (string.IsNullOrEmpty(dataType)) return "";
+ if (dataType.StartsWith("System.Nullable"))
+ dataType = new Regex(@"(?i)(?<=\[)(.*)(?=\])").Match(dataType).Value; // 涓嫭鍙穂]閲岄潰鍊�
+
+ switch (dataType)
+ {
+ case "System.Guid": return "Guid";
+ case "System.String": return "string";
+ case "System.Int32": return "int";
+ case "System.Int64": return "long";
+ case "System.Single": return "float";
+ case "System.Double": return "double";
+ case "System.Decimal": return "decimal";
+ case "System.Boolean": return "bool";
+ case "System.DateTime": return "DateTime";
+ case "System.DateTimeOffset": return "DateTimeOffset";
+ case "System.Byte": return "byte";
+ case "System.Byte[]": return "byte[]";
+ default:
+ break;
+ }
+ return dataType;
+ }
+
+ /// <summary>
+ /// 鏁版嵁绫诲瀷杞樉绀虹被鍨�
+ /// </summary>
+ /// <param name="dataType"></param>
+ /// <returns></returns>
+ public static string DataTypeToEff(string dataType)
+ {
+ if (string.IsNullOrEmpty(dataType)) return "";
+ return dataType switch
+ {
+ "string" => "input",
+ "int" => "inputnumber",
+ "long" => "input",
+ "float" => "input",
+ "double" => "input",
+ "decimal" => "input",
+ "bool" => "switch",
+ "Guid" => "input",
+ //"DateTime" => "datepicker",
+ //"DateTimeOffset" => "datepicker",
+ //鏃ユ湡绫诲瀷榛樿涓� 鏃ユ湡鏃堕棿閫夋嫨 銆怑ditby shaocx,2024-04-16銆�
+ "DateTime" => "datetimepicker",
+ "DateTimeOffset" => "datetimepicker",
+ //_ => "input",
+ //鍏朵粬绫诲瀷鏀逛负 select 銆怑ditby shaocx,2024-04-20銆�
+ _ => "select",
+ };
+ }
+
+ //// 鏄惁閫氱敤瀛楁
+ //public static bool IsCommonColumn(string columnName)
+ //{
+ // var columnList = new List<string>()
+ // {
+ // "CreatedTime", "UpdatedTime", "CreatedUserId", "CreatedUserName", "UpdatedUserId", "UpdatedUserName", "IsDeleted"
+ // };
+ // return columnList.Contains(columnName);
+ //}
+
+ // 鏄惁閫氱敤瀛楁
+ public static bool IsCommonColumn(string columnName)
+ {
+ var columnList = new List<string>()
+ {
+ "CreatedUserId","UpdatedUserId", "IsDeleted"
+ };
+ return columnList.Contains(columnName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs
new file mode 100644
index 0000000..7431f4a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/Comm.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍏叡鏂规硶
+ /// </summary>
+ public static class Comm
+ {
+ /// <summary>
+ /// 鐢熸垚鍑哄叆搴撳崟鍙锋祦姘�
+ /// </summary>
+ /// <param name="maxInvoiceNumber"></param>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static string GenerateNewInvoiceNumber(string maxInvoiceNumber,int type)
+ {
+
+ if (string.IsNullOrEmpty(maxInvoiceNumber))
+ {
+ string today = DateTime.Today.ToString("yyyyMMdd");
+ //鍒ゆ柇鏄叆搴撹繕鏄嚭搴�
+ if (type == 1)
+ {
+ return "RUKU" + today + "0001";
+ }
+ else
+ {
+ return "CHUKU" + today + "0001";
+ }
+
+ }
+ else
+ {
+ var before = maxInvoiceNumber.Substring(0, 12);
+ var queen = maxInvoiceNumber.Substring(12);
+ int maxNumber = int.Parse(queen);
+ return before + (maxNumber+1).ToString("D4");
+ }
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs
new file mode 100644
index 0000000..ff35ba8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataCompareUtil.cs
@@ -0,0 +1,215 @@
+锘縰sing System.Linq.Expressions;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util
+{
+ public class DataCompareUtil<T1, T2>
+ {
+ public DataCompareUtil(
+ Expression<Func<T1, object>> SelectorKey_1,
+ Expression<Func<T2, object>> SelectorKey_2
+ )
+ {
+ Propertys = new List<View_Property>();
+ T_1 = typeof(T1);
+ T_2 = typeof(T2);
+
+ KeyProperty = new View_Property()
+ {
+ Property_1 = T_1.GetProperty(GetPropertyName(SelectorKey_1)),
+ Property_2 = T_2.GetProperty(GetPropertyName(SelectorKey_2))
+ };
+ }
+
+ private List<View_Property> Propertys { get; set; }
+
+ private Type T_1 { get; set; }
+ private Type T_2 { get; set; }
+
+ private View_Property KeyProperty { get; set; }
+
+ public void PushCompare(
+ Expression<Func<T1, object>> Selector_1,
+ Expression<Func<T2, object>> Selector_2
+ )
+ {
+ Propertys.Add(new View_Property()
+ {
+ Property_1 = T_1.GetProperty(GetPropertyName(Selector_1)),
+ Property_2 = T_2.GetProperty(GetPropertyName(Selector_2))
+ });
+ }
+
+ public View_DataCompare<T1, T2> Compare(
+ List<T1> Data_1,
+ List<T2> Data_2
+ )
+ {
+ View_DataCompare<T1, T2> data = new View_DataCompare<T1, T2>();
+
+ Dictionary<string, T1> dic_Contain_2 = new Dictionary<string, T1>();
+ Dictionary<string, T2> dic_Contain_1 = new Dictionary<string, T2>();
+
+ foreach (var item_1 in Data_1)
+ {
+ foreach (var item_2 in Data_2)
+ {
+ bool IsDifferent = false;
+
+ foreach (var Property_item in Propertys)
+ {
+ if (!IsDifferent)
+ {
+ if (Property_item.Property_1 == null || Property_item.Property_2 == null)
+ {
+ if (Property_item.Property_1 == null && Property_item.Property_2 == null)
+ {
+ break;
+ }
+ else
+ {
+ IsDifferent = true;
+ }
+ }
+ else
+ {
+ var obj_value1 = Property_item.Property_1.GetValue(item_1);
+ var obj_value2 = Property_item.Property_2.GetValue(item_2);
+
+ if (obj_value1 != null && obj_value2 != null)
+ {
+ if (obj_value1 is decimal @decimal && obj_value2 is decimal @decimal2 && @decimal != @decimal2)
+ {
+ IsDifferent = true;
+ }
+ else if (obj_value1 is int @intl && obj_value2 is int @int2 && @intl != @int2)
+ {
+ IsDifferent = true;
+ }
+ else if (obj_value1 is Guid @Guidl && obj_value2 is Guid @Guid2 && @Guidl != @Guid2)
+ {
+ IsDifferent = true;
+ }
+ else if (obj_value1 is DateTime @DateTimel && obj_value2 is DateTime @DateTime2 && @DateTimel != @DateTime2)
+ {
+ IsDifferent = true;
+ }
+ else
+ {
+ if (obj_value1.ToString() != obj_value2.ToString())
+ IsDifferent = true;
+ }
+ }
+ else if (obj_value1 != null || obj_value2 != null)
+ {
+ IsDifferent = true;
+ }
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if (!IsDifferent)
+ {
+ //item_1涓巌tem_2鐩稿悓
+ string key_1 = KeyProperty.Property_1.GetValue(item_1).ToString();
+
+ if (!dic_Contain_2.ContainsKey(key_1))
+ {
+ dic_Contain_2.Add(key_1, item_1);
+ data.Contain_2.Add(item_1);
+ }
+
+ string key_2 = KeyProperty.Property_2.GetValue(item_2).ToString();
+
+ if (!dic_Contain_1.ContainsKey(key_2))
+ {
+ dic_Contain_1.Add(key_2, item_2);
+ data.Contain_1.Add(item_2);
+ }
+ }
+ }
+ }
+
+ foreach (var item_1 in Data_1)
+ {
+ string key_1 = KeyProperty.Property_1.GetValue(item_1).ToString();
+
+ if (!dic_Contain_2.ContainsKey(key_1))
+ {
+ data.NoContain_2.Add(item_1);
+ }
+ }
+
+ foreach (var item_2 in Data_2)
+ {
+ string key_2 = KeyProperty.Property_2.GetValue(item_2).ToString();
+
+ if (!dic_Contain_1.ContainsKey(key_2))
+ {
+ data.NoContain_1.Add(item_2);
+ }
+ }
+
+ return data;
+ }
+
+ public static string GetPropertyName<T>(Expression<Func<T, object>> expr)
+ {
+ var rtn = "";
+ if (expr.Body is UnaryExpression expression)
+ {
+ rtn = ((MemberExpression)expression.Operand).Member.Name;
+ }
+ else if (expr.Body is MemberExpression expression2)
+ {
+ rtn = expression2.Member.Name;
+ }
+ else if (expr.Body is ParameterExpression expression1)
+ {
+ rtn = expression1.Type.Name;
+ }
+ return rtn;
+ }
+ }
+
+ public class View_DataCompare<T1, T2>
+ {
+ public View_DataCompare()
+ {
+ Contain_2 = new List<T1>();
+ Contain_1 = new List<T2>();
+ NoContain_2 = new List<T1>();
+ NoContain_1 = new List<T2>();
+ }
+
+ /// <summary>
+ /// 2鍙锋暟鎹簮涓瓨鍦�
+ /// </summary>
+ public List<T1> Contain_2 { get; set; }
+
+ /// <summary>
+ /// 1鍙锋暟鎹簮涓瓨鍦�
+ /// </summary>
+ public List<T2> Contain_1 { get; set; }
+
+ /// <summary>
+ /// 2鍙锋暟鎹簮涓笉瀛樺湪
+ /// </summary>
+ public List<T1> NoContain_2 { get; set; }
+
+ /// <summary>
+ /// 1鍙锋暟鎹簮涓笉瀛樺湪
+ /// </summary>
+ public List<T2> NoContain_1 { get; set; }
+ }
+
+ public class View_Property
+ {
+ public PropertyInfo Property_1 { get; set; }
+ public PropertyInfo Property_2 { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs
new file mode 100644
index 0000000..e80a97c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DataConvertUtil.cs
@@ -0,0 +1,434 @@
+锘�#nullable enable
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using System.ComponentModel;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Security.Cryptography.X509Certificates;
+using System.Xml.Linq;
+
+namespace Admin.NET.Core
+{
+ public static class DataConvertUtil
+ {
+ /// <summary>
+ /// 灏嗗璞¤浆鎹负Excel鏁版嵁
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="source"></param>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="headers"></param>
+ /// <param name="data"></param>
+ /// <param name="sheetName"></param>
+ public static void ToExcelData<T>(List<T> source,
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ out List<string> headers, out List<List<object>> data, out string sheetName)
+ {
+ headers = new List<string>();
+ data = new List<List<object>>();
+ var type = typeof(T);
+ sheetName = ((DescriptionAttribute?)type.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+ List<string> enumClassNames = new();
+ foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ if ("Id".Equals(field.Name)) continue;
+ if (field.Name.EndsWith("Id")) continue;
+ headers.Add(((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�");
+ var dataType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+ if (TypeUtil.GetType(dataType)?.IsEnum ?? false)
+ {
+ if (!enumClassNames.Contains(dataType))
+ {
+ enumClassNames.Add(dataType);
+ }
+ }
+ }
+
+ var dictTypeList = sysDictTypeRep.DetachedEntities.Where(x => enumClassNames.Contains(x.EnumClassName)).ToList();
+ List<long> dictTypeIds = dictTypeList.Select(x => x.Id).ToList();
+ Dictionary<long, SysDictType> dictTypeDictionary = new();
+ dictTypeList.ForEach(x => dictTypeDictionary.Add(x.Id, x));
+ var dictDataList = sysDictDataRep.DetachedEntities.Where(x => dictTypeIds.Contains(x.TypeId)).ToList();
+ dictDataList.ForEach(x =>
+ {
+ if (dictTypeDictionary.ContainsKey(x.TypeId))
+ {
+ var dictType = dictTypeDictionary[x.TypeId];
+ if (dictType?.SysDictDatas == null)
+ {
+ if (dictType != null)
+ {
+ dictType.SysDictDatas = new List<SysDictData>();
+ }
+ }
+ dictType?.SysDictDatas?.Add(x);
+ }
+ });
+ Dictionary<string, string> map = new();
+ dictTypeList.ForEach(x =>
+ {
+ if (x?.SysDictDatas != null)
+ {
+ foreach (SysDictData dictData in x.SysDictDatas)
+ {
+ if (dictData != null) map.Add(x.EnumClassName + "#" + dictData.Code, dictData.Value);
+ }
+ }
+ });
+
+ foreach (var t in source)
+ {
+ List<object> objectList = new();
+ foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ var fieldName = field.Name;
+ if ("Id".Equals(fieldName)) continue;
+ if (field.Name.EndsWith("Id")) continue;
+ var v = t?.GetType()?.GetProperty(fieldName)?.GetValue(t);
+ var dataType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+ if (TypeUtil.GetType(dataType)?.IsEnum ?? false)
+ {
+ v = Convert.ToInt32(v);
+ if (map.ContainsKey(dataType + "#" + v)) v = map[dataType + "#" + v];
+ }
+ else if ("System.DateTimeOffset".Equals(dataType))
+ {
+ v = ExcelDateUtil.ToInt(
+ new DateTimeOffset(Convert.ToDateTime(((DateTimeOffset?)v)?.ToString("yyyy-MM-dd") ?? "1900-01-01")));
+ }
+ else if ("System.DateTime".Equals(dataType))
+ {
+ v = ExcelDateUtil.ToInt(
+ Convert.ToDateTime(((DateTime?)v)?.ToString("yyyy-MM-dd") ?? "1900-01-01"));
+ }
+ objectList.Add(v ?? "");
+ }
+ data.Add(objectList);
+ }
+ }
+
+ /// <summary>
+ /// 灏嗗璞¤浆鎹负Excel鏁版嵁
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="source"></param>
+ /// <param name="sysDictTypeRep"></param>
+ /// <param name="sysDictDataRep"></param>
+ /// <param name="headers"></param>
+ /// <param name="data"></param>
+ /// <param name="sheetName"></param>
+ /// <param name="className"></param>
+ public static void ToExcelData<T>(List<T> source,
+ IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
+ IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
+ out List<string> headers, out List<List<object>> data, out string sheetName, out string className)
+ {
+ ToExcelData(source, sysDictTypeRep, sysDictDataRep, out headers, out data, out sheetName);
+ var type = typeof(T);
+ className = type.Name ?? "";
+ if (className.EndsWith("Output"))
+ {
+ className = className[..^"Output".Length];
+ }
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁閿暟瀛楃敓鎴愬唴瀹瑰瓧绗︿覆
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="t"></param>
+ /// <param name="keys"></param>
+ /// <returns></returns>
+ public static string ParseStrByKeys<T>(this T t, string[] keys)
+ {
+ var type = typeof(T);
+ Dictionary<string, PropertyInfo> namePropertyInfoDict = new();
+ foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ var fName = field?.Name ?? "";
+ if (keys.Contains(fName))
+ {
+ namePropertyInfoDict[fName] = field ?? null!;
+ }
+ }
+ var str = "";
+
+ foreach (var k in keys)
+ {
+ str += StringUtil.SplitChar() + namePropertyInfoDict[k]?.GetValue(t) ?? "";
+ }
+
+ return str;
+ }
+
+ /// <summary>
+ /// 灏咵xcel鏁版嵁杞崲涓哄璞″垪琛�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="headers"></param>
+ /// <param name="data"></param>
+ /// <param name="sheetName"></param>
+ /// <returns></returns>
+ public static List<T> ToObjectList<T>(List<string> headers, List<List<object?>> data, string sheetName, string[] keys, int dataStartLine, out Dictionary<string, T> dict)
+ {
+ var type = typeof(T);
+ //鍘绘帀姝ら獙璇� 銆怑ditby shaocx,2024-04-15銆�
+ //var sheetName2 = ((DescriptionAttribute?)type.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+ //if (!sheetName2.Equals(sheetName))
+ //{
+ // throw Oops.Oh(ErrorCode.Excel003);
+ //}
+
+ Dictionary<int, string> indexFieldNameDict = new();
+ Dictionary<int, string> indexFieldTypeDict = new();
+ Dictionary<int, PropertyInfo> indexPropertyInfoDict = new();
+ Dictionary<string, PropertyInfo> namePropertyInfoDict = new();
+ foreach (var field in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ var desc = ((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? "鏃�";
+ var fName = field.Name ?? "";
+ var fType = StringUtil.ParseTrueType2(field.PropertyType.FullName ?? "");
+ for (var i = 0; i < headers.Count; i++)
+ {
+ var header = headers[i];
+ if (header.Equals(desc))
+ {
+ indexFieldNameDict[i] = fName;
+ indexFieldTypeDict[i] = fType;
+ indexPropertyInfoDict[i] = field;
+ namePropertyInfoDict[fName] = field;
+ break;
+ }
+ }
+ }
+
+ List<T> outputs = new();
+ foreach (var record in data)
+ {
+ var output = Activator.CreateInstance(type, true);
+ for (var i = 0; i < record.Count; i++)
+ {
+ if ("System.String".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, record[i]?.ToString() ?? "", null);
+ }
+ else if ("System.Int32".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, int.Parse(record[i]?.ToString() ?? "0"), null);
+ }
+ else if ("System.Int64".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, long.Parse(record[i]?.ToString() ?? "0"), null);
+ }
+ else if ("System.Single".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, float.Parse(record[i]?.ToString() ?? "0.0"), null);
+ }
+ else if ("System.Double".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, double.Parse(record[i]?.ToString() ?? "0.0"), null);
+ }
+ else if ("System.Decimal".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, decimal.Parse(record[i]?.ToString() ?? "0.0"), null);
+ }
+ else if ("System.Boolean".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, bool.Parse(record[i]?.ToString() ?? "False"), null);
+ }
+ else if ("System.Byte".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output, byte.Parse(record[i]?.ToString() ?? "0"), null);
+ }
+ else if (TypeUtil.GetType(indexFieldTypeDict[i])?.IsEnum ?? false)
+ {
+ indexPropertyInfoDict[i].SetValue(output,
+ TypeUtil.GetType(indexFieldTypeDict[i])?.GetEnumByDescription(record[i]?.ToString() ?? ""), null);
+ }
+ else if ("System.DateTime".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output,
+ ExcelDateUtil.ToDateTime(long.Parse(record[i]?.ToString() ?? "1")), null);
+ }
+ else if ("System.DateTimeOffset".Equals(indexFieldTypeDict[i]))
+ {
+ indexPropertyInfoDict[i].SetValue(output,
+ ExcelDateUtil.ToDateTimeOffset(long.Parse(record[i]?.ToString() ?? "1")), null);
+ }
+ }
+ if (output != null)
+ {
+ outputs.Add((T)output);
+ }
+ }
+
+
+
+ dict = new Dictionary<string, T>();
+ foreach (var x in outputs)
+ {
+ var key = string.Empty;
+ foreach (var k in keys)
+ {
+ key += StringUtil.SplitChar() + namePropertyInfoDict[k]?.GetValue(x) ?? "";
+ }
+
+ if (!string.IsNullOrEmpty(key))
+ {
+ if (dict.ContainsKey(key)) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, 鍞竴閿啿绐�");
+ dict.Add(key, x);
+ }
+
+ dataStartLine += 1;
+ };
+
+ return outputs;
+ }
+
+
+
+ /// <summary>
+ /// 鑾峰彇宸插瓨鍦ㄧ殑鏁版嵁
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="records"></param>
+ /// <returns></returns>
+ public static List<Dictionary<string, object>> ParseUniqueKeyValueDictList<T>(this List<T> records, List<string> keys, int dataStartLine, string sheetName)
+ {
+
+ if (keys.Count <= 0)
+ {
+ throw Oops.Oh(ErrorCode.Key001);
+ }
+
+ if (records.Count <= 0)
+ {
+ return new List<Dictionary<string, object>>();
+ }
+
+ Type type = typeof(T);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = new();
+ var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+ Dictionary<string, PropertyInfo> namePropDict = new();
+ props.ForEach(x => namePropDict.Add(x.Name, x));
+
+
+ List<string> keyStrs = new();
+
+ records.ForEach(x =>
+ {
+ Dictionary<string, object> dict = new();
+ string keyStr = string.Empty;
+ keys.ForEach(y =>
+ {
+ var value = namePropDict[y]?.GetValue(x) ?? "";
+ if (string.IsNullOrWhiteSpace(value + "")) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, {y}鐨勫彇鍊间笉鑳戒负绌�");
+ keyStr += StringUtil.SplitChar() + value;
+ dict.Add(y, value);
+ });
+ if (keyStrs.Contains(keyStr)) throw Oops.Oh($"鍦▄sheetName}椤电殑绗瑊dataStartLine}琛�, 鍞竴閿啿绐�");
+ keyStrs.Add(keyStr);
+ uniqueKeyValueDictList.Add(dict);
+ dataStartLine++;
+ });
+
+ return uniqueKeyValueDictList;
+ }
+
+ /// <summary>
+ /// 鐢熸垚鍔ㄦ�佹煡璇㈠凡瀛樺湪璁板綍鐨刲amda琛ㄨ揪寮忓垪琛�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="keys"></param>
+ /// <param name="uniqueKeyValueDictList"></param>
+ /// <param name="size"></param>
+ /// <returns></returns>
+ public static List<Expression<Func<T, bool>>> GetExpressionListByUniqueDict<T>(List<string> keys,
+ List<Dictionary<string, object>> uniqueKeyValueDictList, int size)
+ {
+ if (keys.Count <= 0) throw Oops.Oh(ErrorCode.Key001);
+ var uniqueKeyValueDictListArray = uniqueKeyValueDictList.SplitList(size);
+ Type type = typeof(T);
+ var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+ Dictionary<string, PropertyInfo> namePropDict = new();
+ props.ForEach(x => namePropDict.Add(x.Name, x));
+ List<Expression<Func<T, bool>>> filters = new();
+ foreach (var dictList in uniqueKeyValueDictListArray)
+ {
+ var parameter = Expression.Parameter(type, "m");
+ Expression? expression = null;
+ foreach (var item in dictList)
+ {
+ Expression? expressionItem = null;
+ foreach (var key in keys)
+ {
+ Expression expProperty = Expression.Property(parameter, key);
+ Expression<Func<object?>> valueLamda = () => item[key];
+ Expression expValue = Expression.Convert(valueLamda.Body, namePropDict[key].PropertyType);
+ expressionItem = expressionItem == null ? Expression.Equal(expProperty, expValue) :
+ Expression.AndAlso(expressionItem, Expression.Equal(expProperty, expValue));
+ }
+ expression = (expression == null) ? expressionItem : Expression.OrElse(expression, expressionItem ?? null!);
+ }
+
+ Expression<Func<T, bool>> filter = ((Expression<Func<T, bool>>)Expression.Lambda(expression ?? null!, parameter));
+ filters.Add(filter);
+ }
+ return filters;
+ }
+
+ /// <summary>
+ /// 鐢熸垚鍔ㄦ�佹煡璇㈠凡瀛樺湪璁板綍鐨勬姇褰眑amda琛ㄨ揪寮忓垪琛�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <typeparam name="S"></typeparam>
+ /// <param name="keys"></param>
+ /// <returns></returns>
+ public static Expression<Func<TSource, TResult>> GetSelectExpressionListByUniqueDict<TSource, TResult>(List<string> keys)
+ {
+ if (keys.Count <= 0)
+ {
+ throw Oops.Oh(ErrorCode.Key001);
+ }
+ Type type = typeof(TSource);
+ var left = Expression.Parameter(type, "x");
+ var v0 = Expression.New(typeof(TResult));
+ List<MemberBinding> bindingList = new();
+ foreach (var item in keys)
+ {
+ MemberInfo speciesMember = typeof(TResult).GetMember(item)[0];
+ MemberExpression mem = Expression.Property(left, item);
+ MemberBinding memberBinding = Expression.Bind(speciesMember, mem);
+ bindingList.Add(memberBinding);
+ }
+ Expression body = Expression.MemberInit(v0, bindingList);
+ Expression<Func<TSource, TResult>> selector = (Expression<Func<TSource, TResult>>)Expression.Lambda(body, left);
+ return selector;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀛楀吀鐢熸垚鐨勯敭瀛楃涓�
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="t"></param>
+ /// <param name="keys"></param>
+ /// <returns></returns>
+ public static string GetKey<T>(T t, string[] keys)
+ {
+ Type type = typeof(T);
+ List<Dictionary<string, object>> uniqueKeyValueDictList = new();
+ var props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => keys.Contains(x.Name)).ToList();
+ Dictionary<string, PropertyInfo> namePropDict = new();
+ props.ForEach(x => namePropDict.Add(x.Name, x));
+ string key = "";
+ foreach (var item in keys)
+ {
+ key += StringUtil.SplitChar() + namePropDict[item]?.GetValue(t) ?? "";
+ }
+ return key;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs
new file mode 100644
index 0000000..8061bd2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/DateTimeOffSetToDateTime.cs
@@ -0,0 +1,18 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// DateTimeOffSet杞崲DateTime甯姪绫�
+ /// </summary>
+ public static class DateTimeOffSetToDateTime
+ {
+ public static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
+ {
+ if (dateTime.Offset.Equals(TimeSpan.Zero))
+ return dateTime.UtcDateTime;
+ else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
+ return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
+ else
+ return dateTime.DateTime;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs
new file mode 100644
index 0000000..4183888
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumEntity.cs
@@ -0,0 +1,23 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏋氫妇鐨凟ntity绫�
+ /// </summary>
+ public class EnumEntity
+ {
+ /// <summary>
+ /// 鏋氫妇鐨勬弿杩�
+ /// </summary>
+ public string Describe { set; get; }
+
+ /// <summary>
+ /// 鏋氫妇鍚嶇О
+ /// </summary>
+ public string Name { set; get; }
+
+ /// <summary>
+ /// 鏋氫妇瀵硅薄鐨勫��
+ /// </summary>
+ public int Value { set; get; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs
new file mode 100644
index 0000000..423ec5b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/EnumUtil.cs
@@ -0,0 +1,220 @@
+锘縰sing Furion.FriendlyException;
+using System.Collections.Concurrent;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏋氫妇鎵╁睍
+ /// </summary>
+ public static class EnumUtil
+ {
+ // 鏋氫妇鏄剧ず瀛楀吀缂撳瓨
+ private static readonly ConcurrentDictionary<Type, Dictionary<int, string>> EnumDisplayValueDict = new();
+
+ // 鏋氫妇鍊煎瓧鍏哥紦瀛�
+ private static readonly ConcurrentDictionary<Type, Dictionary<int, string>> EnumNameValueDict = new();
+
+ // 鏋氫妇绫诲瀷缂撳瓨
+ private static ConcurrentDictionary<string, Type> _enumTypeDict = null;
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇瀵硅薄Key涓庡悕绉扮殑瀛楀吀锛堢紦瀛橈級
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ public static Dictionary<int, string> GetEnumDictionary(Type enumType)
+ {
+ if (!enumType.IsEnum)
+ throw Oops.Oh(ErrorCode.D1503);
+
+ // 鏌ヨ缂撳瓨
+ Dictionary<int, string> enumDic = EnumNameValueDict.ContainsKey(enumType) ? EnumNameValueDict[enumType] : new Dictionary<int, string>();
+ if (enumDic.Count == 0)
+ {
+ // 鍙栨灇涓剧被鍨嬬殑Key/Value瀛楀吀闆嗗悎
+ enumDic = GetEnumDictionaryItems(enumType);
+
+ // 缂撳瓨
+ EnumNameValueDict[enumType] = enumDic;
+ }
+ return enumDic;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇瀵硅薄Key涓庡悕绉扮殑瀛楀吀
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ private static Dictionary<int, string> GetEnumDictionaryItems(Type enumType)
+ {
+ // 鑾峰彇绫诲瀷鐨勫瓧娈碉紝鍒濆鍖栦竴涓湁闄愰暱搴︾殑瀛楀吀
+ FieldInfo[] enumFields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+ Dictionary<int, string> enumDic = new(enumFields.Length);
+
+ // 閬嶅巻瀛楁鏁扮粍鑾峰彇key鍜宯ame
+ foreach (FieldInfo enumField in enumFields)
+ {
+ int intValue = (int)enumField.GetValue(enumType);
+ enumDic[intValue] = enumField.Name;
+ }
+ return enumDic;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇绫诲瀷key涓庢弿杩扮殑瀛楀吀锛堢紦瀛橈級
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public static Dictionary<int, string> GetEnumDescDictionary(Type enumType)
+ {
+ if (!enumType.IsEnum)
+ throw Oops.Oh(ErrorCode.D1503);
+
+ // 鏌ヨ缂撳瓨
+ Dictionary<int, string> enumDic = EnumDisplayValueDict.ContainsKey(enumType) ? EnumDisplayValueDict[enumType] : new Dictionary<int, string>();
+ if (enumDic.Count == 0)
+ {
+ // 鍙栨灇涓剧被鍨嬬殑Key/Value瀛楀吀闆嗗悎
+ enumDic = GetEnumDescDictionaryItems(enumType);
+
+ // 缂撳瓨
+ EnumDisplayValueDict[enumType] = enumDic;
+ }
+ return enumDic;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇绫诲瀷key涓庢弿杩扮殑瀛楀吀锛堟病鏈夋弿杩板垯鑾峰彇name锛�
+ /// </summary>
+ /// <param name="enumType"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ private static Dictionary<int, string> GetEnumDescDictionaryItems(Type enumType)
+ {
+ // 鑾峰彇绫诲瀷鐨勫瓧娈碉紝鍒濆鍖栦竴涓湁闄愰暱搴︾殑瀛楀吀
+ FieldInfo[] enumFields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
+ Dictionary<int, string> enumDic = new(enumFields.Length);
+
+ // 閬嶅巻瀛楁鏁扮粍鑾峰彇key鍜宯ame
+ foreach (FieldInfo enumField in enumFields)
+ {
+ int intValue = (int)enumField.GetValue(enumType);
+ var desc = enumField.GetDescriptionValue<DescriptionAttribute>();
+ enumDic[intValue] = desc != null && !string.IsNullOrEmpty(desc.Description) ? desc.Description : enumField.Name;
+ }
+ return enumDic;
+ }
+
+ /// <summary>
+ /// 浠庣▼搴忛泦涓煡鎵炬寚瀹氭灇涓剧被鍨�
+ /// </summary>
+ /// <param name="assembly"></param>
+ /// <param name="typeName"></param>
+ /// <returns></returns>
+ public static Type TryToGetEnumType(Assembly assembly, string typeName)
+ {
+ // 鏋氫妇缂撳瓨涓虹┖鍒欓噸鏂板姞杞芥灇涓剧被鍨嬪瓧鍏�
+ _enumTypeDict ??= LoadEnumTypeDict(assembly);
+
+ // 鎸夊悕绉版煡鎵�
+ if (_enumTypeDict.ContainsKey(typeName))
+ {
+ return _enumTypeDict[typeName];
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// 浠庣▼搴忛泦涓姞杞芥墍鏈夋灇涓剧被鍨�
+ /// </summary>
+ /// <param name="assembly"></param>
+ /// <returns></returns>
+ private static ConcurrentDictionary<string, Type> LoadEnumTypeDict(Assembly assembly)
+ {
+ // 鍙栫▼搴忛泦涓墍鏈夌被鍨�
+ Type[] typeArray = assembly.GetTypes();
+
+ // 杩囨护闈炴灇涓剧被鍨嬶紝杞垚瀛楀吀鏍煎紡骞惰繑鍥�
+ Dictionary<string, Type> dict = typeArray.Where(o => o.IsEnum).ToDictionary(o => o.Name, o => o);
+ ConcurrentDictionary<string, Type> enumTypeDict = new(dict);
+ return enumTypeDict;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇鐨凞escription
+ /// </summary>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public static string GetDescription(this System.Enum value)
+ {
+ return value.GetType().GetMember(value.ToString()).FirstOrDefault()?.GetCustomAttribute<DescriptionAttribute>()
+ ?.Description;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇鐨凞escription
+ /// </summary>
+ /// <param name="value"></param>
+ /// <returns></returns>
+ public static string GetDescription(this object value)
+ {
+ return value.GetType().GetMember(value.ToString() ?? string.Empty).FirstOrDefault()
+ ?.GetCustomAttribute<DescriptionAttribute>()?.Description;
+ }
+
+ /// <summary>
+ /// 灏嗘灇涓捐浆鎴愭灇涓句俊鎭泦鍚�
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<EnumEntity> EnumToList(this Type type)
+ {
+ if (!type.IsEnum)
+ throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+ var arr = System.Enum.GetNames(type);
+ return arr.Select(sl =>
+ {
+ var item = System.Enum.Parse(type, sl);
+ return new EnumEntity
+ {
+ Name = item.ToString(),
+ Describe = item.GetDescription(),
+ Value = item.GetHashCode()
+ };
+ }).ToList();
+ }
+
+ /// <summary>
+ /// 鏋氫妇ToList
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<T> EnumToList<T>(this Type type)
+ {
+ if (!type.IsEnum)
+ throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+ var arr = System.Enum.GetNames(type);
+ return arr.Select(name => (T)System.Enum.Parse(type, name)).ToList();
+ }
+
+ /// <summary>
+ /// 鏋氫妇ToList
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static object GetEnumByDescription(this Type type, string description)
+ {
+ if (!type.IsEnum)
+ throw new ArgumentException("Type '" + type.Name + "' is not an enum.");
+ List<EnumEntity> enumEntities = type.EnumToList();
+ var ts = enumEntities.Where(x => x.Describe == description);
+ if (!ts.Any()) return default;
+ return System.Enum.Parse(type, ts.ElementAt(0).Name);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs
new file mode 100644
index 0000000..0415c4c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelDateUtil.cs
@@ -0,0 +1,36 @@
+锘縩amespace Admin.NET.Core
+{
+ public static class ExcelDateUtil
+ {
+ public static long ToInt(DateTime date)
+ {
+ var current = Convert.ToDateTime("1900-01-01") ;
+ if (date.Ticks <= current.Ticks) return 1;
+ var days = (date - current).Days;
+ return days < 59 ? days + 1 : days + 2;
+ }
+
+ public static long ToInt(DateTimeOffset date)
+ {
+ var current = Convert.ToDateTime("1900-01-01");
+ if (date.Ticks <= current.Ticks) return 1;
+ var days = (date - current).Days;
+ return days < 59 ? days + 1 : days + 2;
+ }
+
+
+ public static DateTime ToDateTime(long days)
+ {
+ var current = Convert.ToDateTime("1900-01-01");
+ if(days <= 1) return current;
+ return current.AddDays(days < 60 ? days -1 : days - 2);
+ }
+
+ public static DateTimeOffset ToDateTimeOffset(long days)
+ {
+ var current = new DateTimeOffset(Convert.ToDateTime("1900-01-01"));
+ if (days <= 1) return current;
+ return current.AddDays(days < 60 ? days - 1 : days - 2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs
new file mode 100644
index 0000000..1d79209
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ExcelUtil.cs
@@ -0,0 +1,458 @@
+锘�#nullable enable
+using Furion;
+using Furion.FriendlyException;
+using Microsoft.AspNetCore.Http;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using Microsoft.Extensions.Configuration;
+using Microsoft.VisualBasic;
+using OfficeOpenXml;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.Style;
+using RestSharp;
+using SQLitePCL;
+using StackExchange.Profiling.Internal;
+using System.Collections.Generic;
+using System.Data;
+using System.Reflection.PortableExecutable;
+
+namespace Admin.NET.Core
+{
+ public static class ExcelUtil
+ {
+ /// <summary>
+ /// 鍦╮esponse涓鍑烘爣鍑嗘牸寮忕殑鏁版嵁
+ /// </summary>
+ /// <param name="headers"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public static void ToExcel(List<string> headers, List<List<object>> data, string sheetName, Stream newStream)
+ {
+ using var package = new ExcelPackage(newStream);
+ var worksheet = package.Workbook.Worksheets.Add(sheetName);
+
+ for (int j = 0; j < headers.Count; j++)
+ {
+ worksheet.Cells[1, j + 1].Value = headers[j];
+ worksheet.Cells[1, j + 1].Style.Font.Bold = true;//鍔犵矖
+ worksheet.Cells[1, j + 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//姘村钩灞呬腑
+ worksheet.Cells[1, j + 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;//鍨傜洿灞呬腑
+ worksheet.Cells[1, j + 1].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Left.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Right.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Top.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ }
+
+ for (int i = 0; i < data.Count; i++)
+ {
+ for (int j = 0; j < data[i].Count; j++)
+ {
+ worksheet.Cells[2 + i, j + 1].Value = data[i][j];
+ }
+ }
+ package.Save();
+ }
+
+
+
+ /// <summary>
+ /// 鍦╮esponse涓鍑烘爣鍑嗘牸寮忕殑澶氳〃鏁版嵁
+ /// </summary>
+ /// <param name="headersList"></param>
+ /// <param name="dataList"></param>
+ /// <param name="sheetNameList"></param>
+ /// <param name="newStream"></param>
+ public static void ToExcel(List<List<string>> headersList, List<List<List<object>>> dataList, List<string> sheetNameList, Stream newStream)
+ {
+ using var package = new ExcelPackage(newStream);
+ for (var k = 0; k < sheetNameList.Count; k++)
+ {
+ var worksheet = package.Workbook.Worksheets.Add(sheetNameList[k]);
+
+ for (int j = 0; j < headersList[k].Count; j++)
+ {
+ worksheet.Cells[1, j + 1].Value = headersList[k][j];
+ worksheet.Cells[1, j + 1].Style.Font.Bold = true;//鍔犵矖
+ worksheet.Cells[1, j + 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//姘村钩灞呬腑
+ worksheet.Cells[1, j + 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;//鍨傜洿灞呬腑
+ worksheet.Cells[1, j + 1].Style.Border.Bottom.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Left.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Right.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ worksheet.Cells[1, j + 1].Style.Border.Top.Style = ExcelBorderStyle.Thin;//杈规甯歌绮楃粏
+ }
+
+ for (int i = 0; i < dataList[k].Count; i++)
+ {
+ for (int j = 0; j < dataList[k][i].Count; j++)
+ {
+ worksheet.Cells[2 + i, j + 1].Value = dataList[k][i][j];
+ }
+ }
+
+
+ }
+
+ package.Save();
+ }
+
+
+
+
+
+ /// <summary>
+ /// 鍦╮esponse涓牴鎹ā鏉垮鍑哄崟琛ㄦ暟鎹�
+ /// </summary>
+ /// <param name="headers"></param>
+ /// <param name="templatePath"></param>
+ /// <param name="data"></param>
+ /// <param name="sheetName"></param>
+ /// <param name="dataStartLine"></param>
+ /// <param name="newStream"></param>
+ /// <returns></returns>
+ public static void ToExcel(string templatePath, List<string> headers, List<List<object>> data, string sheetName, int headStartLine, int dataStartLine, Stream newStream)
+ {
+
+ var options = new RestClientOptions(App.Configuration["FileUrl"])
+ {
+ ThrowOnAnyError = true,
+ MaxTimeout = 2000
+ };
+
+ var client = new RestClient(options);
+ var request = new RestRequest($"/file/download", Method.Get);
+ request?.AddParameter(Parameter.CreateParameter("path", templatePath, ParameterType.QueryString))
+ ?.AddParameter(Parameter.CreateParameter("fileName", "template.xlsx", ParameterType.QueryString));
+
+ var response = client.DownloadData(request ?? null!);
+
+ MemoryStream ms = new(response ?? null!);
+
+
+ using var package = new ExcelPackage(newStream, ms);
+ var worksheet = package.Workbook.Worksheets[0];
+
+ worksheet.Name = sheetName;
+
+ for (int j = 0; j < headers.Count; j++)
+ {
+ worksheet.Cells[headStartLine, j + 1].Value = headers[j];
+ }
+
+ for (int i = 0; i < data.Count; i++)
+ {
+ for (int j = 0; j < data[i].Count; j++)
+ {
+ worksheet.Cells[dataStartLine + i, j + 1].Value = data[i][j];
+ }
+ }
+ package.Save();
+
+ }
+
+ /// <summary>
+ /// 鍦╮esponse涓牴鎹ā鏉垮鍑哄琛ㄦ暟鎹�
+ /// </summary>
+ /// <param name="templatePath"></param>
+ /// <param name="headersList"></param>
+ /// <param name="dataList"></param>
+ /// <param name="sheetNameList"></param>
+ /// <param name="headStartLineList"></param>
+ /// <param name="dataStartLineList"></param>
+ /// <param name="newStream"></param>
+ public static void ToExcel(string templatePath, List<List<string>> headersList, List<List<List<object>>> dataList, List<string> sheetNameList, List<int> headStartLineList, List<int> dataStartLineList, Stream newStream)
+ {
+ var options = new RestClientOptions(App.Configuration["FileUrl"])
+ {
+ ThrowOnAnyError = true,
+ MaxTimeout = 2000
+ };
+
+ var client = new RestClient(options);
+ var request = new RestRequest($"/file/download", Method.Get);
+ request?.AddParameter(Parameter.CreateParameter("path", templatePath, ParameterType.QueryString))
+ ?.AddParameter(Parameter.CreateParameter("fileName", "template.xlsx", ParameterType.QueryString));
+
+ var response = client.DownloadData(request ?? null!);
+
+ MemoryStream ms = new(response ?? null!);
+
+ using var package = new ExcelPackage(newStream, ms);
+ for (var k = 0; k < sheetNameList.Count; k++)
+ {
+ var worksheet = package.Workbook.Worksheets.FirstOrDefault(x => x.Name == sheetNameList[k]) ?? null!;
+
+ for (int j = 0; j < headersList[k].Count; j++)
+ {
+ worksheet.Cells[headStartLineList[k], j + 1].Value = headersList[k][j];
+
+ }
+
+ for (int i = 0; i < dataList[k].Count; i++)
+ {
+ for (int j = 0; j < dataList[k][i].Count; j++)
+ {
+ worksheet.Cells[dataStartLineList[k] + i, j + 1].Value = dataList[k][i][j];
+ }
+ }
+ }
+ package.Save();
+ }
+
+
+ /// <summary>
+ /// 瀵煎叆鏍囧噯鏍煎紡鐨勬暟鎹枃浠�
+ /// </summary>
+ /// <param name="file">涓婁紶鐨勬枃浠�</param>
+ /// <returns></returns>
+ public static void FromExcel(IFormFile file, int headStartLine, int dataStartLine, out List<string> headers, out List<List<object?>> data, out string sheetName)
+ {
+ if (file == null) throw Oops.Oh(ErrorCode.D8000);
+
+ //鏆傛椂娉ㄩ噴锛屼互鍚庡啀鏀惧紑 銆怑ditby shaocx,2024-04-15銆�
+ /*
+ string key = "UploadFile:Excel";
+ var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+ if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+ //*/
+
+ sheetName = "";
+ headers = new();
+ data = new();
+
+ using var package = new ExcelPackage(file.OpenReadStream());
+ var worksheet = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0] : null;
+
+ sheetName = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0].Name : "";
+ var cellsCount = worksheet?.Cells?.Count() ?? 0;
+
+ int col = 1;
+ string? header = worksheet?.Cells[headStartLine, col++].Value?.ToString();
+
+ while (!string.IsNullOrWhiteSpace(header))
+ {
+ headers.Add(header);
+ header = worksheet?.Cells[headStartLine, col++]?.Value?.ToString();
+ }
+
+ var headersCount = headers.Count;
+
+ if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+
+ var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - dataStartLine + 1;
+
+ for (var i = 0; i < rowsCount; i++)
+ {
+ List<object?> row = new();
+ for (var j = 0; j < headersCount; j++)
+ {
+ row.Add(worksheet?.Cells[i + dataStartLine, j + 1]?.Value);
+ }
+ data.Add(row);
+ }
+ }
+
+
+ /// <summary>
+ /// 瀵煎叆澶氳〃鏍煎紡鐨勬暟鎹枃浠�
+ /// </summary>
+ /// <param name="file">涓婁紶鐨勬枃浠�</param>
+ /// <returns></returns>
+ public static void FromExcel(IFormFile file, Dictionary<string, int> nameHeadStartLineDict, Dictionary<string, int> nameDataStartLineDict,
+ out List<List<string>> headersList, out List<List<List<object?>>> dataList, out List<string> sheetNameList)
+ {
+ if (file == null) throw Oops.Oh(ErrorCode.D8000);
+ string key = "UploadFile:Excel";
+ var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+ if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+ sheetNameList = new();
+ headersList = new();
+ dataList = new();
+
+ using var package = new ExcelPackage(file.OpenReadStream());
+
+ foreach (var worksheet in package.Workbook.Worksheets)
+ {
+ if (!nameHeadStartLineDict.ContainsKey(worksheet?.Name ?? "")) throw Oops.Oh("闈炴硶鐨凟xcel鏂囦欢");
+
+ sheetNameList.Add(worksheet?.Name ?? "");
+ var cellsCount = worksheet?.Cells?.Count() ?? 0;
+ var headers = new List<string>();
+ int col = 1;
+ int r = nameHeadStartLineDict[worksheet?.Name ?? ""];
+ string? header = worksheet?.Cells[r, col++].Value?.ToString();
+ while (!string.IsNullOrWhiteSpace(header))
+ {
+ headers.Add(header);
+ header = worksheet?.Cells[r, col++]?.Value?.ToString();
+ }
+ headersList.Add(headers);
+ var headersCount = headers.Count;
+ if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+ r = nameDataStartLineDict[worksheet?.Name ?? ""];
+ var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - r + 1;
+ List<List<object?>> data = new();
+
+ for (var i = 0; i < rowsCount; i++)
+ {
+ List<object?> row = new();
+ for (var j = 0; j < headersCount; j++)
+ {
+ row.Add(worksheet?.Cells[i + r, j + 1]?.Value);
+ }
+ data.Add(row);
+ }
+ dataList.Add(data);
+
+ }
+
+ }
+
+
+
+ /// <summary>
+ /// 浠ユ枃浠舵祦IFormFile鏂瑰紡瀵煎叆鍒癉ataTable
+ /// </summary>
+ /// <param name="file"></param>
+ /// <param name="headStartLine"></param>
+ /// <param name="dataStartLine"></param>
+ /// <param name="flag"></param>
+ /// <returns></returns>
+ public static DataTable ImportExcelToDataTable(IFormFile file, int headStartLine ,int dataStartLine)
+ {
+
+ if (file == null) throw Oops.Oh(ErrorCode.D8000);
+
+ //鏆傛椂娉ㄩ噴锛屼互鍚庡啀鏀惧紑 銆怑ditby shaocx,2024-04-15銆�
+ /*
+ string key = "UploadFile:Excel";
+ var allowContentTypes = App.Configuration.GetSection($"{key}:contentType").Get<IEnumerable<string>>();
+ if (!allowContentTypes.Contains(file.ContentType)) throw Oops.Oh(ErrorCode.D8001);
+ //*/
+
+ List<string> headers = new List<string>();
+ System.Data.DataTable dataTable = null;
+ ExcelPackage package = null;
+ DataColumn column = null;
+ DataRow dataRow = null;
+ try
+ {
+
+ //璇诲彇Excel鏂囦欢
+ using (package = new ExcelPackage(file.OpenReadStream()))
+ {
+ var worksheet = package.Workbook.Worksheets.Count > 0 ? package.Workbook.Worksheets[0] : null;
+
+ dataTable = new System.Data.DataTable();
+
+ // var rowsCount = worksheet.Dimension.Rows;//鎬昏鏁�
+ var cellsCount = worksheet?.Cells?.Count() ?? 0;
+
+
+
+ int col = 1;
+ string? header = worksheet?.Cells[headStartLine, col++].Value?.ToString();
+ //鏋勫缓datatable鐨勫垪
+ while (!string.IsNullOrWhiteSpace(header))
+ {
+ headers.Add(header);
+ column = new DataColumn(header);
+ dataTable.Columns.Add(column);
+ header = worksheet?.Cells[headStartLine, col++]?.Value?.ToString();
+ }
+ var headersCount = headers.Count;
+ if (headersCount == 0) throw Oops.Oh("琛ㄥご鏁伴噺涓嶈兘涓�0");
+ var rowsCount = (int)Math.Ceiling(((double)cellsCount) / headersCount) - dataStartLine + 1;
+
+ //濉厖琛�
+ for (var i = 0; i < rowsCount; i++)
+ {
+ dataRow = dataTable.NewRow();
+
+ for (var j = 0; j < headersCount; j++)
+ {
+ var cell = worksheet?.Cells[i + dataStartLine, j + 1];
+
+ if (cell == null)
+ {
+ dataRow[j] = "";
+ }
+ else
+ {
+ #region 绫诲瀷鍒ゆ柇
+ //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)
+ //switch (cell.GetType())
+ //{
+ // case CellType.Blank:
+ // dataRow[j] = "";
+ // break;
+
+ // case CellType.Numeric:
+ // short format = cell.CellStyle.DataFormat;
+ // //瀵规椂闂存牸寮忥紙2015.12.5銆�2015/12/5銆�2015-12-5绛夛級鐨勫鐞�
+ // if (format == 14 || format == 31 || format == 57 || format == 58)
+ // {
+ // if (DateUtil.IsCellDateFormatted(cell))
+ // {
+ // dataRow[j] = cell.DateCellValue.Date.ToString();
+ // }
+ // }
+ // else
+ // {
+ // dataRow[j] = cell.NumericCellValue;
+ // }
+
+ // break;
+
+ // case CellType.String:
+ // dataRow[j] = cell.StringCellValue;
+ // break;
+ //}
+
+ #endregion
+ dataRow[j] = cell?.Value;
+ }
+ }
+
+ //鍘婚櫎绌虹櫧琛屾暟鎹�
+ bool rowdataisnull = true;
+ for (int k = 0; k <= headersCount - 1; ++k)
+ {
+ if (!string.IsNullOrEmpty(dataRow[k] as string))
+ {
+ rowdataisnull = false;
+ }
+ }
+ if (!rowdataisnull)
+ {
+ dataTable.Rows.Add(dataRow);
+ }
+
+ }
+
+
+ };
+
+
+ }
+ catch (Exception ex)
+ {
+
+ throw Oops.Oh("瀵煎叆寮傚父锛岃鑱旂郴绠$悊鍛�");
+ }
+ finally
+ {
+ if(package!=null) package.Dispose();
+
+ }
+ return dataTable;
+
+
+
+ }
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs
new file mode 100644
index 0000000..8c04477
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FieldUtil.cs
@@ -0,0 +1,74 @@
+锘�#nullable enable
+
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.ComponentModel.DataAnnotations;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+ public static class FieldUtil
+ {
+ /// <summary>
+ /// 鑾峰彇鏍囬噺灞炴�ф槸鍚﹀繀椤�
+ /// </summary>
+ /// <param name="p"></param>
+ /// <param name="dataType"></param>
+ /// <returns></returns>
+ public static bool IsRequired(IProperty p, string dataType)
+ {
+ if (dataType.StartsWith("System.Nullable"))
+ {
+ return false;
+ }
+
+ if ("System.String".Equals(dataType))
+ {
+ return p.PropertyInfo?.IsDefined(typeof(RequiredAttribute), true) ?? false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀵艰埅灞炴�ф槸鍚﹀繀椤�
+ /// </summary>
+ /// <param name="p"></param>
+ /// <param name="dataType"></param>
+ /// <returns></returns>
+ public static bool IsRequired(INavigation p, string dataType)
+ {
+ if (dataType.StartsWith("System.Nullable"))
+ {
+ return false;
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// 鑾峰彇瀵艰埅灞炴�ф槸鍚︽敞瑙d俊鎭�
+ /// </summary>
+ /// <param name="p"></param>
+ /// <returns></returns>
+ public static string GetComment(this INavigation p)
+ {
+ return ((CommentAttribute?)p?.PropertyInfo?.GetCustomAttribute(typeof(CommentAttribute), true))?.Comment ?? "";
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇绫诲瀷妫�绉�
+ /// </summary>
+ /// <param name="fullName"></param>
+ /// <returns></returns>
+ public static string GetSimpleName(this string fullName)
+ {
+ var args = fullName.Split(".");
+ if (args == null) return "";
+ return args[^1];
+ }
+
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs
new file mode 100644
index 0000000..eb43113
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/FileUtil.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion;
+using RestSharp;
+
+namespace Admin.NET.Core
+{
+ public static class FileUtil
+ {
+ /// <summary>
+ /// 寰�鏂囦欢閲岃拷鍔犲唴瀹�
+ /// </summary>
+ /// <param name="folder">鏂囦欢</param>
+ /// <param name="folder">鐩綍</param>
+ /// <param name="fileName">鏂囦欢</param>
+ /// <param name="args">鍐呭鍙傛暟</param>
+ public static void WriteLine(string folder, string fileName, string content)
+ {
+
+ if (!Directory.Exists(folder))
+ {
+ Directory.CreateDirectory(folder);
+ }
+
+ File.AppendAllText(Path.Combine(folder, fileName), content + "\r\n");
+ }
+
+ /// <summary>
+ /// 涓嬭浇鏂囦欢
+ /// </summary>
+ /// <param name="path"></param>
+ /// <param name="fileName"></param>
+ /// <returns></returns>
+ public static Stream Download(string path, string fileName)
+ {
+ var options = new RestClientOptions(App.Configuration["FileUrl"])
+ {
+ ThrowOnAnyError = true,
+ MaxTimeout = 2000
+ };
+ var client = new RestClient(options);
+ var request = new RestRequest($"/file/download", Method.Get);
+ request?.AddParameter(Parameter.CreateParameter("path", path, ParameterType.QueryString))
+ ?.AddParameter(Parameter.CreateParameter("fileName", fileName, ParameterType.QueryString));
+ var response = client.DownloadData(request ?? null!);
+ MemoryStream ms = new(response ?? null!);
+ return ms;
+ }
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs
new file mode 100644
index 0000000..f051ee0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/IPUtil.cs
@@ -0,0 +1,33 @@
+锘縰sing Microsoft.AspNetCore.Http;
+
+namespace Admin.NET.Core
+{
+ public static class IPUtil
+ {
+ /// <summary>
+ /// 鑾峰彇璇锋眰鐨刬p4
+ /// </summary>
+ /// <param name="context"></param>
+ /// <returns></returns>
+ public static string GetRequestIPv4(this HttpContext context)
+ {
+ string ip = string.Empty;
+ if (context.Connection.RemoteIpAddress != null)
+ {
+ if (context.Request.Headers.ContainsKey("X-Real-IP"))
+ {
+ ip = context.Request.Headers["X-Real-IP"].FirstOrDefault();
+ }
+ if (context.Request.Headers.ContainsKey("X-Forwarded-For"))
+ {
+ ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
+ }
+ if (string.IsNullOrEmpty(ip))
+ {
+ ip = context.Connection.RemoteIpAddress?.MapToIPv4()?.ToString();
+ }
+ }
+ return ip;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs
new file mode 100644
index 0000000..03a53b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/JsonUtil.cs
@@ -0,0 +1,82 @@
+锘縰sing Furion.FriendlyException;
+using Newtonsoft.Json;
+using System.Runtime.Serialization.Json;
+using System.Text;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// Json宸ュ叿绫�
+ /// </summary>
+ public static class JsonUtil
+ {
+ /// <summary>
+ /// Object杞琂osn
+ /// </summary>
+ /// <param name="obj"></param>
+ /// <returns></returns>
+ public static string ToJson(this object obj)
+ {
+ if (obj == null)
+ {
+ return null;
+ }
+ return JsonConvert.SerializeObject(obj);
+ }
+
+ /// <summary>
+ /// Json杞琌bject
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="str"></param>
+ /// <returns></returns>
+ public static T FromJson<T>(this string str)
+ {
+ try
+ {
+ return JsonConvert.DeserializeObject<T>(str);
+ }
+ catch (Exception ex)
+ {
+ throw Oops.Oh(ex.Message);
+ // return default(T);
+ }
+ }
+
+ /// <summary>
+ /// 鑾峰彇Json鐨凪odel
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="szJson"></param>
+ /// <returns></returns>
+ public static T ParseFromJson<T>(string szJson)
+ {
+ if (typeof(T) == typeof(IEnumerable<>))
+ {
+ }
+ T obj = Activator.CreateInstance<T>();
+ using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
+ {
+ DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
+ return (T)serializer.ReadObject(ms);
+ }
+ }
+
+ /// <summary>
+ /// string瀛楀吀
+ /// </summary>
+ /// <typeparam name="TKey"></typeparam>
+ /// <typeparam name="TValue"></typeparam>
+ /// <param name="jsonStr"></param>
+ /// <returns></returns>
+ public static Dictionary<TKey, TValue> DeserializeStringToDictionary<TKey, TValue>(string jsonStr)
+ {
+ if (string.IsNullOrEmpty(jsonStr))
+ return new Dictionary<TKey, TValue>();
+
+ Dictionary<TKey, TValue> jsonDict = JsonConvert.DeserializeObject<Dictionary<TKey, TValue>>(jsonStr);
+
+ return jsonDict;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs
new file mode 100644
index 0000000..911241b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ListUtil.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.FriendlyException;
+using System.Collections.Concurrent;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍒楄〃鎵╁睍
+ /// </summary>
+ public static class ListUtil
+ {
+ /// <summary>
+ /// 灏嗕竴涓暟瀛楁媶鍒嗘垚鑻ュ共涓寚瀹氬ぇ灏忕殑鏁扮粍
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="list"></param>
+ /// <param name="maxThreadCount"></param>
+ /// <param name="size"></param>
+ /// <returns></returns>
+ public static List<T>[] SplitList<T>(this List<T> list, int size )
+ {
+ var count = (int)Math.Ceiling((decimal)list.Count / size);
+ if(count <= 0) return Array.Empty<List < T >> ();
+ List<T>[] listArray = new List<T>[count];
+ for (var i = 0; i < count; i++)
+ {
+ listArray[i] = list.GetRange(i * size, Math.Min(size, list.Count - i * size));
+ }
+ return listArray;
+ }
+
+ /// <summary>
+ /// 灞曠ず鍒楄〃鏁版嵁
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="list"></param>
+ /// <returns></returns>
+ public static string Show<T>(this List<T> list)
+ {
+ string info = string.Empty;
+ list.ForEach(item => info += item + ",");
+ return info.EndsWith(",") ? info[..^1] : info;
+ }
+
+
+
+
+
+
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs
new file mode 100644
index 0000000..113f55c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Dto/Front_FileDto.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Dto
+{
+ public class Front_FileDto
+ {
+ public string Name { get; set; }
+ public string Status { get; set; }
+ public string Type { get; set; }
+ public string Uid { get; set; }
+ public string Url { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs
new file mode 100644
index 0000000..8851a9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Enum/FieldType.cs
@@ -0,0 +1,10 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Enum
+{
+ public enum FieldType
+ {
+ String,
+ Int,
+ Decimal,
+ Date
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs
new file mode 100644
index 0000000..27fc2e5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/EssentialFactor.cs
@@ -0,0 +1,20 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode
+{
+ /// <summary>
+ /// 瑕佺礌椤�
+ /// </summary>
+ public class EssentialFactor
+ {
+ /// <summary>
+ /// 瑕佺礌鍚嶇О
+ /// </summary>
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛楁闆�
+ /// </summary>
+ public IList<IFactor> Factors { get; set; } = new List<IFactor>();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs
new file mode 100644
index 0000000..ed44806
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DateFactor.cs
@@ -0,0 +1,27 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+ public class DateFactor : IFactor
+ {
+ public PropertyInfo Field { get; set; }
+ public string Describe { get; set; }
+ public string FieldName { get; set; }
+
+ public FieldType FieldType
+ { get { return FieldType.Date; } }
+
+ public string DbType
+ {
+ get
+ {
+ if (IsDateTime) return "DATETIME";
+ return "DATE";
+ }
+ }
+
+ public bool IsDateTime { get; set; } = true;
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs
new file mode 100644
index 0000000..84f428d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/DecimalFactor.cs
@@ -0,0 +1,46 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+ public class DecimalFactor : IFactor
+ {
+ /// <summary>
+ /// 瀵硅薄绫诲瀷
+ /// </summary>
+ public FieldType FieldType
+ { get { return FieldType.Decimal; } }
+
+ /// <summary>
+ /// 瀵硅薄鏄犲皠
+ /// </summary>
+ public PropertyInfo Field { get; set; }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ public string Describe { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ public string FieldName { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撶被鍨�
+ /// </summary>
+ public string DbType
+ { get { return $"DECIMAL({MaxLength},{DecimalLength})"; } }
+
+ /// <summary>
+ /// 鏁板瓧闀垮害
+ /// </summary>
+ public int MaxLength { get; set; }
+
+ /// <summary>
+ /// 灏忔暟闀垮害
+ /// </summary>
+ public int DecimalLength { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs
new file mode 100644
index 0000000..da94a84
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/Interface/IFactor.cs
@@ -0,0 +1,33 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface
+{
+ public interface IFactor
+ {
+ /// <summary>
+ /// 瀛楁缁戝畾
+ /// </summary>
+ PropertyInfo Field { get; set; }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ string Describe { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ string FieldName { get; set; }
+
+ /// <summary>
+ /// 瀛楁绫诲瀷
+ /// </summary>
+ FieldType FieldType { get; }
+
+ /// <summary>
+ /// 鏁版嵁搴撶被鍨�
+ /// </summary>
+ string DbType { get; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs
new file mode 100644
index 0000000..5c67be8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Factor/TextFactor.cs
@@ -0,0 +1,41 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Enum;
+using Furion.Extras.Admin.NET.Util.LowCode.Factor.Interface;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Factor
+{
+ public class TextFactor : IFactor
+ {
+ /// <summary>
+ /// 瀵硅薄绫诲瀷
+ /// </summary>
+ public FieldType FieldType
+ { get { return FieldType.String; } }
+
+ /// <summary>
+ /// 瀛楁鎻忚堪
+ /// </summary>
+ public string Describe { get; set; }
+
+ /// <summary>
+ /// 瀛楁鍚�
+ /// </summary>
+ public string FieldName { get; set; }
+
+ /// <summary>
+ /// 瀵硅薄鏄犲皠
+ /// </summary>
+ public PropertyInfo Field { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁搴撶被鍨�
+ /// </summary>
+ public string DbType
+ { get { return $"NVARCHAR({MaxLength})"; } }
+
+ /// <summary>
+ /// 瀛楁鏈�澶ч暱搴�
+ /// </summary>
+ public int MaxLength { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs
new file mode 100644
index 0000000..92e8aed
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeAttribute.cs
@@ -0,0 +1,12 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Att
+{
+ public class FrontTypeAttribute : Attribute
+ {
+ public FrontTypeAttribute(string type)
+ {
+ this.Type = type;
+ }
+
+ public string Type { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs
new file mode 100644
index 0000000..0dcb431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Att/FrontTypeBindDatabaseAttribute.cs
@@ -0,0 +1,23 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Att
+{
+ [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
+ public class FrontTypeBindDatabaseAttribute : Attribute
+ {
+ public FrontTypeBindDatabaseAttribute(string providerName, Type dbType, string dbParam = null,
+ Type dtoType = null,
+ string suffix = null)
+ {
+ this.ProviderName = providerName;
+ this.Suffix = suffix;
+ this.DbType = dbType;
+ this.DtoType = dtoType;
+ this.DbParam = dbParam;
+ }
+
+ public string ProviderName { get; set; }
+ public string Suffix { get; set; }
+ public Type DbType { get; set; }
+ public Type DtoType { get; set; }
+ public string DbParam { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs
new file mode 100644
index 0000000..47c7f56
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Dynamic.cs
@@ -0,0 +1,23 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+
+namespace Admin.NET.Core.Util.LowCode.Front.Code
+{
+ public static class AutoCode_Dynamic
+ {
+ public static Front_Dynamic GetDynamic(this string DynamicKey)
+ {
+ var index = DynamicKey.IndexOf('$');
+ if (index >= 0)
+ {
+ return new Front_Dynamic()
+ {
+ Head = DynamicKey.Substring(0, index),
+ Dynamic = DynamicKey.Substring(index + 1),
+ DynamicKey = DynamicKey
+ };
+ }
+
+ return null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs
new file mode 100644
index 0000000..57aa12f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_Front.cs
@@ -0,0 +1,103 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System.Reflection;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Code
+{
+ /// <summary>
+ /// json瑙f瀽涓哄姩鎬佽〃鍗�
+ /// </summary>
+ public static class AutoCode_Front
+ {
+ public static Front_Model ConvertToFront(this string json)
+ {
+ FrontTypes();
+
+ var JData = JsonConvert.DeserializeObject<JObject>(json);
+
+ return new Front_Model()
+ {
+ List = ReadFront(JData["list"].Values<JObject>().ToList()),
+ Config = JsonConvert.DeserializeObject<Front_Config>(JData["config"].ToString())
+ };
+ }
+
+ public static List<IFront> ReadFront(List<JObject> JData)
+ {
+ List<IFront> list = new List<IFront>();
+
+ JData.ForEach(JItem =>
+ {
+ list.Add(ReadFront(JItem));
+ });
+
+ return list;
+ }
+
+ public static List<FrontTypeBindDatabaseAttribute> ReadFront_BindDatabase(this IFront front, string providerName)
+ {
+ var item = List.Where(x => x.Type == front.Type).FirstOrDefault();
+
+ if (item == null || item.BindDatabase == null || !item.BindDatabase.Any()) return new List<FrontTypeBindDatabaseAttribute>();
+
+ if (item.BindDatabase.Where(x => x.ProviderName == providerName).Any())
+ return item.BindDatabase.Where(x => x.ProviderName == providerName).ToList();
+
+ providerName = item.BindDatabase.Select(x => x.ProviderName).FirstOrDefault();
+
+ return item.BindDatabase.Where(x => x.ProviderName == providerName).ToList();
+ }
+
+ private static IFront ReadFront(JObject JData)
+ {
+ var type = JData["type"].Value<string>();
+
+ var item = List.Where(x => x.Type == type).FirstOrDefault();
+
+ if (item == null)
+ throw new NotFoundFrontException($"鏈壘鍒扮粍浠讹細{type}");
+
+ if (item.T.GetInterfaces().Where(x => x == typeof(IFrontLayout)).Any())
+ {
+ IFrontLayout layout = Activator.CreateInstance(item.T) as IFrontLayout;
+ return layout.ConvertFront(JData);
+ }
+ else
+ {
+ return (IFront)JData.ToObject(item.T);
+ }
+ }
+
+ private static List<Front_Convert> List { get; set; }
+
+ private static List<Front_Convert> FrontTypes()
+ {
+ if (List == null)
+ {
+ List = new List<Front_Convert>();
+
+ Assembly.GetExecutingAssembly().GetTypes().Where(o => o.IsClass && o.Namespace == "Furion.Extras.Admin.NET.Util.LowCode.Front").ToList().ForEach(type =>
+ {
+ var FrontTypeAttribute = type.GetCustomAttribute<FrontTypeAttribute>();
+
+ if (FrontTypeAttribute != null)
+ {
+ List.Add(new Front_Convert()
+ {
+ T = type
+ ,
+ Type = FrontTypeAttribute.Type
+ ,
+ BindDatabase = type.GetCustomAttributes<FrontTypeBindDatabaseAttribute>().ToList()
+ });
+ }
+ });
+ }
+
+ return List;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs
new file mode 100644
index 0000000..ba40641
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/AutoCode_FrontModel.cs
@@ -0,0 +1,43 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Code
+{
+ public static class AutoCode_FrontModel
+ {
+ public static List<IFront> AllFront(this Front_Model model)
+ {
+ List<IFront> list = new List<IFront>();
+
+ model.List.ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(front => { list.Add(front); });
+ }
+ else
+ {
+ list.Add(item);
+ }
+ });
+
+ return list;
+ }
+
+ public static List<ViewDynamic> AllDynamic(this List<IFront> list)
+ {
+ List<ViewDynamic> data = new List<ViewDynamic>();
+
+ list.ForEach(item =>
+ {
+ if (item.Dynamic != null)
+ {
+ data.Add(item.Dynamic);
+ }
+ });
+
+ return data;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs
new file mode 100644
index 0000000..aa4f8ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Code/FileUrl_Code.cs
@@ -0,0 +1,17 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Code
+{
+ public static class FileUrl_Code
+ {
+ public static string GetFileId(this string Url)
+ {
+ var param = Url.Substring(Url.IndexOf("?") + 1);
+
+ param = param.Substring(param.IndexOf("id=") + 3);
+
+ if (param.IndexOf("?") >= 0)
+ param = param.Substring(0, param.IndexOf("?"));
+
+ return param;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs
new file mode 100644
index 0000000..76737df
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Alert.cs
@@ -0,0 +1,56 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 璀﹀憡鎻愮ず
+ /// </summary>
+ [FrontType("alert")]
+ public class Front_Alert : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ public Front_Alert_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Alert_Options
+ {
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 杈呭姪琛ㄨ堪
+ /// </summary>
+ public string Description { get; set; }
+
+ /// <summary>
+ /// 鏄剧ず鍥炬爣
+ /// </summary>
+ public bool ShowIcon { get; set; }
+
+ /// <summary>
+ /// 鏃犺竟妗�
+ /// </summary>
+ public bool Banner { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs
new file mode 100644
index 0000000..fdad1c9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Batch.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("batch")]
+ public class Front_Batch : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆
+ /// </summary>
+ public Front_Batch_Options Options { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁瀛楁
+ /// </summary>
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 甯姪淇℃伅
+ /// </summary>
+ public string Help { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Batch_Options
+ {
+ public int ScrollY { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鏄剧ずLabel
+ /// </summary>
+ public bool ShowLabel { get; set; }
+
+ /// <summary>
+ /// 闅愯棌搴忓彿
+ /// </summary>
+ public bool HideSequence { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs
new file mode 100644
index 0000000..b3ed978
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Button.cs
@@ -0,0 +1,48 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("button")]
+ public class Front_Button : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ public Front_Button_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Button_Options
+ {
+ /// <summary>
+ /// 绫诲瀷
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 鎸夐挳鎿嶄綔
+ /// </summary>
+ public string Handle { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佸嚱鏁�
+ /// </summary>
+ public string DynamicFun { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs
new file mode 100644
index 0000000..4c965b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Card.cs
@@ -0,0 +1,51 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("card")]
+ public class Front_Card : IFront, IFrontLayout
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 缁勪欢闆�
+ /// </summary>
+ public List<IFront> List { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+
+ public IFront ConvertFront(JObject JData)
+ {
+ return new Front_Card()
+ {
+ Key = JData["key"].Value<string>(),
+ Label = JData["label"].Value<string>(),
+ Type = JData["type"].Value<string>(),
+ List = AutoCode_Front.ReadFront(JData["list"].Values<JObject>().ToList())
+ };
+ }
+
+ public void ReadFront(Action<IFront> action)
+ {
+ this.List.ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(action);
+ }
+ else
+ {
+ action(item);
+ }
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs
new file mode 100644
index 0000000..92e38c3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Cascader.cs
@@ -0,0 +1,62 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 绾ц仈閫夋嫨鍣�
+ /// </summary>
+ [FrontType("cascader")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+ public class Front_Cascader : Front_Base<Front_Cascader_Options>, IFrontDynamic
+ {
+ public override ViewDynamic Dynamic
+ { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+ }
+
+ public class Front_Cascader_Options : IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鍙悳绱�
+ /// </summary>
+ public bool ShowSearch { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 閫夐」閰嶇疆
+ /// </summary>
+ public Front_Tree_Option[] Options { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs
new file mode 100644
index 0000000..1d738db
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Checkbox.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 澶氶�夋
+ /// </summary>
+ [FrontType("checkbox")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+ public class Front_Checkbox : Front_Base<Front_Checkbox_Options>, IFrontDynamic
+ {
+ public override ViewDynamic Dynamic
+ { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+ }
+
+ public class Front_Checkbox_Options : IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+
+ /// <summary>
+ /// 閫夐」閰嶇疆
+ /// </summary>
+ public Front_Option[] Options { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string[] DefaultValue { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs
new file mode 100644
index 0000000..fe5c07f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Date.cs
@@ -0,0 +1,73 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鏃ユ湡閫夋嫨妗�
+ /// </summary>
+ [FrontType("date")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(DateTimeOffset))]
+ public class Front_Date : Front_Base<Front_Date_Options>
+ {
+ }
+
+ public class Front_Date_Options
+ {
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public DateTime? DefaultValue { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public DateTime[] RangeDefaultValue { get; set; }
+
+ /// <summary>
+ /// 鑼冨洿閫夋嫨
+ /// </summary>
+ public bool Range { get; set; }
+
+ /// <summary>
+ /// 鏃堕棿閫夋嫨鍣�
+ /// </summary>
+ public bool ShowTime { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string[] RangePlaceholder { get; set; }
+
+ /// <summary>
+ /// 鏃堕棿鏍煎紡
+ /// </summary>
+ public string Format { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs
new file mode 100644
index 0000000..5669d59
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Divider.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("divider")]
+ public class Front_Divider : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Icon { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 鍒嗗壊绾块厤缃�
+ /// </summary>
+ public Front_Divider_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Divider_Options
+ {
+ /// <summary>
+ /// 鏍囩浣嶇疆
+ /// </summary>
+ public string Orientation { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs
new file mode 100644
index 0000000..a305e7a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Editor.cs
@@ -0,0 +1,58 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 瀵屾枃鏈
+ /// </summary>
+ [FrontType("editor")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(8000)")]
+ public class Front_Editor : Front_Base<Front_Editor_Options>
+ {
+ }
+
+ public class Front_Editor_Options
+ {
+ /// <summary>
+ /// 楂樺害
+ /// </summary>
+ public int? Height { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 姹夊寲
+ /// </summary>
+ public bool Chinesization { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鏄剧ずLabel
+ /// </summary>
+ public bool ShowLabel { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs
new file mode 100644
index 0000000..12b34c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Grid.cs
@@ -0,0 +1,108 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("grid")]
+ public class Front_Grid : IFront, IFrontLayout
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 鏍呮牸甯冨眬椤�
+ /// </summary>
+ public List<Front_Grid_Col> Columns { get; set; }
+
+ /// <summary>
+ /// 鏍呮牸閰嶇疆
+ /// </summary>
+ public Front_Grid_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+
+ /// <summary>
+ /// 甯冨眬瀛愮粍浠惰В鏋�
+ /// </summary>
+ /// <param name="JData"></param>
+ /// <returns></returns>
+ public IFront ConvertFront(JObject JData)
+ {
+ List<Front_Grid_Col> front_Grid_Cols = new List<Front_Grid_Col>();
+
+ var columns = JData["columns"].Values<JObject>();
+
+ if (columns != null)
+ {
+ foreach (var column_item in columns)
+ {
+ front_Grid_Cols.Add(new Front_Grid_Col()
+ {
+ Span = column_item["span"].Value<int>(),
+ List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+ });
+ }
+ }
+
+ return new Front_Grid()
+ {
+ Key = JData["key"].Value<string>(),
+ Label = JData["label"].Value<string>(),
+ Type = JData["type"].Value<string>(),
+ Options = new Front_Grid_Options
+ {
+ Gutter = JData["options"]["gutter"].Value<int>()
+ },
+ Columns = front_Grid_Cols
+ };
+ }
+
+ public void ReadFront(Action<IFront> action)
+ {
+ this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(action);
+ }
+ else
+ {
+ action(item);
+ }
+ });
+ }
+ }
+
+ /// <summary>
+ /// 鏍呮牸甯冨眬椤�
+ /// </summary>
+ public class Front_Grid_Col
+ {
+ /// <summary>
+ /// 鍒楅厤缃」锛堟渶澶у�硷細24锛�
+ /// </summary>
+ public int Span { get; set; }
+
+ /// <summary>
+ /// 缁勪欢闆�
+ /// </summary>
+ public List<IFront> List { get; set; }
+ }
+
+ /// <summary>
+ /// 鏍呮牸閰嶇疆
+ /// </summary>
+ public class Front_Grid_Options
+ {
+ /// <summary>
+ /// 鏍呮牸闂磋窛
+ /// </summary>
+ public int Gutter { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs
new file mode 100644
index 0000000..8b044ef
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Html.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("html")]
+ public class Front_Html : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ public Front_Html_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Html_Options
+ {
+ public bool Hidden { get; set; }
+ public string DefaultValue { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs
new file mode 100644
index 0000000..c235217
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Input.cs
@@ -0,0 +1,68 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 杈撳叆妗�
+ /// </summary>
+ [FrontType("input")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+ public class Front_Input : Front_Base<Front_Input_Options>
+ {
+ }
+
+ public class Front_Input_Options
+ {
+ /// <summary>
+ ///
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ч暱搴�
+ /// </summary>
+ public int? MaxLength { get; set; }
+
+ /// <summary>
+ /// 鍓嶇紑
+ /// </summary>
+ public string AddonBefore { get; set; }
+
+ /// <summary>
+ /// 鍚庣紑
+ /// </summary>
+ public string AddonAfter { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs
new file mode 100644
index 0000000..d16edc2
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Number.cs
@@ -0,0 +1,63 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鏁板瓧杈撳叆妗�
+ /// </summary>
+ [FrontType("number")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(decimal), "decimal(25,11)")]
+ public class Front_Number : Front_Base<Front_Number_Options>
+ {
+ }
+
+ public class Front_Number_Options
+ {
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public decimal? DefaultValue { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓��
+ /// </summary>
+ public decimal? Min { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у��
+ /// </summary>
+ public decimal? Max { get; set; }
+
+ /// <summary>
+ /// 鏁板�肩簿搴�
+ /// </summary>
+ public int? Precision { get; set; }
+
+ /// <summary>
+ /// 姝ラ暱
+ /// </summary>
+ public int? Step { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs
new file mode 100644
index 0000000..7bd9117
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Radio.cs
@@ -0,0 +1,52 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鍗曢�夋
+ /// </summary>
+ [FrontType("radio")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(long))]
+ public class Front_Radio : Front_Base<Front_Radio_Options>, IFrontDynamic
+ {
+ public override ViewDynamic Dynamic
+ { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+ }
+
+ public class Front_Radio_Options : IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+
+ /// <summary>
+ /// 閫夐」閰嶇疆
+ /// </summary>
+ public Front_Option[] Options { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs
new file mode 100644
index 0000000..24d6ec6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Rate.cs
@@ -0,0 +1,43 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 璇勫垎
+ /// </summary>
+ [FrontType("rate")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(int))]
+ public class Front_Rate : Front_Base<Front_Rate_Options>
+ {
+ }
+
+ public class Front_Rate_Options
+ {
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public int DefaultValue { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у��
+ /// </summary>
+ public int Max { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鍏佽鍗婇��
+ /// </summary>
+ public bool AllowHalf { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs
new file mode 100644
index 0000000..220136e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Select.cs
@@ -0,0 +1,77 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 涓嬫媺閫夋嫨鍣�
+ /// </summary>
+ [FrontType("select")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(200)")]
+ public class Front_Select : Front_Base<Front_Select_Options>, IFrontDynamic
+ {
+ public override ViewDynamic Dynamic
+ { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+ }
+
+ public class Front_Select_Options : IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 澶氶��
+ /// </summary>
+ public bool Multiple { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 閫夐」閰嶇疆
+ /// </summary>
+ public Front_Option[] Options { get; set; }
+
+ /// <summary>
+ /// 鍙悳绱�
+ /// </summary>
+ public bool ShowSearch { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs
new file mode 100644
index 0000000..04a8fc1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_SelectInputList.cs
@@ -0,0 +1,96 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("selectInputList")]
+ public class Front_SelectInputList : IFront, IFrontLayout
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 閫夋嫨杈撳叆鍒楅厤缃�
+ /// </summary>
+ public Front_SelectInputList_Options Options { get; set; }
+
+ /// <summary>
+ /// 閫夐」
+ /// </summary>
+ public List<Front_SelectInputList_Column> Columns { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+
+ public IFront ConvertFront(JObject JData)
+ {
+ var columns_obj = JData["columns"].Values<JObject>();
+
+ List<Front_SelectInputList_Column> columns = new List<Front_SelectInputList_Column>();
+
+ if (columns_obj != null)
+ {
+ foreach (var column_item in columns_obj)
+ {
+ columns.Add(new Front_SelectInputList_Column()
+ {
+ Label = column_item["label"].Value<string>(),
+ Value = column_item["value"].Value<string>(),
+ List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+ });
+ }
+ }
+
+ return new Front_SelectInputList()
+ {
+ Key = JData["key"].Value<string>(),
+ Label = JData["label"].Value<string>(),
+ Type = JData["type"].Value<string>(),
+ Options = JsonConvert.DeserializeObject<Front_SelectInputList_Options>(JData["options"].ToString()),
+ Columns = columns
+ };
+ }
+
+ public void ReadFront(Action<IFront> action)
+ {
+ this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(action);
+ }
+ else
+ {
+ action(item);
+ }
+ });
+ }
+ }
+
+ public class Front_SelectInputList_Options
+ {
+ public bool disabled { get; set; }
+ public bool multiple { get; set; }
+ public bool hidden { get; set; }
+ public bool showLabel { get; set; }
+ public string width { get; set; }
+ }
+
+ public class Front_SelectInputList_Column
+ {
+ public string Value { get; set; }
+ public string Label { get; set; }
+
+ /// <summary>
+ /// 缁勪欢闆�
+ /// </summary>
+ public List<IFront> List { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs
new file mode 100644
index 0000000..f1396e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Slider.cs
@@ -0,0 +1,58 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 婊戝姩杈撳叆鏉�
+ /// </summary>
+ [FrontType("slider")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(int))]
+ public class Front_Slider : Front_Base<Front_Slider_Options>
+ {
+ }
+
+ public class Front_Slider_Options
+ {
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public int DefaultValue { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鏈�灏忓��
+ /// </summary>
+ public int Min { get; set; }
+
+ /// <summary>
+ /// 鏈�澶у��
+ /// </summary>
+ public int Max { get; set; }
+
+ /// <summary>
+ /// 姝ラ暱
+ /// </summary>
+ public int Step { get; set; }
+
+ /// <summary>
+ /// 鏄剧ず杈撳叆妗�
+ /// </summary>
+ public bool ShowInput { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs
new file mode 100644
index 0000000..06d9a97
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Switch.cs
@@ -0,0 +1,30 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("switch")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(bool))]
+ public class Front_Switch : Front_Base<Front_Switch_Options>
+ {
+ }
+
+ public class Front_Switch_Options
+ {
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public bool DefaultValue { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs
new file mode 100644
index 0000000..ac70d8e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Table.cs
@@ -0,0 +1,128 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("table")]
+ public class Front_Table : IFront, IFrontLayout
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ牸閰嶇疆
+ /// </summary>
+ public Front_Table_Options Options { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ牸鍒�
+ /// </summary>
+ public List<Front_Table_Trs> Trs { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+
+ public IFront ConvertFront(JObject JData)
+ {
+ List<Front_Table_Trs> trs = new List<Front_Table_Trs>();
+
+ var trs_obj = JData["trs"].Values<JObject>();
+
+ if (trs != null)
+ {
+ foreach (var tr_item in trs_obj)
+ {
+ var tds_obj = tr_item["tds"].Values<JObject>();
+
+ if (tds_obj != null)
+ {
+ List<Front_Table_Tds> tds = new List<Front_Table_Tds>();
+
+ foreach (var td_item in tds_obj)
+ {
+ tds.Add(new Front_Table_Tds()
+ {
+ Colspan = td_item["colspan"].Value<int>(),
+ Rowspan = td_item["rowspan"].Value<int>(),
+ List = AutoCode_Front.ReadFront(td_item["list"].Values<JObject>().ToList())
+ });
+ }
+
+ trs.Add(new Front_Table_Trs()
+ {
+ Tds = tds
+ });
+ }
+ }
+ }
+
+ return new Front_Table()
+ {
+ Key = JData["key"].Value<string>(),
+ Label = JData["label"].Value<string>(),
+ Type = JData["type"].Value<string>(),
+ Options = JsonConvert.DeserializeObject<Front_Table_Options>(JData["options"].ToString()),
+ Trs = trs
+ };
+ }
+
+ public void ReadFront(Action<IFront> action)
+ {
+ this.Trs.SelectMany(x => x.Tds.SelectMany(x_1 => x_1.List)).ToList().ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(action);
+ }
+ else
+ {
+ action(item);
+ }
+ });
+ }
+ }
+
+ /// <summary>
+ /// 琛ㄦ牸鍒�
+ /// </summary>
+ public class Front_Table_Trs
+ {
+ public List<Front_Table_Tds> Tds { get; set; }
+ }
+
+ /// <summary>
+ /// 琛ㄦ牸鍗曞厓鏍�
+ /// </summary>
+ public class Front_Table_Tds
+ {
+ /// <summary>
+ /// 璺ㄥ垪
+ /// </summary>
+ public int Colspan { get; set; }
+
+ /// <summary>
+ /// 璺ㄨ
+ /// </summary>
+ public int Rowspan { get; set; }
+
+ /// <summary>
+ /// 缁勪欢闆�
+ /// </summary>
+ public List<IFront> List { get; set; }
+ }
+
+ public class Front_Table_Options
+ {
+ public string Width { get; set; }
+ public bool Bordered { get; set; }
+ public bool Bright { get; set; }
+ public bool Small { get; set; }
+ public string CustomStyle { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs
new file mode 100644
index 0000000..5f8bc9b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Tabs.cs
@@ -0,0 +1,121 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Code;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("tabs")]
+ public class Front_Tabs : IFront, IFrontLayout
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 琛ㄦ牸閰嶇疆
+ /// </summary>
+ public Front_Tabs_Options Options { get; set; }
+
+ /// <summary>
+ /// Tab閫夐」
+ /// </summary>
+ public List<Front_Tabs_Column> Columns { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+
+ public IFront ConvertFront(JObject JData)
+ {
+ var columns_obj = JData["columns"].Values<JObject>();
+
+ List<Front_Tabs_Column> columns = new List<Front_Tabs_Column>();
+
+ if (columns_obj != null)
+ {
+ foreach (var column_item in columns_obj)
+ {
+ columns.Add(new Front_Tabs_Column()
+ {
+ Label = column_item["label"].Value<string>(),
+ Value = column_item["value"].Value<string>(),
+ List = AutoCode_Front.ReadFront(column_item["list"].Values<JObject>().ToList())
+ });
+ }
+ }
+
+ return new Front_Tabs()
+ {
+ Key = JData["key"].Value<string>(),
+ Label = JData["label"].Value<string>(),
+ Type = JData["type"].Value<string>(),
+ Options = JsonConvert.DeserializeObject<Front_Tabs_Options>(JData["options"].ToString()),
+ Columns = columns
+ };
+ }
+
+ public void ReadFront(Action<IFront> action)
+ {
+ this.Columns.SelectMany(x => x.List).ToList().ForEach(item =>
+ {
+ if (item is IFrontLayout)
+ {
+ (item as IFrontLayout).ReadFront(action);
+ }
+ else
+ {
+ action(item);
+ }
+ });
+ }
+ }
+
+ public class Front_Tabs_Options
+ {
+ /// <summary>
+ /// 鏍囩闂磋窛
+ /// </summary>
+ public int? TabBarGutter { get; set; }
+
+ /// <summary>
+ /// 椤电绫诲瀷
+ /// </summary>
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 椤电浣嶇疆
+ /// </summary>
+ public string TabPosition { get; set; }
+
+ /// <summary>
+ /// 澶у皬
+ /// </summary>
+ public string Size { get; set; }
+
+ /// <summary>
+ /// 鍔ㄧ敾鍒囨崲
+ /// </summary>
+ public bool Animated { get; set; }
+ }
+
+ public class Front_Tabs_Column
+ {
+ /// <summary>
+ /// 椤电ID
+ /// </summary>
+ public string Value { get; set; }
+
+ /// <summary>
+ /// 椤电鏍囩
+ /// </summary>
+ public string Label { get; set; }
+
+ /// <summary>
+ /// 缁勪欢闆�
+ /// </summary>
+ public List<IFront> List { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs
new file mode 100644
index 0000000..c51e3e7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Text.cs
@@ -0,0 +1,58 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鏂囨湰妗�
+ /// </summary>
+ [FrontType("text")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+ public class Front_Text : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+ public string Model { get; set; }
+
+ public Front_Text_Options Options { get; set; }
+
+ public ViewDynamic Dynamic
+ { get { return null; } }
+ }
+
+ public class Front_Text_Options
+ {
+ /// <summary>
+ /// 鏂囧瓧瀵归綈鏂瑰紡
+ /// </summary>
+ public string TextAlign { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鏄剧ず蹇呴�夋爣璁�
+ /// </summary>
+ public bool ShowRequiredMark { get; set; }
+
+ /// <summary>
+ /// 瀛椾綋棰滆壊
+ /// </summary>
+ public string Color { get; set; }
+
+ /// <summary>
+ /// 瀛椾綋绫诲瀷
+ /// </summary>
+ public string FontFamily { get; set; }
+
+ /// <summary>
+ /// 瀛椾綋澶у皬
+ /// </summary>
+ public string FontSize { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs
new file mode 100644
index 0000000..69a7cb4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Textarea.cs
@@ -0,0 +1,60 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ [FrontType("textarea")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+ public class Front_Textarea : Front_Base<Front_Textarea_Options>
+ {
+ }
+
+ public class Front_Textarea_Options
+ {
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 鑷�傚簲鍐呭楂樺害
+ /// </summary>
+ public int? MinRows { get; set; }
+
+ /// <summary>
+ /// 鑷�傚簲鍐呭楂樺害
+ /// </summary>
+ public int? MaxRows { get; set; }
+
+ /// <summary>
+ /// 鏈�澶ч暱搴�
+ /// </summary>
+ public int? MaxLength { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs
new file mode 100644
index 0000000..50b2086
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_Time.cs
@@ -0,0 +1,53 @@
+锘縰sing Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鏃堕棿閫夋嫨妗�
+ /// </summary>
+ [FrontType("time")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(10)")]
+ public class Front_Time : Front_Base<Front_Time_Options>
+ {
+ }
+
+ public class Front_Time_Options
+ {
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ /// <summary>
+ /// 鏃堕棿鏍煎紡
+ /// </summary>
+ public string Format { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs
new file mode 100644
index 0000000..dbdeed5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_TreeSelect.cs
@@ -0,0 +1,72 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 鏍戦�夋嫨鍣�
+ /// </summary>
+ [FrontType("treeSelect")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)")]
+ public class Front_TreeSelect : Front_Base<Front_TreeSelect_Options>, IFrontDynamic
+ {
+ public override ViewDynamic Dynamic
+ { get { return new ViewDynamic() { Dynamic = this.Options.Dynamic, DynamicKey = this.Options.DynamicKey }; } }
+ }
+
+ public class Front_TreeSelect_Options : IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+
+ /// <summary>
+ /// 閫夐」閰嶇疆
+ /// </summary>
+ public Front_Tree_Option[] Options { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 澶氶��
+ /// </summary>
+ public bool Multiple { get; set; }
+
+ /// <summary>
+ /// 鍙竻闄�
+ /// </summary>
+ public bool Clearable { get; set; }
+
+ /// <summary>
+ /// 鍙悳绱�
+ /// </summary>
+ public bool ShowSearch { get; set; }
+
+ /// <summary>
+ /// 鍙嬀閫�
+ /// </summary>
+ public bool TreeCheckable { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs
new file mode 100644
index 0000000..92c7a8c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadFile.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 涓婁紶鏂囦欢
+ /// </summary>
+ [FrontType("uploadFile")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)", dtoType: typeof(Front_FileDto[]))]
+ public class Front_UploadFile : Front_Base<Front_UploadFile_Options>
+ {
+ }
+
+ public class Front_UploadFile_Options
+ {
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 澶氶��
+ /// </summary>
+ public bool Multiple { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 鍏佽鎷栨嫿
+ /// </summary>
+ public bool Drag { get; set; }
+
+ /// <summary>
+ /// 涓嬭浇鏂瑰紡
+ /// </summary>
+ public string DownloadWay { get; set; }
+
+ /// <summary>
+ /// 鍔ㄦ�佸嚱鏁�
+ /// </summary>
+ public string DynamicFun { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 鏈�澶т笂浼犳暟閲�
+ /// </summary>
+ public int Limit { get; set; }
+
+ /// <summary>
+ /// 棰濆鍙傛暟锛圝SON鏍煎紡锛�
+ /// </summary>
+ public string Data { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢name
+ /// </summary>
+ public string FileName { get; set; }
+
+ /// <summary>
+ /// 涓婁紶鍦板潃
+ /// </summary>
+ public string Action { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ public object Headers { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs
new file mode 100644
index 0000000..2401398
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Front_UploadImg.cs
@@ -0,0 +1,73 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front
+{
+ /// <summary>
+ /// 涓婁紶鍥剧墖
+ /// </summary>
+ [FrontType("uploadImg")]
+ [FrontTypeBindDatabase(DbProvider.SqlServer, typeof(string), "nvarchar(2000)", dtoType: typeof(Front_FileDto[]))]
+ public class Front_UploadImg : Front_Base<Front_UploadImg_Options>
+ {
+ }
+
+ public class Front_UploadImg_Options
+ {
+ /// <summary>
+ /// 榛樿鍊�
+ /// </summary>
+ public string DefaultValue { get; set; }
+
+ /// <summary>
+ /// 澶氶��
+ /// </summary>
+ public bool Multiple { get; set; }
+
+ /// <summary>
+ /// 绂佺敤
+ /// </summary>
+ public bool Disabled { get; set; }
+
+ /// <summary>
+ /// 闅愯棌
+ /// </summary>
+ public bool Hidden { get; set; }
+
+ /// <summary>
+ /// 瀹藉害
+ /// </summary>
+ public string Width { get; set; }
+
+ /// <summary>
+ /// 鏈�澶т笂浼犳暟閲�
+ /// </summary>
+ public int Limit { get; set; }
+
+ /// <summary>
+ /// 棰濆鍙傛暟锛圝SON鏍煎紡锛�
+ /// </summary>
+ public string Data { get; set; }
+
+ /// <summary>
+ /// 鏂囦欢name
+ /// </summary>
+ public string FileName { get; set; }
+
+ /// <summary>
+ /// 涓婁紶鍦板潃
+ /// </summary>
+ public string Action { get; set; }
+
+ /// <summary>
+ /// 鍗犱綅鍐呭
+ /// </summary>
+ public string Placeholder { get; set; }
+
+ public object Headers { get; set; }
+
+ public string ListType { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs
new file mode 100644
index 0000000..e04bd27
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFront.cs
@@ -0,0 +1,32 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+ public interface IFront
+ {
+ /// <summary>
+ /// 鍞竴缁勪欢缂栧彿
+ /// </summary>
+ string Key { get; set; }
+
+ /// <summary>
+ /// 鏍囩
+ /// </summary>
+ string Label { get; set; }
+
+ /// <summary>
+ /// 鎺т欢绫诲瀷
+ /// </summary>
+ string Type { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁灞炴��
+ /// </summary>
+ string Model { get; set; }
+
+ /// <summary>
+ /// 鑾峰彇鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public ViewDynamic Dynamic { get; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs
new file mode 100644
index 0000000..947adb6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamic.cs
@@ -0,0 +1,6 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+ public interface IFrontDynamic
+ {
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs
new file mode 100644
index 0000000..0a26c5a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontDynamicOptions.cs
@@ -0,0 +1,15 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+ public interface IFrontDynamicOptions
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ bool Dynamic { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs
new file mode 100644
index 0000000..d23f3e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Interface/IFrontLayout.cs
@@ -0,0 +1,20 @@
+锘縰sing Newtonsoft.Json.Linq;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Interface
+{
+ public interface IFrontLayout
+ {
+ /// <summary>
+ /// 甯冨眬瀛愮粍浠惰В鏋�
+ /// </summary>
+ /// <param name="JData"></param>
+ /// <returns></returns>
+ IFront ConvertFront(JObject JData);
+
+ /// <summary>
+ /// 鑾峰彇缁勪欢
+ /// </summary>
+ /// <param name="action"></param>
+ void ReadFront(Action<IFront> action);
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs
new file mode 100644
index 0000000..1aa4365
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Base.cs
@@ -0,0 +1,35 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Front.Model;
+using Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Base<T> : IFront
+ {
+ public string Key { get; set; }
+ public string Label { get; set; }
+ public string Type { get; set; }
+
+ /// <summary>
+ /// 閰嶇疆
+ /// </summary>
+ public T Options { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁瀛楁
+ /// </summary>
+ public string Model { get; set; }
+
+ /// <summary>
+ /// 甯姪淇℃伅
+ /// </summary>
+ public string Help { get; set; }
+
+ /// <summary>
+ /// 鏍¢獙
+ /// </summary>
+ public Front_Rule[] Rules { get; set; }
+
+ public virtual ViewDynamic Dynamic
+ { get { return null; } }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs
new file mode 100644
index 0000000..ffb0ae8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Config.cs
@@ -0,0 +1,23 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Config
+ {
+ public string Layout { get; set; }
+ public Front_Config_Col LabelCol { get; set; }
+ public int LabelWidth { get; set; }
+ public string LabelLayout { get; set; }
+ public Front_Config_Col WrapperCol { get; set; }
+ public bool HideRequiredMark { get; set; }
+ public string CustomStyle { get; set; }
+ }
+
+ public class Front_Config_Col
+ {
+ public int Xs { get; set; }
+ public int Sm { get; set; }
+ public int Md { get; set; }
+ public int Lg { get; set; }
+ public int Xl { get; set; }
+ public int Xxl { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs
new file mode 100644
index 0000000..0259f0a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Convert.cs
@@ -0,0 +1,13 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Att;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Convert
+ {
+ public Type T { get; set; }
+
+ public string Type { get; set; }
+
+ public List<FrontTypeBindDatabaseAttribute> BindDatabase { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs
new file mode 100644
index 0000000..13718e3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Dynamic.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Model
+{
+ public class Front_Dynamic
+ {
+ public string Head { get; set; }
+
+ public string Dynamic { get; set; }
+
+ public string DynamicKey { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs
new file mode 100644
index 0000000..3f712a1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Model.cs
@@ -0,0 +1,11 @@
+锘縰sing Furion.Extras.Admin.NET.Util.LowCode.Front.Interface;
+
+namespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Model
+ {
+ public List<IFront> List { get; set; }
+
+ public Front_Config Config { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs
new file mode 100644
index 0000000..db43403
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Option.cs
@@ -0,0 +1,8 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Option
+ {
+ public string Value { get; set; }
+ public string Label { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs
new file mode 100644
index 0000000..66dba2f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Rule.cs
@@ -0,0 +1,20 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Rule
+ {
+ /// <summary>
+ /// 蹇呭~椤�
+ /// </summary>
+ public bool? Required { get; set; }
+
+ /// <summary>
+ /// 鎻愮ず淇℃伅
+ /// </summary>
+ public string Message { get; set; }
+
+ /// <summary>
+ /// 姝e垯琛ㄨ揪寮�
+ /// </summary>
+ public string Pattern { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs
new file mode 100644
index 0000000..e3a9577
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/Front_Tree_Option.cs
@@ -0,0 +1,7 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class Front_Tree_Option : Front_Option
+ {
+ public List<Front_Tree_Option> Children { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs
new file mode 100644
index 0000000..bc54431
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/NotFoundFrontException.cs
@@ -0,0 +1,9 @@
+锘縩amespace Furion.Extras.Admin.NET.Util.LowCode.Front.Model
+{
+ public class NotFoundFrontException : Exception
+ {
+ public NotFoundFrontException(string message) : base(message)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs
new file mode 100644
index 0000000..5a3f2d4
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/Front/Model/ViewDynamic.cs
@@ -0,0 +1,15 @@
+锘縩amespace Admin.NET.Core.Util.LowCode.Front.Model
+{
+ public class ViewDynamic
+ {
+ /// <summary>
+ /// 鍔ㄦ�佹暟鎹�
+ /// </summary>
+ public string DynamicKey { get; set; }
+
+ /// <summary>
+ /// 鏄惁鏄姩鎬佹暟鎹�
+ /// </summary>
+ public bool Dynamic { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs
new file mode 100644
index 0000000..fc7e49e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/LowCode/SysFileServiceEx.cs
@@ -0,0 +1,26 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using Furion.DatabaseAccessor;
+using Mapster;
+
+namespace Admin.NET.Core.Util.LowCode
+{
+ public static class SysFileServiceEx
+ {
+ public static List<Front_FileDto> GetFiles(this string fileid, IRepository<SysFile> repository)
+ {
+ List<Front_FileDto> data = new List<Front_FileDto>();
+
+ if (string.IsNullOrWhiteSpace(fileid)) return data;
+
+ foreach (var id in fileid.Split(','))
+ {
+ if (long.TryParse(id, out long val))
+ {
+ data.Add(repository.Where(x => x.Id == val).ProjectToType<Front_FileDto>().FirstOrDefault());
+ }
+ }
+
+ return data;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs
new file mode 100644
index 0000000..8e9ad0e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/MachineUtil.cs
@@ -0,0 +1,261 @@
+锘縰sing Furion.RemoteRequest.Extensions;
+using System.Diagnostics;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鑾峰彇鏈嶅姟鍣ㄤ俊鎭�
+ /// </summary>
+ public static class MachineUtil
+ {
+ /// <summary>
+ /// 鑾峰彇璧勬簮浣跨敤淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ public static dynamic GetMachineUseInfo()
+ {
+ var ramInfo = GetRamInfo();
+ return new
+ {
+ TotalRam = Math.Ceiling(ramInfo.Total / 1024).ToString() + " GB", // 鎬诲唴瀛�
+ RamRate = Math.Ceiling(100 * ramInfo.Used / ramInfo.Total), // 鍐呭瓨浣跨敤鐜�
+ CpuRate = Math.Ceiling(double.Parse(GetCPURate())), // cpu浣跨敤鐜�
+ RunTime = GetRunTime()
+ };
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍩烘湰鍙傛暟
+ /// </summary>
+ /// <returns></returns>
+ public static async Task<dynamic> GetMachineBaseInfo()
+ {
+ var assemblyName = typeof(Furion.App).Assembly.GetName();
+ //var networkInfo = NetworkInfo.GetNetworkInfo();
+ //var (Received, Send) = networkInfo.GetInternetSpeed(1000);
+ return new
+ {
+ WanIp = await GetWanIpFromPCOnline(), // 澶栫綉IP
+ SendAndReceived = "",// "涓婅" + Math.Round(networkInfo.SendLength / 1024.0 / 1024 / 1024, 2) + "GB 涓嬭" + Math.Round(networkInfo.ReceivedLength / 1024.0 / 1024 / 1024, 2) + "GB", // 涓婁笅琛屾祦閲忕粺璁�
+ LanIp = "",//networkInfo.AddressIpv4.ToString(), // 灞�鍩熺綉IP
+ IpMac = "",//networkInfo.Mac, // Mac鍦板潃
+ HostName = Environment.MachineName, // HostName
+ SystemOs = RuntimeInformation.OSDescription, // 绯荤粺鍚嶇О
+ OsArchitecture = Environment.OSVersion.Platform.ToString() + " " + RuntimeInformation.OSArchitecture.ToString(), // 绯荤粺鏋舵瀯
+ ProcessorCount = Environment.ProcessorCount.ToString() + "鏍�", // CPU鏍稿績鏁�
+ FrameworkDescription = RuntimeInformation.FrameworkDescription + " + " + assemblyName.Name.ToString() + assemblyName.Version.ToString(), // .NET鍜孎urion鐗堟湰
+ NetworkSpeed = ""//"涓婅" + Send / 1024 + "kb/s 涓嬭" + Received / 1024 + "kb/s" // 缃戠粶閫熷害
+ };
+ }
+
+ /// <summary>
+ /// 鍔ㄦ�佽幏鍙栫綉缁滀俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ public static dynamic GetMachineNetWorkInfo()
+ {
+ //var networkInfo = NetworkInfo.GetNetworkInfo();
+ //var (Received, Send) = networkInfo.GetInternetSpeed(1000);
+ ////int Send, Received;
+ ////while (true)
+ ////{
+ //// var tmp = networkInfo.GetInternetSpeed(1000);
+ //// if (tmp.Send > 0 || tmp.Received > 0)
+ //// {
+ //// Send = tmp.Send;
+ //// Received = tmp.Received;
+ //// break;
+ //// }
+ //// Thread.Sleep(500);
+ ////}
+
+ return new
+ {
+ SendAndReceived = "",// "涓婅" + Math.Round(networkInfo.SendLength / 1024.0 / 1024 / 1024, 2) + "GB 涓嬭" + Math.Round(networkInfo.ReceivedLength / 1024.0 / 1024 / 1024, 2) + "GB", // 涓婁笅琛屾祦閲忕粺璁�
+ NetworkSpeed = ""//"涓婅" + Send / 1024 + "kb/s 涓嬭" + Received / 1024 + "kb/s" // 缃戠粶閫熷害
+ };
+ }
+
+ /// <summary>
+ /// 鏄惁Linux
+ /// </summary>
+ /// <returns></returns>
+ private static bool IsUnix()
+ {
+ return RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
+ }
+
+ /// <summary>
+ /// 鑾峰彇CPU浣跨敤鐜�
+ /// </summary>
+ /// <returns></returns>
+ private static string GetCPURate()
+ {
+ string cpuRate;
+ if (IsUnix())
+ {
+ var output = ShellUtil.Bash("top -b -n1 | grep \"Cpu(s)\" | awk '{print $2 + $4}'");
+ cpuRate = output.Trim();
+ }
+ else
+ {
+ var output = ShellUtil.Cmd("wmic", "cpu get LoadPercentage");
+ cpuRate = output.Replace("LoadPercentage", string.Empty).Trim();
+ }
+ return cpuRate;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绯荤粺杩愯鏃堕棿
+ /// </summary>
+ /// <returns></returns>
+ private static string GetRunTime()
+ {
+ return FormatTime((long)(DateTimeOffset.Now - Process.GetCurrentProcess().StartTime).TotalMilliseconds);
+ //return DateTimeUtil.FormatTime(Environment.TickCount);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鍐呭瓨淇℃伅
+ /// </summary>
+ /// <returns></returns>
+ private static dynamic GetRamInfo()
+ {
+ if (IsUnix())
+ {
+ var output = ShellUtil.Bash("free -m");
+ var lines = output.Split("\n");
+ var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries);
+ return new
+ {
+ Total = double.Parse(memory[1]),
+ Used = double.Parse(memory[2]),
+ Free = double.Parse(memory[3])
+ };
+ }
+ else
+ {
+ var output = ShellUtil.Cmd("wmic", "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value");
+ var lines = output.Trim().Split("\n");
+ var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries);
+ var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries);
+ var total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 2);
+ var free = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 2);
+ return new
+ {
+ Total = total,
+ Free = free,
+ Used = total - free
+ };
+ }
+ }
+
+ /// <summary>
+ /// 姣杞ぉ鏃跺垎绉�
+ /// </summary>
+ /// <param name="ms"></param>
+ /// <returns></returns>
+ private static string FormatTime(long ms)
+ {
+ int ss = 1000;
+ int mi = ss * 60;
+ int hh = mi * 60;
+ int dd = hh * 24;
+
+ long day = ms / dd;
+ long hour = (ms - day * dd) / hh;
+ long minute = (ms - day * dd - hour * hh) / mi;
+ long second = (ms - day * dd - hour * hh - minute * mi) / ss;
+ //long milliSecond = ms - day * dd - hour * hh - minute * mi - second * ss;
+
+ string sDay = day < 10 ? "0" + day : "" + day; //澶�
+ string sHour = hour < 10 ? "0" + hour : "" + hour;//灏忔椂
+ string sMinute = minute < 10 ? "0" + minute : "" + minute;//鍒嗛挓
+ string sSecond = second < 10 ? "0" + second : "" + second;//绉�
+ //string sMilliSecond = milliSecond < 10 ? "0" + milliSecond : "" + milliSecond;//姣
+ //sMilliSecond = milliSecond < 100 ? "0" + sMilliSecond : "" + sMilliSecond;
+ return string.Format("{0} 澶� {1} 灏忔椂 {2} 鍒� {3} 绉�", sDay, sHour, sMinute, sSecond);
+ }
+
+ /// <summary>
+ /// 鑾峰彇澶栫綉IP鍜屽湴鐞嗕綅缃�
+ /// </summary>
+ /// <returns></returns>
+ private static async Task<string> GetWanIpFromPCOnline()
+ {
+ Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+ var url = "http://whois.pconline.com.cn/ipJson.jsp";
+ var stream = await url.GetAsStreamAsync();
+ var streamReader = new StreamReader(stream, Encoding.GetEncoding("GBK"));
+ var html = streamReader.ReadToEnd();
+ var tmp = html[(html.IndexOf("({") + 2)..].Split(",");
+ var ipAddr = tmp[0].Split(":")[1] + "銆�" + tmp[7].Split(":")[1] + "銆�";
+ return ipAddr.Replace("\"", "");
+ }
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class NetworkInfo
+ {
+ private readonly NetworkInterface _instance;
+ public NetworkInterface NetworkInterface => _instance;
+ private readonly Lazy<IPInterfaceStatistics> _statistics;
+ private readonly Lazy<IPAddress> _addressIpv4;
+
+ public IPAddress AddressIpv4 => _addressIpv4.Value; // IPv4 鍦板潃
+ public string Mac => _instance?.GetPhysicalAddress().ToString(); // Mac鍦板潃
+ public string Id => _instance?.Id; // 缃戠粶閫傞厤鍣ㄧ殑鏍囪瘑绗�
+ public long ReceivedLength => _statistics.Value.BytesReceived; // 缃戠粶涓嬭浇鎬婚噺
+ public long SendLength => _statistics.Value.BytesSent; // 缃戠粶涓婁紶鎬婚噺
+
+ private NetworkInfo(NetworkInterface network)
+ {
+ _instance = network;
+ _statistics = new Lazy<IPInterfaceStatistics>(() => _instance?.GetIPStatistics());
+ //_Ipv4Statistics = new Lazy<IPv4InterfaceStatistics>(() => _instance.GetIPv4Statistics());
+ //_AddressIpv6 = new Lazy<IPAddress>(() => _instance.GetIPProperties().UnicastAddresses
+ // .FirstOrDefault(x => x.IPv4Mask.ToString().Equals("0.0.0.0")).Address);
+ _addressIpv4 = new Lazy<IPAddress>(() => _instance?.GetIPProperties().UnicastAddresses
+ .FirstOrDefault(x => !x.IPv4Mask.ToString().Equals("0.0.0.0")).Address);
+ }
+
+ /// <summary>
+ /// 褰撳墠姝e湪鑱旂綉鐨勭綉鍗′俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ public static NetworkInfo GetNetworkInfo()
+ {
+ if (Environment.OSVersion.Platform == PlatformID.Unix)
+ return new NetworkInfo(NetworkInterface.GetAllNetworkInterfaces()
+ .FirstOrDefault(x => x.NetworkInterfaceType != NetworkInterfaceType.Loopback
+ && x.NetworkInterfaceType != NetworkInterfaceType.Ethernet));
+
+ return new NetworkInfo(NetworkInterface.GetAllNetworkInterfaces()
+ .FirstOrDefault(x => x.OperationalStatus == OperationalStatus.Up
+ && x.NetworkInterfaceType != NetworkInterfaceType.Loopback
+ && x.NetworkInterfaceType != NetworkInterfaceType.Ethernet));
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠缃戝崱鐨勭綉缁滈�熷害
+ /// </summary>
+ /// <param name="Milliseconds"></param>
+ /// <returns></returns>
+ public (int Received, int Send) GetInternetSpeed(int Milliseconds)
+ {
+ var newNetwork = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(x => x.Id == Id).GetIPStatistics();
+
+ long rec = ReceivedLength;
+ long send = SendLength;
+ Thread.Sleep(Milliseconds);
+ return ((int)(newNetwork.BytesReceived - rec), (int)(newNetwork.BytesSent - send));
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs
new file mode 100644
index 0000000..b3760c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PageInputOrder.cs
@@ -0,0 +1,69 @@
+using Furion.FriendlyException;
+using Mapster;
+using MapsterMapper;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍒楄〃閫氱敤鎺掑簭
+ /// </summary>
+ public static class PageInputOrder
+ {
+ /// <summary>
+ /// 鎺掑簭鏂瑰紡(榛樿闄嶅簭)
+ /// </summary>
+ /// <param name="pageInput"> </param>
+ /// <param name="defualtSortField"> 榛樿鎺掑簭瀛楁 </param>
+ /// <param name="descSort"> 鏄惁闄嶅簭 </param>
+ /// <returns> </returns>
+ public static string OrderBuilder<T>(T pageInput, string defualtSortField = "Id", bool descSort = true)
+ {
+ string orderStr;
+ // 绾﹀畾榛樿姣忓紶琛ㄩ兘鏈塈d鎺掑簭
+ if (!string.IsNullOrWhiteSpace(defualtSortField))
+ orderStr = descSort ? defualtSortField + " Desc" : defualtSortField + " Asc";
+ else
+ throw Oops.Oh("鎺掑簭瀛楁涓嶈兘涓虹┖锛�");
+
+ TypeAdapterConfig config = new();
+ config.ForType<T, PageInputBase>().IgnoreNullValues(true);
+ Mapper mapper = new(config); // 鍔″繀灏唌apper璁句负鍗曞疄渚�
+ PageInputBase nowPagerInput = mapper.Map<PageInputBase>(pageInput);
+ // 鎺掑簭鏄惁鍙敤-鎺掑簭瀛楁涓洪潪绌烘墠鍚敤鎺掑簭
+ if (!string.IsNullOrEmpty(nowPagerInput.SortField))
+ {
+ orderStr = $"{nowPagerInput.SortField} {(nowPagerInput.SortOrder == nowPagerInput.DescStr ? "Desc" : "Asc")}";
+ }
+ return orderStr;
+ }
+
+
+ /// <summary>
+ /// 涓嶅垎椤垫帓搴忔柟寮�(榛樿闄嶅簭)
+ /// </summary>
+ /// <param name="pageInput"> </param>
+ /// <param name="defualtSortField"> 榛樿鎺掑簭瀛楁 </param>
+ /// <param name="descSort"> 鏄惁闄嶅簭 </param>
+ /// <returns> </returns>
+ public static string OrderNonPageBuilder<T>(T pageInput, string defualtSortField = "Id", bool descSort = true)
+ {
+ string orderStr;
+ // 绾﹀畾榛樿姣忓紶琛ㄩ兘鏈塈d鎺掑簭
+ if (!string.IsNullOrWhiteSpace(defualtSortField))
+ orderStr = descSort ? defualtSortField + " Desc" : defualtSortField + " Asc";
+ else
+ throw Oops.Oh("鎺掑簭瀛楁涓嶈兘涓虹┖锛�");
+
+ TypeAdapterConfig config = new();
+ config.ForType<T, PageInputBase>().IgnoreNullValues(true);
+ Mapper mapper = new(config); // 鍔″繀灏唌apper璁句负鍗曞疄渚�
+ PageInputNonPageBase nowPagerInput = mapper.Map<PageInputNonPageBase>(pageInput);
+ // 鎺掑簭鏄惁鍙敤-鎺掑簭瀛楁涓洪潪绌烘墠鍚敤鎺掑簭
+ if (!string.IsNullOrEmpty(nowPagerInput.SortField))
+ {
+ orderStr = $"{nowPagerInput.SortField} {(nowPagerInput.SortOrder == nowPagerInput.DescStr ? "Desc" : "Asc")}";
+ }
+ return orderStr;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs
new file mode 100644
index 0000000..6560cf1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/PagedUtil.cs
@@ -0,0 +1,88 @@
+锘縰sing Furion.DependencyInjection;
+using Microsoft.EntityFrameworkCore;
+
+namespace Admin.NET.Core
+{
+ [SuppressSniffer]
+ public static class PagedUtil
+ {
+ /// <summary>
+ /// 鍒嗛〉鎷撳睍
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <param name="entities"></param>
+ /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+ /// <param name="pageSize"></param>
+ /// <returns></returns>
+ public static PageResult<TEntity> ToADPagedList<TEntity>(this IQueryable<TEntity> entities, int pageIndex = 1, int pageSize = 20)
+ {
+ if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+ var totalCount = entities.Count();
+ var items = entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
+ var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+ return new PageResult<TEntity>
+ {
+ PageNo = pageIndex,
+ PageSize = pageSize,
+ Rows = items,
+ TotalRows = totalCount,
+ TotalPage = totalPages
+ };
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鎷撳睍
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <param name="entities"></param>
+ /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+ /// <param name="pageSize"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public static async Task<PageResult<TEntity>> ToADPagedListAsync<TEntity>(this IQueryable<TEntity> entities, int pageIndex = 1, int pageSize = 20, CancellationToken cancellationToken = default)
+ {
+ if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+ var totalCount = await entities.CountAsync(cancellationToken);
+ var items = await entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(cancellationToken);
+ var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+ return new PageResult<TEntity>
+ {
+ PageNo = pageIndex,
+ PageSize = pageSize,
+ Rows = items,
+ TotalRows = totalCount,
+ TotalPage = totalPages
+ };
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鎷撳睍
+ /// </summary>
+ /// <typeparam name="TEntity"></typeparam>
+ /// <param name="entities"></param>
+ /// <param name="pageIndex">椤电爜锛屽繀椤诲ぇ浜�0</param>
+ /// <param name="pageSize"></param>
+ /// <returns></returns>
+ public static PageResult<TEntity> ToADPagedList<TEntity>(this IEnumerable<TEntity> entities, int pageIndex = 1, int pageSize = 20)
+ {
+ if (pageIndex <= 0) throw new InvalidOperationException($"{nameof(pageIndex)} 蹇呴』鏄ぇ浜�0鐨勬鏁存暟銆�");
+
+ var totalCount = entities.Count();
+ var items = entities.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
+ var totalPages = (int)Math.Ceiling(totalCount / (double)pageSize);
+
+ return new PageResult<TEntity>
+ {
+ PageNo = pageIndex,
+ PageSize = pageSize,
+ Rows = items,
+ TotalRows = totalCount,
+ TotalPage = totalPages
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs
new file mode 100644
index 0000000..8fe21ba
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ReflectionUtil.cs
@@ -0,0 +1,40 @@
+锘縰sing System.Reflection;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鍙嶅皠宸ュ叿
+ /// </summary>
+ public static class ReflectionUtil
+ {
+ /// <summary>
+ /// 鑾峰彇瀛楁鐗规��
+ /// </summary>
+ /// <param name="field"></param>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ public static T GetDescriptionValue<T>(this FieldInfo field) where T : Attribute
+ {
+ // 鑾峰彇瀛楁鐨勬寚瀹氱壒鎬э紝涓嶅寘鍚户鎵夸腑鐨勭壒鎬�
+ object[] customAttributes = field.GetCustomAttributes(typeof(T), false);
+
+ // 濡傛灉娌℃湁鏁版嵁杩斿洖null
+ return customAttributes.Length > 0 ? (T)customAttributes[0] : null;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绫诲瀷鐨勭壒鎬�
+ /// </summary>
+ /// <param name="field"></param>
+ /// <typeparam name="T"></typeparam>
+ /// <returns></returns>
+ public static T GetDescriptionValue<T>(this Type field) where T : Attribute
+ {
+ // 鑾峰彇瀛楁鐨勬寚瀹氱壒鎬э紝涓嶅寘鍚户鎵夸腑鐨勭壒鎬�
+ object[] customAttributes = field.GetCustomAttributes(typeof(T), false);
+
+ // 濡傛灉娌℃湁鏁版嵁杩斿洖null
+ return customAttributes.Length > 0 ? (T)customAttributes[0] : null;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs
new file mode 100644
index 0000000..3aecadb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/ShellUtil.cs
@@ -0,0 +1,58 @@
+锘縰sing System.Diagnostics;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 绯荤粺Shell鍛戒护
+ /// </summary>
+ public class ShellUtil
+ {
+ /// <summary>
+ /// Bash鍛戒护
+ /// </summary>
+ /// <param name="command"></param>
+ /// <returns></returns>
+ public static string Bash(string command)
+ {
+ var escapedArgs = command.Replace("\"", "\\\"");
+ var process = new Process()
+ {
+ StartInfo = new ProcessStartInfo
+ {
+ FileName = "/bin/bash",
+ Arguments = $"-c \"{escapedArgs}\"",
+ RedirectStandardOutput = true,
+ UseShellExecute = false,
+ CreateNoWindow = true,
+ }
+ };
+ process.Start();
+ string result = process.StandardOutput.ReadToEnd();
+ process.WaitForExit();
+ process.Dispose();
+ return result;
+ }
+
+ /// <summary>
+ /// cmd鍛戒护
+ /// </summary>
+ /// <param name="fileName"></param>
+ /// <param name="args"></param>
+ /// <returns></returns>
+ public static string Cmd(string fileName, string args)
+ {
+ string output = string.Empty;
+ var info = new ProcessStartInfo
+ {
+ FileName = fileName,
+ Arguments = args,
+ RedirectStandardOutput = true
+ };
+ using (var process = Process.Start(info))
+ {
+ output = process.StandardOutput.ReadToEnd();
+ }
+ return output;
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs
new file mode 100644
index 0000000..cb98f35
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/StringUtil.cs
@@ -0,0 +1,83 @@
+锘�#nullable enable
+
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace Admin.NET.Core
+{
+ public static class StringUtil
+ {
+ /// <summary>
+ /// 鑾峰彇涓嬪垝绾胯〃杈惧紡
+ /// </summary>
+ /// <param name="camel"></param>
+ /// <returns></returns>
+ public static string ToUnderLine(this string camel)
+ {
+ return Regex.Replace(camel, "([A-Z])", "_$1").ToLower().TrimStart('_');
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇涓嬪垝绾胯〃杈惧紡
+ /// </summary>
+ /// <param name="camel"></param>
+ /// <returns></returns>
+ public static string ToUnderLine(this string camel, char trimChar)
+ {
+ return Regex.Replace(camel, "([A-Z])", trimChar + "$1").ToLower().TrimStart(trimChar);
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇椹煎嘲琛ㄨ揪寮�
+ /// </summary>
+ /// <param name="camel"></param>
+ /// <returns></returns>
+ public static string ToCamel(this string str)
+ {
+ if(string.IsNullOrEmpty(str)) return "";
+ return str[..1].ToLower() + str[1..];
+ }
+
+
+ /// <summary>
+ /// 灏嗙被鍨嬭繘琛岃浆鎹�
+ /// </summary>
+ /// <param name="dataType"></param>
+ /// <returns></returns>
+ public static string ParseTrueType(string dataType)
+ {
+ if(!dataType.StartsWith("System.Nullable")) return dataType;
+
+ return new Regex(@"(?i)(?<=\[)(.*)(?=\])").Match(dataType).Value;
+ }
+
+ /// <summary>
+ /// 灏嗙被鍨嬭繘琛岃浆鎹�
+ /// </summary>
+ /// <param name="dataType"></param>
+ /// <returns></returns>
+ public static string ParseTrueType2(string dataType)
+ {
+ if (!dataType.StartsWith("System.Nullable")) return dataType;
+
+ var str = new Regex(@"(?i)(?<=\[\[)(.*)(?=\]\])").Match(dataType).Value;
+
+ var args = str.Split(',');
+
+ return args.Length > 0 ? args[0] : "";
+ }
+
+ /// <summary>
+ /// 鍒嗗壊瀛楃
+ /// </summary>
+ /// <returns></returns>
+ public static string SplitChar()
+ {
+ return new ASCIIEncoding().GetString(new byte[] { 3 });
+ }
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs
new file mode 100644
index 0000000..594c6a3
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TreeBuildUtil.cs
@@ -0,0 +1,75 @@
+using System.Collections;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 鏍戝熀绫�
+ /// </summary>
+ public interface ITreeNode
+ {
+ /// <summary>
+ /// 鑾峰彇鑺傜偣id
+ /// </summary>
+ /// <returns></returns>
+ long GetId();
+
+ /// <summary>
+ /// 鑾峰彇鑺傜偣鐖秈d
+ /// </summary>
+ /// <returns></returns>
+ long GetPid();
+
+ /// <summary>
+ /// 璁剧疆Children
+ /// </summary>
+ /// <param name="children"></param>
+ void SetChildren(IList children);
+ }
+
+ /// <summary>
+ /// 閫掑綊宸ュ叿绫伙紝鐢ㄤ簬閬嶅巻鏈夌埗瀛愬叧绯荤殑鑺傜偣锛屼緥濡傝彍鍗曟爲锛屽瓧鍏告爲绛夌瓑
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ public class TreeBuildUtil<T> where T : ITreeNode
+ {
+ /// <summary>
+ /// 椤剁骇鑺傜偣鐨勭埗鑺傜偣Id(榛樿0)
+ /// </summary>
+ private long _rootParentId = 0L;
+
+ /// <summary>
+ /// 璁剧疆鏍硅妭鐐规柟娉�
+ /// 鏌ヨ鏁版嵁鍙互璁剧疆鍏朵粬鑺傜偣涓烘牴鑺傜偣锛岄伩鍏嶇埗鑺傜偣姘歌繙鏄�0锛屾煡璇笉鍒版暟鎹殑闂
+ /// </summary>
+ public void SetRootParentId(long rootParentId)
+ {
+ _rootParentId = rootParentId;
+ }
+
+ /// <summary>
+ /// 鏋勯�犳爲鑺傜偣
+ /// </summary>
+ /// <param name="nodes"></param>
+ /// <returns></returns>
+ public List<T> Build(List<T> nodes)
+ {
+ var result = nodes.Where(i => i.GetPid() == _rootParentId).ToList();
+ result.ForEach(u => BuildChildNodes(nodes, u));
+
+ return result;
+ }
+
+ /// <summary>
+ /// 鏋勯�犲瓙鑺傜偣闆嗗悎
+ /// </summary>
+ /// <param name="totalNodes"></param>
+ /// <param name="node"></param>
+ /// <param name="childNodeList"></param>
+ private void BuildChildNodes(List<T> totalNodes, T node)
+ {
+ var nodeSubList = totalNodes.Where(i => i.GetPid() == node.GetId()).ToList();
+ nodeSubList.ForEach(u => BuildChildNodes(totalNodes, u));
+ node.SetChildren(nodeSubList);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs
new file mode 100644
index 0000000..5a05030
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/TypeUtil.cs
@@ -0,0 +1,211 @@
+锘�#nullable enable
+
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Metadata;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Admin.NET.Core
+{
+ public static class TypeUtil
+ {
+ /// <summary>
+ /// 鑾峰彇绫诲瀷
+ /// </summary>
+ /// <param name="typeName"></param>
+ /// <returns></returns>
+ public static Type? GetType(string typeName)
+ {
+ return Type.GetType(typeName);
+ }
+
+ /// <summary>
+ /// 鏍规嵁瀹炰綋鑾峰彇鍏跺鑸被鍨�
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<TableColumn> GetNavigationColumns(IEntityType? type)
+ {
+ if (type == null) { return new(); }
+
+ var navigationColumns = type.ClrType.GetProperties()
+ .Select(propertyInfo => type?.FindNavigation(propertyInfo.Name))
+ .Where(p => p != null)
+ .Select(p =>
+ {
+ var pInfo = p?.PropertyInfo;
+ var pType = pInfo?.PropertyType;
+ string dataType = pType?.ToString() ?? "";
+ return new TableColumn
+ {
+ IsRequired = FieldUtil.IsRequired(p??null!, dataType),
+ ColumnName = p?.Name ?? "",
+ ColumnKey = false.ToString(),
+ DataType = dataType,
+ NetType = CodeGenUtil.ConvertDataType(dataType),
+ ColumnComment = p?.GetComment() ?? "",
+ FieldType = FieldType.NAVIGATION.GetDescription()
+ };
+ }).ToList();
+ return navigationColumns ?? null!;
+ }
+
+ /// <summary>
+ /// 鏍规嵁瀹炰綋鑾峰彇鍏舵寚绀虹被鍨�
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<TableColumn> GetUniqueColumns(IEntityType? type)
+ {
+ if (type == null) { return new(); }
+
+ var propInfos = new List<PropertyInfo>();
+
+ type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+ {
+ if ("Admin.NET.Core.UniqueAttribute".Equals(y.ToString()))
+ {
+ propInfos.Add(x);
+ }
+ }));
+
+ var uniqueColumns = propInfos.Select(p => new TableColumn
+ {
+ IsRequired = false,
+ ColumnName = p.Name,
+ ColumnKey = false.ToString(),
+ DataType = p.PropertyType.ToString(),
+ NetType = CodeGenUtil.ConvertDataType(p.PropertyType.ToString()),
+ ColumnComment = p.GetCustomAttribute<CommentAttribute>()?.Comment ?? "",
+ FieldType = FieldType.NO_MAP.GetDescription()
+ }).ToList();
+
+ return uniqueColumns ?? null!;
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁瀹炰綋鑾峰彇鍏舵寚绀虹被鍨�
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<TableColumn> GetNoMapColumns(IEntityType? type)
+ {
+ if (type == null) { return new(); }
+
+ var propInfos = new List<PropertyInfo>();
+
+ type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+ {
+ if ("System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute".Equals(y.ToString()))
+ {
+ propInfos.Add(x);
+ }
+ }));
+
+ var noMapColumns = propInfos.Select(p => new TableColumn
+ {
+ IsRequired = false,
+ ColumnName = p.Name,
+ ColumnKey = false.ToString(),
+ DataType = p.PropertyType.ToString(),
+ NetType = CodeGenUtil.ConvertDataType(p.PropertyType.ToString()),
+ ColumnComment = p.GetCustomAttribute<CommentAttribute>()?.Comment ?? "",
+ FieldType = FieldType.NO_MAP.GetDescription()
+ }).ToList();
+
+ return noMapColumns ?? null!;
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁瀹炰綋鑾峰彇鍏舵爣閲忕被鍨�
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static List<TableColumn> GetScalarColumns(IEntityType? type)
+ {
+ if (type == null) { return new(); }
+
+ var propInfos = new List<PropertyInfo>();
+
+ type.ClrType.GetProperties().ToList().ForEach(x => x.GetCustomAttributes(false).ToList().ForEach(y =>
+ {
+ if ("System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute".Equals(y.ToString()))
+ {
+ propInfos.Add(x);
+ }
+ }));
+
+ var scalarColumns = type.ClrType.GetProperties()
+ .Select(propertyInfo => type.FindProperty(propertyInfo.Name))
+ .Where(p => p != null)
+ .Select(p =>
+ {
+ var pInfo = p?.PropertyInfo;
+ var pType = pInfo?.PropertyType;
+ string dataType = pType?.ToString() ?? "";
+ return new TableColumn
+ {
+
+
+ IsRequired = FieldUtil.IsRequired(p??null!, dataType),
+ ColumnName = p?.Name??"",
+ ColumnKey = ("Id".Equals(p?.Name)).ToString(),
+ DataType = dataType,
+ NetType = CodeGenUtil.ConvertDataType(dataType),
+ ColumnComment = p?.GetComment() ?? "",
+ FieldType = FieldType.SCALAR.GetDescription()
+ };
+ }).ToList();
+
+ return scalarColumns ?? null!;
+ }
+
+
+ /// <summary>
+ /// 鏍规嵁绫诲悕鑾峰彇灞炴��
+ /// </summary>
+ /// <param name="type"></param>
+ /// <returns></returns>
+ public static TableInfo? GetTableInfo(IEntityType? type)
+ {
+ if (type == null) return null;
+ return new TableInfo
+ {
+ TableName = type?.GetDefaultTableName(),
+ TableComment = type?.GetComment()
+ };
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇鏋氫妇绫诲瀷鐨勫娉ㄤ俊鎭�
+ /// </summary>
+ /// <returns></returns>
+ public static string GetColumnRemark(this string typeName)
+ {
+ Type? type = TypeUtil.GetType(typeName);
+ if (type == null) return string.Empty;
+ if (!type.IsEnum) return string.Empty;
+ var remark = string.Empty;
+ foreach (var field in type.GetFields())
+ {
+ if (field.IsDefined(typeof(DescriptionAttribute), true))
+ {
+ var descr = ((DescriptionAttribute?)field.GetCustomAttribute(typeof(DescriptionAttribute), true))?.Description ?? string.Empty;
+ if (!string.IsNullOrEmpty(descr)) remark += descr + ",";
+ }
+ }
+ if (remark.EndsWith(",")) remark = remark[..^1];
+ return remark;
+ }
+
+
+
+
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs
new file mode 100644
index 0000000..884f8e8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnInputBase.cs
@@ -0,0 +1,116 @@
+锘縩amespace Admin.NET.Core
+{
+ /// <summary>
+ /// 閫氱敤杈撳叆鎵╁睍鍙傛暟锛堝甫鏉冮檺锛�
+ /// </summary>
+ public interface IXnInputBase
+ {
+ /// <summary>
+ /// 鎺堟潈鑿滃崟
+ /// </summary>
+ public List<long> GrantMenuIdList { get; set; }
+
+ /// <summary>
+ /// 鎺堟潈瑙掕壊
+ /// </summary>
+ public List<long> GrantRoleIdList { get; set; }
+
+ /// <summary>
+ /// 鎺堟潈鏁版嵁
+ /// </summary>
+ public List<long> GrantOrgIdList { get; set; }
+ }
+
+ /// <summary>
+ /// 閫氱敤鍒嗛〉杈撳叆鍙傛暟
+ /// </summary>
+ public class PageInputBase
+ {
+ /// <summary>
+ /// 鎼滅储鍊�
+ /// </summary>
+ public virtual string SearchValue { get; set; }
+
+ /// <summary>
+ /// 褰撳墠椤电爜
+ /// </summary>
+ public virtual int PageNo { get; set; } = 1;
+
+ /// <summary>
+ /// 椤电爜瀹归噺
+ /// </summary>
+ public virtual int PageSize { get; set; } = 20;
+
+ /// <summary>
+ /// 鎼滅储寮�濮嬫椂闂�
+ /// </summary>
+ public virtual string SearchBeginTime { get; set; }
+
+ /// <summary>
+ /// 鎼滅储缁撴潫鏃堕棿
+ /// </summary>
+ public virtual string SearchEndTime { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭瀛楁
+ /// </summary>
+ public virtual string SortField { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鏂规硶,榛樿鍗囧簭,鍚﹀垯闄嶅簭(閰嶅悎antd鍓嶇,绾﹀畾鍙傛暟涓� Ascend,Dscend)
+ /// </summary>
+ public virtual string SortOrder { get; set; }
+
+ /// <summary>
+ /// 闄嶅簭鎺掑簭(涓嶈闂垜涓轰粈涔堟槸descend涓嶆槸desc锛屽墠绔害瀹氬弬鏁板氨鏄繖鏍�)
+ /// </summary>
+ public virtual string DescStr { get; set; } = "descend";
+
+ /// <summary>
+ /// 澶嶆潅鏌ヨ鏉′欢
+ /// </summary>
+ public virtual List<Condition> SearchParameters { get; set; } = new();
+ }
+
+ /// <summary>
+ /// 閫氱敤涓嶅垎椤佃緭鍏ュ弬鏁�
+ /// </summary>
+ public class PageInputNonPageBase
+ {
+ /// <summary>
+ /// 鎼滅储鍊�
+ /// </summary>
+ public virtual string SearchValue { get; set; }
+
+
+ /// <summary>
+ /// 鎼滅储寮�濮嬫椂闂�
+ /// </summary>
+ public virtual string SearchBeginTime { get; set; }
+
+ /// <summary>
+ /// 鎼滅储缁撴潫鏃堕棿
+ /// </summary>
+ public virtual string SearchEndTime { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭瀛楁
+ /// </summary>
+ public virtual string SortField { get; set; }
+
+ /// <summary>
+ /// 鎺掑簭鏂规硶,榛樿鍗囧簭,鍚﹀垯闄嶅簭(閰嶅悎antd鍓嶇,绾﹀畾鍙傛暟涓� Ascend,Dscend)
+ /// </summary>
+ public virtual string SortOrder { get; set; }
+
+ /// <summary>
+ /// 闄嶅簭鎺掑簭(涓嶈闂垜涓轰粈涔堟槸descend涓嶆槸desc锛屽墠绔害瀹氬弬鏁板氨鏄繖鏍�)
+ /// </summary>
+ public virtual string DescStr { get; set; } = "descend";
+
+ /// <summary>
+ /// 澶嶆潅鏌ヨ鏉′欢
+ /// </summary>
+ public virtual List<Condition> SearchParameters { get; set; } = new();
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs
new file mode 100644
index 0000000..945a390
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnPageResult.cs
@@ -0,0 +1,11 @@
+锘縩amespace Admin.NET.Core
+{
+ public class PageResult<T>
+ {
+ public int PageNo { get; set; }
+ public int PageSize { get; set; }
+ public int TotalPage { get; set; }
+ public int TotalRows { get; set; }
+ public ICollection<T> Rows { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs
new file mode 100644
index 0000000..3ca4204
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/Util/XnRestfulResultProvider.cs
@@ -0,0 +1,167 @@
+锘縰sing Furion;
+using Furion.DataValidation;
+using Furion.FriendlyException;
+using Furion.JsonSerialization;
+using Furion.UnifyResult;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.Filters;
+
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瑙勮寖鍖朢ESTful椋庢牸杩斿洖鍊�
+ /// </summary>
+ [UnifyModel(typeof(XnRestfulResult<>))]
+ public class XnRestfulResultProvider : IUnifyResultProvider
+ {
+ /// <summary>
+ /// 寮傚父杩斿洖鍊�
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="metadata"></param>
+ /// <returns></returns>
+ public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)
+ {
+ return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));
+ }
+
+ /// <summary>
+ /// 鎴愬姛杩斿洖鍊�
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="data"></param>
+ /// <returns></returns>
+ public IActionResult OnSucceeded(ActionExecutedContext context, object data)
+ {
+ return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));
+ }
+
+
+
+ /// <summary>
+ /// 楠岃瘉澶辫触杩斿洖鍊�
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="metadata"></param>
+ /// <returns></returns>
+ public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)
+ {
+ return new JsonResult(RESTfulResult(metadata.StatusCode ?? StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));
+ }
+
+ /// <summary>
+ /// 澶勭悊杈撳嚭鐘舵�佺爜
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="statusCode"></param>
+ /// <param name="unifyResultSettings"></param>
+ /// <returns></returns>
+ public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)
+ {
+ // 璁剧疆鍝嶅簲鐘舵�佺爜
+ UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);
+
+ switch (statusCode)
+ {
+ // 澶勭悊 401 鐘舵�佺爜
+ case StatusCodes.Status401Unauthorized:
+ await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�"),
+ App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
+ break;
+ // 澶勭悊 403 鐘舵�佺爜
+ case StatusCodes.Status403Forbidden:
+ await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 绂佹璁块棶锛屾病鏈夋潈闄�"),
+ App.GetOptions<JsonOptions>()?.JsonSerializerOptions);
+ break;
+
+ default: break;
+ }
+ }
+
+ /// <summary>
+ /// 杩斿洖 RESTful 椋庢牸缁撴灉闆�
+ /// </summary>
+ /// <param name="statusCode"></param>
+ /// <param name="succeeded"></param>
+ /// <param name="data"></param>
+ /// <param name="errors"></param>
+ /// <returns></returns>
+ protected static XnRestfulResult<object> RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)
+ {
+ return new XnRestfulResult<object>
+ {
+ Success = succeeded,
+ Code = statusCode,
+ Message = JSON.Serialize(errors),
+ Data = data,
+ Extras = UnifyContext.Take(),
+ Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+ };
+ }
+
+ public static XnRestfulResult<object> RESTfulResult(object data = default)
+ {
+ return new XnRestfulResult<object>
+ {
+ Success = true,
+ Code = StatusCodes.Status200OK,
+ Message = "璇锋眰鎴愬姛",
+ Data = data,
+ Extras = UnifyContext.Take(),
+ Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+ };
+ }
+ public static XnRestfulResult<object> RESTfulMesaage(object mesaage = default)
+ {
+ return new XnRestfulResult<object>
+ {
+ Success = true,
+ Code = StatusCodes.Status200OK,
+ Message = mesaage,
+ Data = "",
+ Extras = UnifyContext.Take(),
+ Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
+ };
+ }
+ }
+
+ /// <summary>
+ /// RESTful椋庢牸---XIAONUO杩斿洖鏍煎紡
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ public class XnRestfulResult<T>
+ {
+ /// <summary>
+ /// 鎵ц鎴愬姛
+ /// </summary>
+ public bool Success { get; set; }
+
+ /// <summary>
+ /// 鐘舵�佺爜
+ /// </summary>
+ public int? Code { get; set; }
+
+ /// <summary>
+ /// 閿欒淇℃伅
+ /// </summary>
+ public object Message { get; set; }
+
+ /// <summary>
+ /// 鏁版嵁
+ /// </summary>
+ public T Data { get; set; }
+
+ /// <summary>
+ /// 闄勫姞鏁版嵁
+ /// </summary>
+ public object Extras { get; set; }
+
+ /// <summary>
+ /// 鏃堕棿鎴�
+ /// </summary>
+ public long Timestamp { get; set; }
+ }
+
+
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs
new file mode 100644
index 0000000..3bef931
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/View/TestDemo/VStudent.cs
@@ -0,0 +1,129 @@
+锘縰sing Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : shaocx
+ * @date : 2024/4/15涓嬪崍4:44:30
+ * @desc : 瀛︾敓瑙嗗浘
+ */
+namespace Admin.NET.Core
+{
+ /// <summary>
+ /// 瀛︾敓瑙嗗浘
+ /// </summary>
+ [Comment("瀛︾敓瑙嗗浘")]
+ public class VStudent : EntityNotKey
+ {
+ /// <summary>
+ /// 閰嶇疆瑙嗗浘鍚�
+ /// </summary>
+ public VStudent() : base("v_student") { }
+ /// <summary>
+ /// Id涓婚敭
+ /// 琛╰est_students
+ /// </summary>
+
+ public long Id { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓濮撳悕
+ /// 琛╰est_students
+ /// </summary>
+ [MaxLength(50)]
+ public string Name { get; set; }
+
+ /// <summary>
+ /// 瀛︾敓骞撮緞
+ /// 琛╰est_students
+ /// </summary>
+
+ public int Age { get; set; }
+
+ /// <summary>
+ /// 鏄惁鍦ㄦ牎
+ /// 琛╰est_students
+ /// </summary>
+
+ public bool StartName { get; set; }
+
+ /// <summary>
+ /// 鎬у埆
+ /// 琛╰est_students
+ /// </summary>
+
+ public int Gender { get; set; }
+
+ /// <summary>
+ /// 鍑虹敓鏃ユ湡
+ /// 琛╰est_students
+ /// </summary>
+
+ public DateTime BrithDate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// 琛╰est_students
+ /// </summary>
+
+ public DateTimeOffset? CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏇存柊鏃堕棿
+ /// 琛╰est_students
+ /// </summary>
+
+ public DateTimeOffset? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰匢d
+ /// 琛╰est_students
+ /// </summary>
+
+ public long? CreatedUserId { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鑰呭悕绉�
+ /// 琛╰est_students
+ /// </summary>
+ [MaxLength(255)]
+ public string CreatedUserName { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰匢d
+ /// 琛╰est_students
+ /// </summary>
+
+ public long? UpdatedUserId { get; set; }
+
+ /// <summary>
+ /// 淇敼鑰呭悕绉�
+ /// 琛╰est_students
+ /// </summary>
+ [MaxLength(50)]
+ public string UpdatedUserName { get; set; }
+
+ /// <summary>
+ /// 杞垹闄ゆ爣璁�
+ /// 琛╰est_students
+ /// </summary>
+
+ public bool IsDeleted { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈鑰佸笀
+ /// 琛╰est_students
+ /// </summary>
+
+ public long? TeacherId { get; set; }
+
+ /// <summary>
+ /// 鍚嶇О
+ /// 琛╰est_teacher
+ /// </summary>
+ [MaxLength(255)]
+ public string teacherName { get; set; }
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json
new file mode 100644
index 0000000..d59bd79
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Core/applicationconfig.json
@@ -0,0 +1,111 @@
+{
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+ "SpecificationDocumentSettings": {
+ "DocumentTitle": "Admin.NET",
+ "DocExpansionState": "None",
+ "GroupOpenApiInfos": [
+ {
+ "Group": "Default",
+ "Title": "Admin.NET閫氱敤骞冲彴",
+ "Description": "鍓嶅悗绔垎绂绘灦鏋勶紝寮�绠卞嵆鐢紝绱ч殢鍓嶆部鎶�鏈��<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>",
+ "Version": "1.0.0"
+ }
+ ]
+ },
+ "JWTSettings": {
+ "ValidateIssuerSigningKey": true, // 鏄惁楠岃瘉瀵嗛挜锛宐ool 绫诲瀷锛岄粯璁rue
+ "IssuerSigningKey": "3c1cbc3f546eda35168c3aa3cb91780fbe703f0996c6d123ea96dc85c70bbc0a", // 瀵嗛挜锛宻tring 绫诲瀷锛屽繀椤绘槸澶嶆潅瀵嗛挜锛岄暱搴﹀ぇ浜�16
+ "ValidateIssuer": true, // 鏄惁楠岃瘉绛惧彂鏂癸紝bool 绫诲瀷锛岄粯璁rue
+ "ValidIssuer": "dilon", // 绛惧彂鏂癸紝string 绫诲瀷
+ "ValidateAudience": true, // 鏄惁楠岃瘉绛炬敹鏂癸紝bool 绫诲瀷锛岄粯璁rue
+ "ValidAudience": "dilon", // 绛炬敹鏂癸紝string 绫诲瀷
+ "ValidateLifetime": true, // 鏄惁楠岃瘉杩囨湡鏃堕棿锛宐ool 绫诲瀷锛岄粯璁rue锛屽缓璁畉rue
+ "ExpiredTime": 200, // 杩囨湡鏃堕棿锛宭ong 绫诲瀷锛屽崟浣嶅垎閽燂紝榛樿20鍒嗛挓
+ "ClockSkew": 5 // 杩囨湡鏃堕棿瀹归敊鍊硷紝long 绫诲瀷锛屽崟浣嶇锛岄粯璁�5绉�
+ },
+ "RefreshTokenSetting": {
+ "ExpiredTime": 60 // 杩囨湡鏃堕棿锛宨nt 绫诲瀷锛屽崟浣嶅垎閽燂紝榛樿43200鍒嗛挓锛堜竴鑸紝refresh_token 鐨勬湁鏁堟椂闂� > 2 * access_token 鐨勬湁鏁堟椂闂达級
+ },
+ "CorsAccessorSettings": {
+ "WithExposedHeaders": [ "access-token", "x-access-token", "Content-Disposition" ]
+ },
+ "Cache": {
+ "CacheType": "MemoryCache", // RedisCache
+ "RedisConnectionString": "127.0.0.1:6379,password=,defaultDatabase=2",
+ "InstanceName": "dilon_"
+ },
+ "SnowId": {
+ "WorkerId": "1" // 鍙栧�艰寖鍥�0~63,榛樿1
+ },
+ "OAuth": {
+ "Wechat": {
+ "app_id": "wx2959fdd3abc05362",
+ "app_key": "829f65b2be0652bcd50ea8cb820fd7fa",
+ "redirect_uri": "http://127.0.0.1:56868/oauth/wechatcallback",
+ "scope": "snsapi_userinfo"
+ }
+ },
+ "UploadFile": {
+ // 闃块噷浜慜SS閰嶇疆
+ "Aliyun": {
+ "path": "Dilon/Upload",
+ "maxSize": 1048576,
+ "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+ },
+ // 澶村儚
+ "Avatar": {
+ "path": "Upload/Avatar",
+ "maxSize": 1048576,
+ "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif" ]
+ },
+ // 鏂囨。
+ "Document": {
+ "path": "Upload/Document",
+ "maxSize": 1048576,
+ "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+ },
+ // 鍟嗗簵
+ "Shop": {
+ "path": "Upload/Shop",
+ "maxSize": 1048576,
+ "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif" ]
+ },
+ // 榛樿
+ "Default": {
+ "path": "Upload/Default",
+ "maxSize": 1048576,
+ "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif", "image/bmp", "text/plain", "application/pdf", "application/msword", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.presentationml.presentation" ]
+ }
+ },
+ "OSSProvider": {
+ "Provider": "QCloud",
+ "Endpoint": "AppId",
+ "Region": "ap-chengdu",
+ "AccessKey": "A****************************z",
+ "SecretKey": "g6I***************la",
+ "IsEnableCache": true
+ },
+ "AppVersion": {
+ "Version": "1.5.7"
+ },
+ "YiKuTestPalce": {
+ "IsStart": false,
+ "rukuPoint": "1.10.1",
+ "yikuPoint": "2.10.1"
+ },
+ "YiGoWebApi": {
+ "QueryInboundNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryInboundNotice", //鍏ュ簱閫氱煡
+ "Qcnotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=Qcnotice", //璐ㄦ閫氱煡
+ "QueryRQC": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryRQC", //璐ㄦ缁撴灉
+ "CreateTX111": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTX111", //鍏ュ簱涓婃灦鎺ュ彛
+ "QueryBackNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryBackNotice", //閫�璐ч�氱煡鎺ュ彛
+ "CreateTXRe211": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTXRe211", //閫�璐т笅鏋舵帴鍙�
+ "QueryOutBoundNotice": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryOutBoundNotice", //棰嗘枡鐢宠
+ "CreateTX211": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTX211", //棰嗘枡鐢宠
+ "QueryReturnQuisition": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryReturnQuisition", //閫�鏂欑敵璇�
+ "CreateTXRe111": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=CreateTXRe111", //閫�鏂欏叆搴�
+ "QueryAllocate": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=QueryAllocate", //杞偍閫氱煡
+ "MarkReadDocument": "https://yigouat.cmhijs.cn:8442/BokeDee/httpService?action=MarkReadDocument" //鍗曟嵁鏍囪
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj
new file mode 100644
index 0000000..1cb1977
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Admin.NET.Database.Migrations.csproj
@@ -0,0 +1,42 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>disable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+
+ <Compile Remove="Migrations\20230426014851_v1.0.0.cs" />
+ <Compile Remove="Migrations\20230426014851_v1.0.0.Designer.cs" />
+ <Compile Remove="Migrations\20230426022104_v1.0.1.cs" />
+ <Compile Remove="Migrations\20230426022104_v1.0.1.Designer.cs" />
+ <Compile Remove="Migrations\20230426052404_v1.0.2.cs" />
+ <Compile Remove="Migrations\20230426052404_v1.0.2.Designer.cs" />
+ <Compile Remove="Migrations\20230426083742_v1.0.3.cs" />
+ <Compile Remove="Migrations\20230426083742_v1.0.3.Designer.cs" />
+ <Compile Remove="Migrations\20230427011601_v1.0.4.cs" />
+ <Compile Remove="Migrations\20230427011601_v1.0.4.Designer.cs" />
+ <Compile Remove="Migrations\20230428015458_v1.0.5.cs" />
+ <Compile Remove="Migrations\20230428015458_v1.0.5.Designer.cs" />
+ <Compile Remove="Migrations\20230428033419_v1.0.6.cs" />
+ <Compile Remove="Migrations\20230428033419_v1.0.6.Designer.cs" />
+ <Compile Remove="Migrations\20230506010711_v1.0.7.cs" />
+ <Compile Remove="Migrations\20230506010711_v1.0.7.Designer.cs" />
+ <Compile Remove="Migrations\20230506025517_v1.0.8.cs" />
+ <Compile Remove="Migrations\20230506025517_v1.0.8.Designer.cs" />
+ <Compile Remove="Migrations\20230506043103_v1.0.9.cs" />
+ <Compile Remove="Migrations\20230506043103_v1.0.9.Designer.cs" />
+ <Compile Remove="Migrations\20230506043606_v1.1.0.cs" />
+ <Compile Remove="Migrations\20230506043606_v1.1.0.Designer.cs" />
+ <Compile Remove="Migrations\20230506075406_v1.0.10.cs" />
+ <Compile Remove="Migrations\20230506075406_v1.0.10.Designer.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Admin.NET.EntityFramework.Core\Admin.NET.EntityFramework.Core.csproj" />
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Migrations\" />
+ </ItemGroup>
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs
new file mode 100644
index 0000000..8af98b6
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.Designer.cs
@@ -0,0 +1,13180 @@
+锘�// <auto-generated />
+using System;
+using Admin.NET.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+ [DbContext(typeof(DefaultDbContext))]
+ [Migration("20240413040247_v1.0.1")]
+ partial class v101
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.9")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("Admin.NET.Core.AgvTask", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvState")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹瑰櫒缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("EndName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缁撴潫鍚嶇О");
+
+ b.Property<string>("EndPlace")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缁撴潫浣嶇疆");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("Agv鐖禝d");
+
+ b.Property<string>("SourcePlaceName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰搴撲綅鍚嶇О");
+
+ b.Property<string>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰鍚嶇О");
+
+ b.Property<string>("StartPlace")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰浣嶇疆");
+
+ b.Property<string>("TaskNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("涓讳换鍔″彿");
+
+ b.Property<string>("TaskType")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱");
+
+ b.Property<string>("TransportOrder")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("褰撳墠鎵ц鐨勪换鍔�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_agv_task");
+
+ b.HasComment("Agv浠诲姟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.AgvWaring", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvCarCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("agv灏忚溅缂栧彿");
+
+ b.Property<string>("Code")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鍞竴缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FaultText")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏁呴殰鍐呭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsRead")
+ .HasColumnType("bit")
+ .HasComment("WCS鏄惁鍙互璇诲彇");
+
+ b.Property<DateTimeOffset?>("StartTime")
+ .HasMaxLength(50)
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏁呴殰鏃堕棿");
+
+ b.Property<string>("TransportOrder")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("浠诲姟鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<int>("YesOrNot")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("鏄惁瑙e喅");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_agv_waring");
+
+ b.HasComment("Agv鎶ヨ");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.VAccessDetails", b =>
+ {
+ b.Property<string>("Batch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ContainerCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<string>("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("High")
+ .HasColumnType("int");
+
+ b.Property<long?>("Id")
+ .HasColumnType("bigint");
+
+ b.Property<int>("Long")
+ .HasColumnType("int");
+
+ b.Property<string>("MaterialDensity")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("MaterialNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("SourcePlace")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("TaskCreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<int>("TaskLevel")
+ .HasColumnType("int");
+
+ b.Property<int>("TaskModel")
+ .HasColumnType("int");
+
+ b.Property<string>("TaskNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("TaskStatus")
+ .HasColumnType("int");
+
+ b.Property<int>("TaskType")
+ .HasColumnType("int");
+
+ b.Property<DateTimeOffset?>("TaskUpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<string>("ToPlace")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int");
+
+ b.ToView("View_AccessDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("PdaMenuId")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟Id");
+
+ b.HasKey("SysRoleId", "PdaMenuId");
+
+ b.HasIndex("PdaMenuId");
+
+ b.ToTable("wms_role_pdamenu");
+
+ b.HasComment("瑙掕壊鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsWarehouseManage", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_warehouse_manage");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesDeviceWaring", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeviceName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁惧鍚嶇О");
+
+ b.Property<DateTimeOffset?>("EndTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("缁撴潫鏃堕棿");
+
+ b.Property<string>("FaultName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏁呴殰鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("RunningTime")
+ .HasColumnType("int")
+ .HasComment("鎸佺画鏃堕棿");
+
+ b.Property<DateTimeOffset?>("StartTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍙戠敓鏃堕棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WcsId")
+ .HasColumnType("int")
+ .HasComment("WcsId");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_devicewaring");
+
+ b.HasComment("璁惧鎶ヨ");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("搴撳尯Id");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳彛缂栫爜");
+
+ b.Property<int>("CommenStatus")
+ .HasColumnType("int")
+ .HasComment("搴撳彛鐘舵��");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("EntranceType")
+ .HasColumnType("int")
+ .HasComment("搴撳彛绫诲瀷");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳彛鍚嶇О");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AreaId");
+
+ b.ToTable("les_entrance");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesPackWarehouse", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("High")
+ .HasColumnType("int")
+ .HasComment("楂�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesPackState")
+ .HasColumnType("int")
+ .HasComment("鎵撳寘鐘舵��");
+
+ b.Property<int>("Long")
+ .HasColumnType("int")
+ .HasComment("闀�");
+
+ b.Property<string>("MaterialNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鐮�");
+
+ b.Property<string>("OrderNo")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍗曟嵁鍙�");
+
+ b.Property<string>("OutputEntrance")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍑哄簱鍙�");
+
+ b.Property<string>("PackCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏍囩鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int")
+ .HasComment("瀹�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_packwarehouse");
+
+ b.HasComment("鎵撳寘琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesSerialRuleDetail", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DecimalType")
+ .HasColumnType("int")
+ .HasComment("杩涗綅绫诲瀷");
+
+ b.Property<string>("Description")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)")
+ .HasComment("璇存槑");
+
+ b.Property<int>("GetData")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("鎾峰彇");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("ItemNo")
+ .HasColumnType("int")
+ .HasComment("椤规");
+
+ b.Property<int>("PadLeft")
+ .HasColumnType("int")
+ .HasComment("鑷姩琛ラ浂");
+
+ b.Property<int>("SearchStart")
+ .HasColumnType("int")
+ .HasComment("鎾峰彇鐮佹暟(璧�)");
+
+ b.Property<int>("SerialCodeFlag")
+ .HasColumnType("int")
+ .HasComment("搴忓彿缂栫爜");
+
+ b.Property<int>("SerialLength")
+ .HasColumnType("int")
+ .HasComment("闀垮害");
+
+ b.Property<string>("SerialType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴忓彿绫诲埆");
+
+ b.Property<string>("SerialTypeNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴忓彿绫诲埆缂栧彿");
+
+ b.Property<string>("SourceType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璧勬枡鏉ユ簮");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("UserDefine")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浣跨敤鑰呰嚜瀹氫箟");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_serial_rule_detail");
+
+ b.HasComment("缂栧彿瑙勫垯");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesStation", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("宸ヤ綅缂栫爜");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("宸ヤ綅鍚嶇О");
+
+ b.Property<decimal>("PlaceSpec")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅瑙勬牸");
+
+ b.Property<long>("ProductionlineId")
+ .HasColumnType("bigint")
+ .HasComment("浜х嚎Id");
+
+ b.Property<int>("StataionStatus")
+ .HasColumnType("int")
+ .HasComment("杩愯鐘舵��");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("宸ヤ綅鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_station");
+
+ b.HasComment("宸ヤ綅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysApp", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Active")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁榛樿婵�娲�");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_app");
+
+ b.HasComment("绯荤粺搴旂敤琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070898245L,
+ Active = "Y",
+ Code = "system",
+ IsDeleted = false,
+ Name = "寮�鍙戠鐞�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070902341L,
+ Active = "N",
+ Code = "manage",
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊",
+ Sort = 300,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922869L,
+ Active = "N",
+ Code = "busiapp",
+ IsDeleted = false,
+ Name = "涓氬姟搴旂敤",
+ Sort = 400,
+ Status = 0
+ },
+ new
+ {
+ Id = 355686432948293L,
+ Active = "N",
+ Code = "warejob",
+ IsDeleted = false,
+ Name = "浠撳簱浣滀笟",
+ Sort = 500,
+ Status = 0
+ },
+ new
+ {
+ Id = 355686518018117L,
+ Active = "N",
+ Code = "warecount",
+ IsDeleted = false,
+ Name = "缁熻鏌ヨ",
+ Sort = 600,
+ Status = 0
+ },
+ new
+ {
+ Id = 383337192390725L,
+ Active = "N",
+ Code = "xbjl",
+ IsDeleted = false,
+ Name = "绾胯竟鍙枡",
+ Sort = 550,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysCodeGen", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FrontProName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍓嶇椤圭洰鍚�");
+
+ b.Property<string>("GenerateType")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢熸垚鏂瑰紡");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long?>("LowCodeId")
+ .HasColumnType("bigint");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("ModuleName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("妯″潡璺緞");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撹〃鍚�");
+
+ b.Property<string>("TablePrefix")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁绉婚櫎琛ㄥ墠缂�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_gen");
+
+ b.HasComment("浠g爜鐢熸垚琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysCodeGenConfig", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("CodeGenId")
+ .HasColumnType("bigint")
+ .HasComment("浠g爜鐢熸垚涓昏〃ID");
+
+ b.Property<string>("ColumnComment")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛楁鎻忚堪");
+
+ b.Property<string>("ColumnKey")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("涓婚敭");
+
+ b.Property<string>("ColumnName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳瓧娈靛悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DataType")
+ .HasMaxLength(128)
+ .HasColumnType("nvarchar(128)")
+ .HasComment("鏁版嵁搴撲腑绫诲瀷");
+
+ b.Property<string>("DictTypeCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀛楀吀Code");
+
+ b.Property<string>("DtoNetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)");
+
+ b.Property<string>("EffectType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浣滅敤绫诲瀷");
+
+ b.Property<string>("FkColumnName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭鏄剧ず瀛楁");
+
+ b.Property<string>("FkColumnNetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷");
+
+ b.Property<string>("FkEntityName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭瀹炰綋鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment(".NET鏁版嵁绫诲瀷");
+
+ b.Property<string>("QueryType")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鏌ヨ鏂瑰紡");
+
+ b.Property<string>("QueryWhether")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鏄煡璇㈡潯浠�");
+
+ b.Property<string>("ShowTitleMinWidth")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("椤甸潰鍒楁樉绀烘渶灏忓搴�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WhetherAddUpdate")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("澧炴敼");
+
+ b.Property<string>("WhetherCommon")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁閫氱敤瀛楁");
+
+ b.Property<string>("WhetherOrderBy")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄惁鎺掑簭");
+
+ b.Property<string>("WhetherRequired")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁蹇呭~");
+
+ b.Property<string>("WhetherRetract")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄惁缂╄繘");
+
+ b.Property<string>("WhetherTable")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄剧ず");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_gen_config");
+
+ b.HasComment("浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysConfig", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("GroupCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("SysFlag")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鏄郴缁熷弬鏁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Value")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("灞炴�у��");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_config");
+
+ b.HasComment("鍙傛暟閰嶇疆琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070902342L,
+ Code = "DILON_JWT_SECRET",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "jwt瀵嗛挜",
+ Remark = "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "weiben"
+ },
+ new
+ {
+ Id = 142307070902343L,
+ Code = "DILON_DEFAULT_PASSWORD",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "榛樿瀵嗙爜",
+ Remark = "榛樿瀵嗙爜",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "123456"
+ },
+ new
+ {
+ Id = 142307070902344L,
+ Code = "DILON_TOKEN_EXPIRE",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "token杩囨湡鏃堕棿",
+ Remark = "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "86400"
+ },
+ new
+ {
+ Id = 142307070902345L,
+ Code = "DILON_SESSION_EXPIRE",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "session浼氳瘽杩囨湡鏃堕棿",
+ Remark = "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "7200"
+ },
+ new
+ {
+ Id = 142307070902361L,
+ Code = "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS",
+ GroupCode = "FILE_PATH",
+ IsDeleted = false,
+ Name = "Win鏈湴涓婁紶鏂囦欢璺緞",
+ Remark = "Win鏈湴涓婁紶鏂囦欢璺緞",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "D:/tmp"
+ },
+ new
+ {
+ Id = 142307070902363L,
+ Code = "DILON_UN_XSS_FILTER_URL",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鏀惧紑XSS杩囨护鐨勬帴鍙�",
+ Remark = "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "/demo/xssfilter,/demo/unxss"
+ },
+ new
+ {
+ Id = 142307070902364L,
+ Code = "DILON_ENABLE_SINGLE_LOGIN",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鍗曠敤鎴风櫥闄嗙殑寮�鍏�",
+ Remark = "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "false"
+ },
+ new
+ {
+ Id = 142307070902365L,
+ Code = "DILON_CAPTCHA_OPEN",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鐧诲綍楠岃瘉鐮佺殑寮�鍏�",
+ Remark = "true-鎵撳紑锛宖alse-鍏抽棴",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "true"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<long>("TypeId")
+ .HasColumnType("bigint")
+ .HasComment("瀛楀吀绫诲瀷Id");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Value")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍊�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("sys_dict_data");
+
+ b.HasComment("瀛楀吀鍊艰〃");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070902375L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鐢锋��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "鐢�"
+ },
+ new
+ {
+ Id = 142307070902376L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "濂虫��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "濂�"
+ },
+ new
+ {
+ Id = 142307070902377L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鏈煡鎬у埆",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "鏈煡"
+ },
+ new
+ {
+ Id = 142307070902384L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "姝e父",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "姝e父"
+ },
+ new
+ {
+ Id = 142307070902385L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍋滅敤",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "鍋滅敤"
+ },
+ new
+ {
+ Id = 142307070902386L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070902387L,
+ Code = "N",
+ IsDeleted = false,
+ Remark = "鍚�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906486L,
+ Value = "鍚�"
+ },
+ new
+ {
+ Id = 142307070902388L,
+ Code = "Y",
+ IsDeleted = false,
+ Remark = "鏄�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906486L,
+ Value = "鏄�"
+ },
+ new
+ {
+ Id = 142307070902389L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鐧诲綍",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906487L,
+ Value = "鐧诲綍"
+ },
+ new
+ {
+ Id = 142307070902390L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鐧诲嚭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906487L,
+ Value = "鐧诲嚭"
+ },
+ new
+ {
+ Id = 142307070902391L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鐩綍",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鐩綍"
+ },
+ new
+ {
+ Id = 142307070902392L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鑿滃崟",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鑿滃崟"
+ },
+ new
+ {
+ Id = 142307070902393L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鎸夐挳",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鎸夐挳"
+ },
+ new
+ {
+ Id = 142307070902394L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鏈彂閫�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鏈彂閫�"
+ },
+ new
+ {
+ Id = 142307070902395L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍙戦�佹垚鍔�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鍙戦�佹垚鍔�"
+ },
+ new
+ {
+ Id = 142307070902396L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍙戦�佸け璐�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鍙戦�佸け璐�"
+ },
+ new
+ {
+ Id = 142307070902397L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "澶辨晥",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "澶辨晥"
+ },
+ new
+ {
+ Id = 142307070902398L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鏃�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "鏃�"
+ },
+ new
+ {
+ Id = 142307070902399L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "缁勪欢",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "缁勪欢"
+ },
+ new
+ {
+ Id = 142307070906437L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍐呴摼",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "鍐呴摼"
+ },
+ new
+ {
+ Id = 142307070906438L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "澶栭摼",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "澶栭摼"
+ },
+ new
+ {
+ Id = 142307070906439L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "绯荤粺鏉冮噸",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906491L,
+ Value = "绯荤粺鏉冮噸"
+ },
+ new
+ {
+ Id = 142307070906440L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "涓氬姟鏉冮噸",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906491L,
+ Value = "涓氬姟鏉冮噸"
+ },
+ new
+ {
+ Id = 142307070906441L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍏ㄩ儴鏁版嵁",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鍏ㄩ儴鏁版嵁"
+ },
+ new
+ {
+ Id = 142307070906442L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁"
+ },
+ new
+ {
+ Id = 142307070906443L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鏈儴闂ㄦ暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鏈儴闂ㄦ暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906444L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "浠呮湰浜烘暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "浠呮湰浜烘暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906445L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "鑷畾涔夋暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鑷畾涔夋暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906449L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鍏跺畠",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鍏跺畠"
+ },
+ new
+ {
+ Id = 142307070906450L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "澧炲姞",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "澧炲姞"
+ },
+ new
+ {
+ Id = 142307070906451L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070906452L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "缂栬緫",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "缂栬緫"
+ },
+ new
+ {
+ Id = 142307070906453L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鏇存柊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏇存柊"
+ },
+ new
+ {
+ Id = 142307070906454L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "鏌ヨ",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏌ヨ"
+ },
+ new
+ {
+ Id = 142307070906455L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "璇︽儏",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "璇︽儏"
+ },
+ new
+ {
+ Id = 142307070906456L,
+ Code = "7",
+ IsDeleted = false,
+ Remark = "鏍�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏍�"
+ },
+ new
+ {
+ Id = 142307070906457L,
+ Code = "8",
+ IsDeleted = false,
+ Remark = "瀵煎叆",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "瀵煎叆"
+ },
+ new
+ {
+ Id = 142307070906458L,
+ Code = "9",
+ IsDeleted = false,
+ Remark = "瀵煎嚭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "瀵煎嚭"
+ },
+ new
+ {
+ Id = 142307070906459L,
+ Code = "10",
+ IsDeleted = false,
+ Remark = "鎺堟潈",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鎺堟潈"
+ },
+ new
+ {
+ Id = 142307070906460L,
+ Code = "11",
+ IsDeleted = false,
+ Remark = "寮洪��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "寮洪��"
+ },
+ new
+ {
+ Id = 142307070906461L,
+ Code = "12",
+ IsDeleted = false,
+ Remark = "娓呯┖",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "娓呯┖"
+ },
+ new
+ {
+ Id = 142307070906462L,
+ Code = "13",
+ IsDeleted = false,
+ Remark = "淇敼鐘舵��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "淇敼鐘舵��"
+ },
+ new
+ {
+ Id = 142307070906463L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "闃块噷浜�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "闃块噷浜�"
+ },
+ new
+ {
+ Id = 142307070906464L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鑵捐浜�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "鑵捐浜�"
+ },
+ new
+ {
+ Id = 142307070906465L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "minio",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "minio"
+ },
+ new
+ {
+ Id = 142307070906466L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鏈湴",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "鏈湴"
+ },
+ new
+ {
+ Id = 142307070906467L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "杩愯",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910533L,
+ Value = "杩愯"
+ },
+ new
+ {
+ Id = 142307070906468L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍋滄",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910533L,
+ Value = "鍋滄"
+ },
+ new
+ {
+ Id = 142307070906469L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "閫氱煡",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910534L,
+ Value = "閫氱煡"
+ },
+ new
+ {
+ Id = 142307070906470L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍏憡",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910534L,
+ Value = "鍏憡"
+ },
+ new
+ {
+ Id = 142307070906471L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鑽夌",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鑽夌"
+ },
+ new
+ {
+ Id = 142307070906472L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍙戝竷",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鍙戝竷"
+ },
+ new
+ {
+ Id = 142307070906473L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鎾ゅ洖",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 142307070906474L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070906475L,
+ Code = "true",
+ IsDeleted = false,
+ Remark = "鏄�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910536L,
+ Value = "鏄�"
+ },
+ new
+ {
+ Id = 142307070906476L,
+ Code = "false",
+ IsDeleted = false,
+ Remark = "鍚�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910536L,
+ Value = "鍚�"
+ },
+ new
+ {
+ Id = 142307070906477L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "涓嬭浇鍘嬬缉鍖�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910537L,
+ Value = "涓嬭浇鍘嬬缉鍖�"
+ },
+ new
+ {
+ Id = 142307070906478L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鐢熸垚鍒版湰椤圭洰",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910537L,
+ Value = "鐢熸垚鍒版湰椤圭洰"
+ },
+ new
+ {
+ Id = 142307070906479L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "GET",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "GET"
+ },
+ new
+ {
+ Id = 142307070906480L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "POST",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "POST"
+ },
+ new
+ {
+ Id = 142307070906481L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "PUT",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "PUT"
+ },
+ new
+ {
+ Id = 142307070906482L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "DELETE",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "DELETE"
+ },
+ new
+ {
+ Id = 142307070922829L,
+ Code = "fk",
+ IsDeleted = false,
+ Remark = "澶栭敭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "澶栭敭"
+ },
+ new
+ {
+ Id = 142307070922830L,
+ Code = "input",
+ IsDeleted = false,
+ Remark = "杈撳叆妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "杈撳叆妗�"
+ },
+ new
+ {
+ Id = 142307070922831L,
+ Code = "datepicker",
+ IsDeleted = false,
+ Remark = "鏃ユ湡閫夋嫨",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏃ユ湡閫夋嫨"
+ },
+ new
+ {
+ Id = 386523071475758L,
+ Code = "datetimepicker",
+ IsDeleted = false,
+ Remark = "鏃ユ湡鏃堕棿閫夋嫨",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏃ユ湡鏃堕棿閫夋嫨"
+ },
+ new
+ {
+ Id = 142307070922832L,
+ Code = "select",
+ IsDeleted = false,
+ Remark = "涓嬫媺妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "涓嬫媺妗�"
+ },
+ new
+ {
+ Id = 142307070922833L,
+ Code = "radio",
+ IsDeleted = false,
+ Remark = "鍗曢�夋",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鍗曢�夋"
+ },
+ new
+ {
+ Id = 142307070922834L,
+ Code = "switch",
+ IsDeleted = false,
+ Remark = "寮�鍏�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "寮�鍏�"
+ },
+ new
+ {
+ Id = 142307070922835L,
+ Code = "checkbox",
+ IsDeleted = false,
+ Remark = "澶氶�夋",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "澶氶�夋"
+ },
+ new
+ {
+ Id = 142307070922836L,
+ Code = "inputnumber",
+ IsDeleted = false,
+ Remark = "鏁板瓧杈撳叆妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏁板瓧杈撳叆妗�"
+ },
+ new
+ {
+ Id = 142307070922837L,
+ Code = "textarea",
+ IsDeleted = false,
+ Remark = "鏂囨湰鍩�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏂囨湰鍩�"
+ },
+ new
+ {
+ Id = 142307070922838L,
+ Code = "==",
+ IsDeleted = false,
+ Remark = "绛変簬",
+ Sort = 1,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "绛変簬"
+ },
+ new
+ {
+ Id = 142307070922839L,
+ Code = "like",
+ IsDeleted = false,
+ Remark = "妯$硦",
+ Sort = 2,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "妯$硦"
+ },
+ new
+ {
+ Id = 142307070922840L,
+ Code = ">",
+ IsDeleted = false,
+ Remark = "澶т簬",
+ Sort = 3,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "澶т簬"
+ },
+ new
+ {
+ Id = 142307070922841L,
+ Code = "<",
+ IsDeleted = false,
+ Remark = "灏忎簬",
+ Sort = 4,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "灏忎簬"
+ },
+ new
+ {
+ Id = 142307070922842L,
+ Code = "!=",
+ IsDeleted = false,
+ Remark = "涓嶇瓑浜�",
+ Sort = 5,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "涓嶇瓑浜�"
+ },
+ new
+ {
+ Id = 142307070922843L,
+ Code = ">=",
+ IsDeleted = false,
+ Remark = "澶т簬绛変簬",
+ Sort = 6,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "澶т簬绛変簬"
+ },
+ new
+ {
+ Id = 142307070922844L,
+ Code = "<=",
+ IsDeleted = false,
+ Remark = "灏忎簬绛変簬",
+ Sort = 7,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "灏忎簬绛変簬"
+ },
+ new
+ {
+ Id = 142307070922845L,
+ Code = "isNotNull",
+ IsDeleted = false,
+ Remark = "涓嶄负绌�",
+ Sort = 8,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "涓嶄负绌�"
+ },
+ new
+ {
+ Id = 386523071475759L,
+ Code = "between",
+ IsDeleted = false,
+ Remark = "浠嬩簬",
+ Sort = 9,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "浠嬩簬"
+ },
+ new
+ {
+ Id = 142307070922851L,
+ Code = "int",
+ IsDeleted = false,
+ Remark = "int",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "int"
+ },
+ new
+ {
+ Id = 142307070922846L,
+ Code = "long",
+ IsDeleted = false,
+ Remark = "long",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "long"
+ },
+ new
+ {
+ Id = 142307070922847L,
+ Code = "string",
+ IsDeleted = false,
+ Remark = "string",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "string"
+ },
+ new
+ {
+ Id = 142307070922850L,
+ Code = "bool",
+ IsDeleted = false,
+ Remark = "bool",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "bool"
+ },
+ new
+ {
+ Id = 142307070922852L,
+ Code = "double",
+ IsDeleted = false,
+ Remark = "double",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "double"
+ },
+ new
+ {
+ Id = 142307070922848L,
+ Code = "DateTime",
+ IsDeleted = false,
+ Remark = "DateTime",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "DateTime"
+ },
+ new
+ {
+ Id = 142307070922861L,
+ Code = "float",
+ IsDeleted = false,
+ Remark = "float",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "float"
+ },
+ new
+ {
+ Id = 142307070922862L,
+ Code = "decimal",
+ IsDeleted = false,
+ Remark = "decimal",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "decimal"
+ },
+ new
+ {
+ Id = 142307070922863L,
+ Code = "Guid",
+ IsDeleted = false,
+ Remark = "Guid",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "Guid"
+ },
+ new
+ {
+ Id = 142307070922864L,
+ Code = "DateTimeOffset",
+ IsDeleted = false,
+ Remark = "DateTimeOffset",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "DateTimeOffset"
+ },
+ new
+ {
+ Id = 142307070926943L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "闆嗗洟瑙掕壊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "闆嗗洟瑙掕壊"
+ },
+ new
+ {
+ Id = 142307070926944L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍔犵洘鍟嗚鑹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "鍔犵洘鍟嗚鑹�"
+ },
+ new
+ {
+ Id = 142307070926945L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "闂ㄥ簵瑙掕壊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "闂ㄥ簵瑙掕壊"
+ },
+ new
+ {
+ Id = 142307070926946L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "涓�绾�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "涓�绾�"
+ },
+ new
+ {
+ Id = 142307070926947L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "浜岀骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "浜岀骇"
+ },
+ new
+ {
+ Id = 142307070926948L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "涓夌骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "涓夌骇"
+ },
+ new
+ {
+ Id = 142307070926949L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鍥涚骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "鍥涚骇"
+ },
+ new
+ {
+ Id = 285605336563781L,
+ Code = "DefaultFormType",
+ IsDeleted = false,
+ Remark = "榛樿琛ㄥ崟鍒嗙被",
+ Sort = 100,
+ Status = 0,
+ TypeId = 285605149831237L,
+ Value = "榛樿琛ㄥ崟鍒嗙被"
+ },
+ new
+ {
+ Id = 285641495289925L,
+ Code = "DefaultGroup",
+ IsDeleted = false,
+ Remark = "榛樿鍒嗙被",
+ Sort = 100,
+ Status = 0,
+ TypeId = 285641358889029L,
+ Value = "榛樿鍒嗙被"
+ },
+ new
+ {
+ Id = 355697634480197L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 355697676427333L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "鏈ㄨ川"
+ },
+ new
+ {
+ Id = 355697726726213L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "閲戝睘"
+ },
+ new
+ {
+ Id = 355697755361349L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "濉戞枡"
+ },
+ new
+ {
+ Id = 355697944657989L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "绂佺敤"
+ },
+ new
+ {
+ Id = 355697974415429L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "绌洪棽"
+ },
+ new
+ {
+ Id = 355698005966917L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "缁勭洏"
+ },
+ new
+ {
+ Id = 355698032828485L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "搴撲綅"
+ },
+ new
+ {
+ Id = 355697634480198L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "閫氱敤"
+ },
+ new
+ {
+ Id = 355697676427399L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "鍗卞寲鍝�"
+ },
+ new
+ {
+ Id = 355697726726200L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "娑蹭綋"
+ },
+ new
+ {
+ Id = 355697755361301L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "璐甸噸鍝�"
+ },
+ new
+ {
+ Id = 355697755361302L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "姘斾綋"
+ },
+ new
+ {
+ Id = 355697755361303L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "浣庢俯"
+ },
+ new
+ {
+ Id = 355698270015557L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 355698303508549L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "绔嬩綋搴�"
+ },
+ new
+ {
+ Id = 355698328531013L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鏅�氬簱"
+ },
+ new
+ {
+ Id = 355698362712133L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鍏叡搴�"
+ },
+ new
+ {
+ Id = 355698476777541L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "绌洪棽"
+ },
+ new
+ {
+ Id = 355698510786629L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "寰呭叆"
+ },
+ new
+ {
+ Id = 355698549424197L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "瀛樿揣"
+ },
+ new
+ {
+ Id = 355698576941125L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "寰呭嚭"
+ },
+ new
+ {
+ Id = 355698694561861L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "浣�"
+ },
+ new
+ {
+ Id = 355698716401733L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "涓�"
+ },
+ new
+ {
+ Id = 355698740326469L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "楂�"
+ },
+ new
+ {
+ Id = 355698898735173L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698855280709L,
+ Value = "鍏嶆"
+ },
+ new
+ {
+ Id = 355698924970053L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698855280709L,
+ Value = "鎶芥"
+ },
+ new
+ {
+ Id = 355699041800261L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鍘熸潗鏂�"
+ },
+ new
+ {
+ Id = 355699063255109L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鍗婃垚鍝�"
+ },
+ new
+ {
+ Id = 355699088330821L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鎴愬搧"
+ },
+ new
+ {
+ Id = 355699113156677L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "绌烘墭"
+ },
+ new
+ {
+ Id = 355699219353669L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699189051461L,
+ Value = "闀垮害"
+ },
+ new
+ {
+ Id = 355699243540549L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699189051461L,
+ Value = "閲嶉噺"
+ },
+ new
+ {
+ Id = 355699345645637L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699314061381L,
+ Value = "cm"
+ },
+ new
+ {
+ Id = 355699367575621L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699314061381L,
+ Value = "t"
+ },
+ new
+ {
+ Id = 355699479236677L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699447029829L,
+ Value = "鎵嬪姩"
+ },
+ new
+ {
+ Id = 355699505229893L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699447029829L,
+ Value = "鑷姩"
+ },
+ new
+ {
+ Id = 355699615133765L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "鍏ュ簱"
+ },
+ new
+ {
+ Id = 355699638476869L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "鍑哄簱"
+ },
+ new
+ {
+ Id = 355699661889605L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "绉诲簱"
+ },
+ new
+ {
+ Id = 355699760455749L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "鏈墽琛�"
+ },
+ new
+ {
+ Id = 355699784736837L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "鎵ц涓�"
+ },
+ new
+ {
+ Id = 355699813859397L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 355699760455798L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鏈墽琛�"
+ },
+ new
+ {
+ Id = 355699784736899L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-AGV"
+ },
+ new
+ {
+ Id = 355699813859300L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-杈撻�佺嚎"
+ },
+ new
+ {
+ Id = 355699813859301L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-鍫嗗灈鏈�"
+ },
+ new
+ {
+ Id = 355699813859302L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "绛夊緟"
+ },
+ new
+ {
+ Id = 355699813859303L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 383290784104517L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383290718294085L,
+ Value = "娉℃搏鍒囧壊"
+ },
+ new
+ {
+ Id = 383290816860229L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383290718294085L,
+ Value = "瑁呴厤杞﹂棿"
+ },
+ new
+ {
+ Id = 383317608218693L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "鏈紑濮�"
+ },
+ new
+ {
+ Id = 383317718302789L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "杩愰�佷腑"
+ },
+ new
+ {
+ Id = 383317751234629L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 384394737053765L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "AGV"
+ },
+ new
+ {
+ Id = 384394851618885L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "鍫嗗灈鏈�"
+ },
+ new
+ {
+ Id = 384394877870149L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "RGV"
+ },
+ new
+ {
+ Id = 385412179521605L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "鍒囧壊"
+ },
+ new
+ {
+ Id = 385412217618501L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "鍘嬪悎"
+ },
+ new
+ {
+ Id = 385412280418373L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "CNC"
+ },
+ new
+ {
+ Id = 386523049214021L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120389L,
+ Value = "鍏ュ簱鍙�"
+ },
+ new
+ {
+ Id = 386523071475781L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120389L,
+ Value = "鍑哄簱鍙�"
+ },
+ new
+ {
+ Id = 386523049214022L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场涓�绾�"
+ },
+ new
+ {
+ Id = 386523071475723L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场浜岀嚎"
+ },
+ new
+ {
+ Id = 386523071475724L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场涓夌嚎"
+ },
+ new
+ {
+ Id = 386523049214025L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "鏈紑濮�"
+ },
+ new
+ {
+ Id = 386523071475726L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "杩涜涓�"
+ },
+ new
+ {
+ Id = 386523071475727L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 386523071475728L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 386523049214029L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475730L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "鍑哄簱"
+ },
+ new
+ {
+ Id = 386523071475731L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475732L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "瓒婂簱"
+ },
+ new
+ {
+ Id = 386523049214033L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鏈笅鍙�"
+ },
+ new
+ {
+ Id = 386523071475734L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "宸蹭笅鍙�"
+ },
+ new
+ {
+ Id = 386523071475735L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鎵ц涓�"
+ },
+ new
+ {
+ Id = 386523071475736L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 386523071475737L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 386523049214038L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浜х嚎閫�搴�"
+ },
+ new
+ {
+ Id = 386523071475739L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鐢熶骇鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475740L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浣欐枡鍥炲簱"
+ },
+ new
+ {
+ Id = 386523071475741L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "閲囪喘鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475742L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475743L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍙戣揣鍗�"
+ },
+ new
+ {
+ Id = 386523071475744L,
+ Code = "7",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鐢熶骇棰嗘枡"
+ },
+ new
+ {
+ Id = 386523071475745L,
+ Code = "8",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "閿�鍞嚭搴�"
+ },
+ new
+ {
+ Id = 386523071475746L,
+ Code = "9",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "渚涘簲鍟嗛��搴�"
+ },
+ new
+ {
+ Id = 386523071475747L,
+ Code = "10",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "娉℃搏鍑哄簱"
+ },
+ new
+ {
+ Id = 386523071475748L,
+ Code = "11",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍑哄簱鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475749L,
+ Code = "12",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浠撳簱璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475750L,
+ Code = "13",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "搴撳尯璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475751L,
+ Code = "14",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "搴撲綅璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475752L,
+ Code = "15",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "椤圭洰璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475753L,
+ Code = "16",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "璋冩嫧鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475754L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "涓嶄娇鐢�"
+ },
+ new
+ {
+ Id = 386523071475755L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "鏈鏍�"
+ },
+ new
+ {
+ Id = 386523071475756L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "绛炬牳涓�"
+ },
+ new
+ {
+ Id = 386523071475757L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "宸茬鏍�"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("EnumClassName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("瀵瑰簲鏋氫妇");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_dict_type");
+
+ b.HasComment("瀛楀吀绫诲瀷琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070906483L,
+ Code = "common_status",
+ IsDeleted = false,
+ Name = "閫氱敤鐘舵��",
+ Remark = "閫氱敤鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906484L,
+ Code = "sex",
+ IsDeleted = false,
+ Name = "鎬у埆",
+ Remark = "鎬у埆瀛楀吀",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906485L,
+ Code = "consts_type",
+ IsDeleted = false,
+ Name = "甯搁噺鐨勫垎绫�",
+ Remark = "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906486L,
+ Code = "yes_or_no",
+ IsDeleted = false,
+ Name = "鏄惁",
+ Remark = "鏄惁",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906487L,
+ Code = "vis_type",
+ IsDeleted = false,
+ Name = "璁块棶绫诲瀷",
+ Remark = "璁块棶绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906488L,
+ Code = "menu_type",
+ IsDeleted = false,
+ Name = "鑿滃崟绫诲瀷",
+ Remark = "鑿滃崟绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906489L,
+ Code = "send_type",
+ IsDeleted = false,
+ Name = "鍙戦�佺被鍨�",
+ Remark = "鍙戦�佺被鍨�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906490L,
+ Code = "open_type",
+ IsDeleted = false,
+ Name = "鎵撳紑鏂瑰紡",
+ Remark = "鎵撳紑鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906491L,
+ Code = "menu_weight",
+ IsDeleted = false,
+ Name = "鑿滃崟鏉冮噸",
+ Remark = "鑿滃崟鏉冮噸",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906492L,
+ Code = "data_scope_type",
+ IsDeleted = false,
+ Name = "鏁版嵁鑼冨洿绫诲瀷",
+ Remark = "鏁版嵁鑼冨洿绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906494L,
+ Code = "op_type",
+ IsDeleted = false,
+ Name = "鎿嶄綔绫诲瀷",
+ Remark = "鎿嶄綔绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906495L,
+ Code = "file_storage_location",
+ IsDeleted = false,
+ Name = "鏂囦欢瀛樺偍浣嶇疆",
+ Remark = "鏂囦欢瀛樺偍浣嶇疆",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910533L,
+ Code = "run_status",
+ IsDeleted = false,
+ Name = "杩愯鐘舵��",
+ Remark = "瀹氭椂浠诲姟杩愯鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910534L,
+ Code = "notice_type",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡绫诲瀷",
+ Remark = "閫氱煡鍏憡绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910535L,
+ Code = "notice_status",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡鐘舵��",
+ Remark = "閫氱煡鍏憡鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910536L,
+ Code = "yes_true_false",
+ IsDeleted = false,
+ Name = "鏄惁boolean",
+ Remark = "鏄惁boolean",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910537L,
+ Code = "code_gen_create_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚鏂瑰紡",
+ Remark = "浠g爜鐢熸垚鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910538L,
+ Code = "request_type",
+ IsDeleted = false,
+ Name = "璇锋眰鏂瑰紡",
+ Remark = "璇锋眰鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922827L,
+ Code = "code_gen_effect_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+ Remark = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922828L,
+ Code = "code_gen_query_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+ Remark = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922829L,
+ Code = "code_gen_net_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚.NET绫诲瀷",
+ Remark = "浠g爜鐢熸垚.NET绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070926941L,
+ Code = "role_type",
+ IsDeleted = false,
+ Name = "瑙掕壊绫诲瀷",
+ Remark = "瑙掕壊绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070926942L,
+ Code = "org_type",
+ IsDeleted = false,
+ Name = "鏈烘瀯绫诲瀷",
+ Remark = "鏈烘瀯绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 285605149831237L,
+ Code = "form_type",
+ IsDeleted = false,
+ Name = "琛ㄥ崟绫诲瀷",
+ Remark = "琛ㄥ崟绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 285641358889029L,
+ Code = "workflow_group",
+ IsDeleted = false,
+ Name = "娴佺▼鍒嗙被",
+ Remark = "娴佺▼鍒嗙被",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355694205325381L,
+ Code = "container_type",
+ IsDeleted = false,
+ Name = "鎵樼洏绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355697881423941L,
+ Code = "container_status",
+ IsDeleted = false,
+ Name = "鎵樼洏鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355697881423942L,
+ Code = "container_category",
+ IsDeleted = false,
+ Name = "鎵樼洏鍒嗙被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698224758853L,
+ Code = "area_type",
+ IsDeleted = false,
+ Name = "搴撳尯绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698441912389L,
+ Code = "place_status",
+ IsDeleted = false,
+ Name = "搴撲綅鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698661130309L,
+ Code = "height_level",
+ IsDeleted = false,
+ Name = "搴撲綅楂樺害",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698855280709L,
+ Code = "material_inspection",
+ IsDeleted = false,
+ Name = "鐗╂枡妫�楠�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699003580485L,
+ Code = "material_type",
+ IsDeleted = false,
+ Name = "鐗╂枡绫诲埆",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699189051461L,
+ Code = "unit_type",
+ IsDeleted = false,
+ Name = "鍗曚綅绫诲埆",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699314061381L,
+ Code = "unitno_type",
+ IsDeleted = false,
+ Name = "鍗曚綅缂栧彿",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699447029829L,
+ Code = "task_model",
+ IsDeleted = false,
+ Name = "浠诲姟鏂瑰紡",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699576467525L,
+ Code = "task_type",
+ IsDeleted = false,
+ Name = "浠诲姟绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699731099717L,
+ Code = "task_status",
+ IsDeleted = false,
+ Name = "浠诲姟鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699731099718L,
+ Code = "taskdodevice_statusenum",
+ IsDeleted = false,
+ Name = "浠诲姟璁惧鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 383290718294085L,
+ Code = "les_workshop_type",
+ IsDeleted = false,
+ Name = "鎵�灞炶溅闂�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 383317542490181L,
+ Code = "les_takematerials_status",
+ IsDeleted = false,
+ Name = "鍙枡鍗曠姸鎬�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 384394636988485L,
+ Code = "dodevice_type",
+ IsDeleted = false,
+ Name = "璁惧绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 385412129075269L,
+ Code = "lesworkshop_section",
+ IsDeleted = false,
+ Name = "宸ユ",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120389L,
+ Code = "les_entrance_type",
+ IsDeleted = false,
+ Name = "搴撳彛绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120390L,
+ Code = "blankingproductionLine_enum",
+ IsDeleted = false,
+ Name = "涓嬫枡浜х嚎",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120391L,
+ Code = "orderdetails_statusenum",
+ IsDeleted = false,
+ Name = "鍗曟嵁鏄庣粏琛ㄧ姸鎬�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120392L,
+ Code = "orderlargecategory_Enum",
+ IsDeleted = false,
+ Name = "鍗曟嵁澶х被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120393L,
+ Code = "order_statusenum",
+ IsDeleted = false,
+ Name = "鍗曟嵁涓昏〃鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120394L,
+ Code = "ordersubclass_enum",
+ IsDeleted = false,
+ Name = "鍗曟嵁灏忕被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120395L,
+ Code = "issue_state",
+ IsDeleted = false,
+ Name = "绛炬牳鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<string>("JobNum")
+ .HasMaxLength(30)
+ .HasColumnType("nvarchar(30)")
+ .HasComment("宸ュ彿");
+
+ b.Property<long>("OrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.Property<string>("OrgName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏈烘瀯鍚嶇О");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_emp");
+
+ b.HasComment("鍛樺伐琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910551L,
+ JobNum = "D1001",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910552L,
+ JobNum = "D1002",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910553L,
+ JobNum = "D1003",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910554L,
+ JobNum = "D1001",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910555L,
+ JobNum = "D1002",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910556L,
+ JobNum = "D1003",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910557L,
+ JobNum = "D1001",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 142307070910558L,
+ JobNum = "D1002",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 142307070910559L,
+ JobNum = "D1003",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 358533464608837L,
+ JobNum = "",
+ OrgId = 142307070910539L,
+ OrgName = "浼熸湰鑲′唤鏈夐檺鍏徃"
+ },
+ new
+ {
+ Id = 358536045723717L,
+ JobNum = "",
+ OrgId = 142307070910542L,
+ OrgName = "鐮斿彂閮�"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+ {
+ b.Property<long>("SysEmpId")
+ .HasColumnType("bigint")
+ .HasComment("鍛樺伐Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.Property<long>("SysPosId")
+ .HasColumnType("bigint")
+ .HasComment("鑱屼綅Id");
+
+ b.HasKey("SysEmpId", "SysOrgId", "SysPosId");
+
+ b.HasIndex("SysOrgId");
+
+ b.HasIndex("SysPosId");
+
+ b.ToTable("sys_emp_ext_org_pos");
+
+ b.HasComment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910539L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910540L,
+ SysPosId = 142307070910548L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910541L,
+ SysPosId = 142307070910549L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910542L,
+ SysPosId = 142307070910550L
+ },
+ new
+ {
+ SysEmpId = 142307070910553L,
+ SysOrgId = 142307070910542L,
+ SysPosId = 142307070910547L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+ {
+ b.Property<long>("SysEmpId")
+ .HasColumnType("bigint")
+ .HasComment("鍛樺伐Id");
+
+ b.Property<long>("SysPosId")
+ .HasColumnType("bigint")
+ .HasComment("鑱屼綅Id");
+
+ b.HasKey("SysEmpId", "SysPosId");
+
+ b.HasIndex("SysPosId");
+
+ b.ToTable("sys_emp_pos");
+
+ b.HasComment("鍛樺伐鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysPosId = 142307070910548L
+ },
+ new
+ {
+ SysEmpId = 142307070910552L,
+ SysPosId = 142307070910549L
+ },
+ new
+ {
+ SysEmpId = 142307070910553L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 358533464608837L,
+ SysPosId = 142307070910550L
+ },
+ new
+ {
+ SysEmpId = 358536045723717L,
+ SysPosId = 142307070910550L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysExcelTemplate", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AppName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鎵�灞炲簲鐢�");
+
+ b.Property<string>("ClassName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("绫诲悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DataStartLine")
+ .HasColumnType("int")
+ .HasComment("鏁版嵁寮�濮嬭");
+
+ b.Property<int>("HeadStartLine")
+ .HasColumnType("int")
+ .HasComment("琛ㄥご寮�濮嬭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("妯℃澘鍚嶇О");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("TemplateFileName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("妯℃澘鏂囦欢鍚嶇О");
+
+ b.Property<string>("UnionUniqueFields")
+ .IsRequired()
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)")
+ .HasComment("鍞竴瀛楁闆�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Version")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐗堟湰");
+
+ b.HasKey("Id");
+
+ b.HasAlternateKey("ClassName", "Version", "AppName");
+
+ b.ToTable("sys_excel_template");
+
+ b.HasComment("Excel妯℃澘");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysFile", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FileBucket")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂囦欢浠撳簱");
+
+ b.Property<int>("FileLocation")
+ .HasColumnType("int")
+ .HasComment("鏂囦欢瀛樺偍浣嶇疆");
+
+ b.Property<string>("FileObjectName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛樺偍鍒癰ucket鐨勫悕绉�");
+
+ b.Property<string>("FileOriginName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂囦欢鍚嶇О");
+
+ b.Property<string>("FilePath")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛樺偍璺緞");
+
+ b.Property<string>("FileSizeInfo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏂囦欢澶у皬淇℃伅");
+
+ b.Property<string>("FileSizeKb")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鏂囦欢澶у皬kb");
+
+ b.Property<string>("FileSuffix")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏂囦欢鍚庣紑");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_file");
+
+ b.HasComment("鏂囦欢淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysForm", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FormJson")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("form琛ㄥ崟Json");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("Publish")
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍙戝竷");
+
+ b.Property<string>("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏍囬");
+
+ b.Property<long>("TypeId")
+ .HasColumnType("bigint")
+ .HasComment("琛ㄥ崟绫诲瀷ID");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Version")
+ .HasColumnType("int")
+ .HasComment("鐗堟湰");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_forms");
+
+ b.HasComment("琛ㄥ崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogAudit", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("ColumnName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒楀悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎿嶄綔鏃堕棿");
+
+ b.Property<string>("NewValue")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏂板��");
+
+ b.Property<string>("OldValue")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏃у��");
+
+ b.Property<int>("Operate")
+ .HasColumnType("int")
+ .HasComment("鎿嶄綔鏂瑰紡");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("琛ㄥ悕");
+
+ b.Property<long>("UserId")
+ .HasColumnType("bigint")
+ .HasComment("鎿嶄綔浜篒d");
+
+ b.Property<string>("UserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜哄悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_audit");
+
+ b.HasComment("瀹¤鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogEx", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜�");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("绫诲悕");
+
+ b.Property<string>("ExceptionMsg")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父淇℃伅");
+
+ b.Property<string>("ExceptionName")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父鍚嶇О");
+
+ b.Property<string>("ExceptionSource")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父婧�");
+
+ b.Property<DateTimeOffset?>("ExceptionTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("寮傚父鏃堕棿");
+
+ b.Property<string>("MethodName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂规硶鍚�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("ParamsObj")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍙傛暟瀵硅薄");
+
+ b.Property<string>("StackTrace")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍫嗘爤淇℃伅");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_ex");
+
+ b.HasComment("寮傚父鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogOp", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜�");
+
+ b.Property<string>("Browser")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("娴忚鍣�");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("绫诲悕绉�");
+
+ b.Property<long>("ElapsedTime")
+ .HasColumnType("bigint")
+ .HasComment("鑰楁椂");
+
+ b.Property<string>("Ip")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("IP");
+
+ b.Property<string>("Location")
+ .HasMaxLength(1024)
+ .HasColumnType("nvarchar(1024)")
+ .HasComment("鍦板潃");
+
+ b.Property<string>("Message")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍏蜂綋娑堟伅");
+
+ b.Property<string>("MethodName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂规硶鍚嶇О");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<DateTimeOffset?>("OpTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎿嶄綔鏃堕棿");
+
+ b.Property<string>("Os")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鎿嶄綔绯荤粺");
+
+ b.Property<string>("Param")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璇锋眰鍙傛暟");
+
+ b.Property<string>("ReqMethod")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("璇锋眰鏂瑰紡");
+
+ b.Property<string>("Result")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("杩斿洖缁撴灉");
+
+ b.Property<int>("Success")
+ .HasColumnType("int")
+ .HasComment("鏄惁鎵ц鎴愬姛");
+
+ b.Property<string>("Url")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("璇锋眰鍦板潃");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_op");
+
+ b.HasComment("鎿嶄綔鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogVis", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁块棶浜�");
+
+ b.Property<string>("Browser")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("娴忚鍣�");
+
+ b.Property<string>("Ip")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("IP");
+
+ b.Property<string>("Location")
+ .HasMaxLength(1024)
+ .HasColumnType("nvarchar(1024)")
+ .HasComment("鍦板潃");
+
+ b.Property<string>("Message")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍏蜂綋娑堟伅");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Os")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鎿嶄綔绯荤粺");
+
+ b.Property<int>("Success")
+ .HasColumnType("int")
+ .HasComment("鏄惁鎵ц鎴愬姛");
+
+ b.Property<DateTimeOffset?>("VisTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("璁块棶鏃堕棿");
+
+ b.Property<int>("VisType")
+ .HasColumnType("int")
+ .HasComment("璁块棶绫诲瀷");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_vis");
+
+ b.HasComment("璁块棶鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Application")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴旂敤鍒嗙被");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<string>("Component")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("缁勪欢鍦板潃");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Icon")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍥炬爣");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Link")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍐呴摼鍦板潃");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("OpenType")
+ .HasColumnType("int")
+ .HasComment("鎵撳紑鏂瑰紡");
+
+ b.Property<string>("Permission")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏉冮檺鏍囪瘑");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Redirect")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("閲嶅畾鍚戝湴鍧�");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<string>("Router")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("璺敱鍦板潃");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("鑿滃崟绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Visible")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鍙");
+
+ b.Property<int>("Weight")
+ .HasColumnType("int")
+ .HasComment("鏉冮噸");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_menu");
+
+ b.HasComment("鑿滃崟琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307000914633L,
+ Application = "manage",
+ Code = "sys_mgr",
+ Component = "PageView",
+ Icon = "team",
+ IsDeleted = false,
+ Name = "缁勭粐鏋舵瀯",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/sys",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910581L,
+ Application = "manage",
+ Code = "sys_org_mgr",
+ Component = "system/org/index",
+ IsDeleted = false,
+ Name = "鏈烘瀯绠$悊",
+ OpenType = 1,
+ Pid = 142307000914633L,
+ Pids = "[0],[142307000914633],",
+ Router = "/org",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910582L,
+ Application = "manage",
+ Code = "sys_org_mgr_page",
+ IsDeleted = false,
+ Name = "鏈烘瀯鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOrg:page",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910583L,
+ Application = "manage",
+ Code = "sys_org_mgr_list",
+ IsDeleted = false,
+ Name = "鏈烘瀯鍒楄〃",
+ OpenType = 0,
+ Permission = "sysOrg:list",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910584L,
+ Application = "manage",
+ Code = "sys_org_mgr_add",
+ IsDeleted = false,
+ Name = "鏈烘瀯澧炲姞",
+ OpenType = 0,
+ Permission = "sysOrg:add",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910585L,
+ Application = "manage",
+ Code = "sys_org_mgr_edit",
+ IsDeleted = false,
+ Name = "鏈烘瀯缂栬緫",
+ OpenType = 0,
+ Permission = "sysOrg:edit",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910586L,
+ Application = "manage",
+ Code = "sys_org_mgr_delete",
+ IsDeleted = false,
+ Name = "鏈烘瀯鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysOrg:delete",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910587L,
+ Application = "manage",
+ Code = "sys_org_mgr_detail",
+ IsDeleted = false,
+ Name = "鏈烘瀯璇︽儏",
+ OpenType = 0,
+ Permission = "sysOrg:detail",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910588L,
+ Application = "manage",
+ Code = "sys_org_mgr_tree",
+ IsDeleted = false,
+ Name = "鏈烘瀯鏍�",
+ OpenType = 0,
+ Permission = "sysOrg:tree",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910589L,
+ Application = "manage",
+ Code = "sys_pos_mgr",
+ Component = "system/pos/index",
+ IsDeleted = false,
+ Name = "鑱屼綅绠$悊",
+ OpenType = 1,
+ Pid = 142307000914633L,
+ Pids = "[0],[142307000914633],",
+ Router = "/pos",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910590L,
+ Application = "manage",
+ Code = "sys_pos_mgr_page",
+ IsDeleted = false,
+ Name = "鑱屼綅鏌ヨ",
+ OpenType = 0,
+ Permission = "sysPos:page",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910591L,
+ Application = "manage",
+ Code = "sys_pos_mgr_list",
+ IsDeleted = false,
+ Name = "鑱屼綅鍒楄〃",
+ OpenType = 0,
+ Permission = "sysPos:list",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914629L,
+ Application = "manage",
+ Code = "sys_pos_mgr_add",
+ IsDeleted = false,
+ Name = "鑱屼綅澧炲姞",
+ OpenType = 0,
+ Permission = "sysPos:add",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914630L,
+ Application = "manage",
+ Code = "sys_pos_mgr_edit",
+ IsDeleted = false,
+ Name = "鑱屼綅缂栬緫",
+ OpenType = 0,
+ Permission = "sysPos:edit",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914631L,
+ Application = "manage",
+ Code = "sys_pos_mgr_delete",
+ IsDeleted = false,
+ Name = "鑱屼綅鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysPos:delete",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914632L,
+ Application = "manage",
+ Code = "sys_pos_mgr_detail",
+ IsDeleted = false,
+ Name = "鑱屼綅璇︽儏",
+ OpenType = 0,
+ Permission = "sysPos:detail",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910563L,
+ Application = "manage",
+ Code = "auth_manager",
+ Component = "PageView",
+ Icon = "safety-certificate",
+ IsDeleted = false,
+ Name = "鏉冮檺绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/auth",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910564L,
+ Application = "manage",
+ Code = "sys_user_mgr",
+ Component = "system/user/index",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛绠$悊",
+ OpenType = 1,
+ Pid = 142307070910563L,
+ Pids = "[0],[142307070910563],",
+ Router = "/mgr_user",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910565L,
+ Application = "manage",
+ Code = "sys_user_mgr_page",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鏌ヨ",
+ OpenType = 0,
+ Permission = "sysUser:page",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910566L,
+ Application = "manage",
+ Code = "sys_user_mgr_edit",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛缂栬緫",
+ OpenType = 0,
+ Permission = "sysUser:edit",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910567L,
+ Application = "manage",
+ Code = "sys_user_mgr_add",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛澧炲姞",
+ OpenType = 0,
+ Permission = "sysUser:add",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910568L,
+ Application = "manage",
+ Code = "sys_user_mgr_delete",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysUser:delete",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910569L,
+ Application = "manage",
+ Code = "sys_user_mgr_detail",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛璇︽儏",
+ OpenType = 0,
+ Permission = "sysUser:detail",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910570L,
+ Application = "manage",
+ Code = "sys_user_mgr_export",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛瀵煎嚭",
+ OpenType = 0,
+ Permission = "sysUser:export",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910571L,
+ Application = "manage",
+ Code = "sys_user_mgr_selector",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛閫夋嫨鍣�",
+ OpenType = 0,
+ Permission = "sysUser:selector",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910572L,
+ Application = "manage",
+ Code = "sys_user_mgr_grant_role",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎺堟潈瑙掕壊",
+ OpenType = 0,
+ Permission = "sysUser:grantRole",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910573L,
+ Application = "manage",
+ Code = "sys_user_mgr_own_role",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎷ユ湁瑙掕壊",
+ OpenType = 0,
+ Permission = "sysUser:ownRole",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910574L,
+ Application = "manage",
+ Code = "sys_user_mgr_grant_data",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎺堟潈鏁版嵁",
+ OpenType = 0,
+ Permission = "sysUser:grantData",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910575L,
+ Application = "manage",
+ Code = "sys_user_mgr_own_data",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎷ユ湁鏁版嵁",
+ OpenType = 0,
+ Permission = "sysUser:ownData",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910576L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_info",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鏇存柊淇℃伅",
+ OpenType = 0,
+ Permission = "sysUser:updateInfo",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910577L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_pwd",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼瀵嗙爜",
+ OpenType = 0,
+ Permission = "sysUser:updatePwd",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910578L,
+ Application = "manage",
+ Code = "sys_user_mgr_change_status",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysUser:changeStatus",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910579L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_avatar",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼澶村儚",
+ OpenType = 0,
+ Permission = "sysUser:updateAvatar",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910580L,
+ Application = "manage",
+ Code = "sys_user_mgr_reset_pwd",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛閲嶇疆瀵嗙爜",
+ OpenType = 0,
+ Permission = "sysUser:resetPwd",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918777L,
+ Application = "manage",
+ Code = "sys_user_mgr_login",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鐧诲綍淇℃伅",
+ OpenType = 0,
+ Permission = "getLoginUser",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 1,
+ Type = 2,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914651L,
+ Application = "manage",
+ Code = "sys_role_mgr",
+ Component = "system/role/index",
+ IsDeleted = false,
+ Name = "瑙掕壊绠$悊",
+ OpenType = 1,
+ Pid = 142307070910563L,
+ Pids = "[0],[142307070910563],",
+ Router = "/role",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914652L,
+ Application = "manage",
+ Code = "sys_role_mgr_page",
+ IsDeleted = false,
+ Name = "瑙掕壊鏌ヨ",
+ OpenType = 0,
+ Permission = "sysRole:page",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914653L,
+ Application = "manage",
+ Code = "sys_role_mgr_add",
+ IsDeleted = false,
+ Name = "瑙掕壊澧炲姞",
+ OpenType = 0,
+ Permission = "sysRole:add",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914654L,
+ Application = "manage",
+ Code = "sys_role_mgr_edit",
+ IsDeleted = false,
+ Name = "瑙掕壊缂栬緫",
+ OpenType = 0,
+ Permission = "sysRole:edit",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914655L,
+ Application = "manage",
+ Code = "sys_role_mgr_delete",
+ IsDeleted = false,
+ Name = "瑙掕壊鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysRole:delete",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914656L,
+ Application = "manage",
+ Code = "sys_role_mgr_detail",
+ IsDeleted = false,
+ Name = "瑙掕壊璇︽儏",
+ OpenType = 0,
+ Permission = "sysRole:detail",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914657L,
+ Application = "manage",
+ Code = "sys_role_mgr_drop_down",
+ IsDeleted = false,
+ Name = "瑙掕壊涓嬫媺",
+ OpenType = 0,
+ Permission = "sysRole:dropDown",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914658L,
+ Application = "manage",
+ Code = "sys_role_mgr_grant_menu",
+ IsDeleted = false,
+ Name = "瑙掕壊鎺堟潈鑿滃崟",
+ OpenType = 0,
+ Permission = "sysRole:grantMenu",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914659L,
+ Application = "manage",
+ Code = "sys_role_mgr_own_menu",
+ IsDeleted = false,
+ Name = "瑙掕壊鎷ユ湁鑿滃崟",
+ OpenType = 0,
+ Permission = "sysRole:ownMenu",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914660L,
+ Application = "manage",
+ Code = "sys_role_mgr_grant_data",
+ IsDeleted = false,
+ Name = "瑙掕壊鎺堟潈鏁版嵁",
+ OpenType = 0,
+ Permission = "sysRole:grantData",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914661L,
+ Application = "manage",
+ Code = "sys_role_mgr_own_data",
+ IsDeleted = false,
+ Name = "瑙掕壊鎷ユ湁鏁版嵁",
+ OpenType = 0,
+ Permission = "sysRole:ownData",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914648L,
+ Application = "manage",
+ Code = "sys_menu_mgr_grant_tree",
+ IsDeleted = false,
+ Name = "鑿滃崟鎺堟潈鏍�",
+ OpenType = 0,
+ Permission = "sysMenu:treeForGrant",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914649L,
+ Application = "manage",
+ Code = "sys_menu_mgr_tree",
+ IsDeleted = false,
+ Name = "鑿滃崟鏍�",
+ OpenType = 0,
+ Permission = "sysMenu:tree",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914633L,
+ Application = "system",
+ Code = "sys_platform",
+ Component = "PageView",
+ Icon = "safety-certificate",
+ IsDeleted = false,
+ Name = "骞冲彴绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/platform",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914634L,
+ Application = "system",
+ Code = "sys_app_mgr",
+ Component = "system/app/index",
+ IsDeleted = false,
+ Name = "搴旂敤绠$悊",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/app",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914635L,
+ Application = "system",
+ Code = "sys_app_mgr_page",
+ IsDeleted = false,
+ Name = "搴旂敤鏌ヨ",
+ OpenType = 0,
+ Permission = "sysApp:page",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914636L,
+ Application = "system",
+ Code = "sys_app_mgr_list",
+ IsDeleted = false,
+ Name = "搴旂敤鍒楄〃",
+ OpenType = 0,
+ Permission = "sysApp:list",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914637L,
+ Application = "system",
+ Code = "sys_app_mgr_add",
+ IsDeleted = false,
+ Name = "搴旂敤澧炲姞",
+ OpenType = 0,
+ Permission = "sysApp:add",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914638L,
+ Application = "system",
+ Code = "sys_app_mgr_edit",
+ IsDeleted = false,
+ Name = "搴旂敤缂栬緫",
+ OpenType = 0,
+ Permission = "sysApp:edit",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914639L,
+ Application = "system",
+ Code = "sys_app_mgr_delete",
+ IsDeleted = false,
+ Name = "搴旂敤鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysApp:delete",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914640L,
+ Application = "system",
+ Code = "sys_app_mgr_detail",
+ IsDeleted = false,
+ Name = "搴旂敤璇︽儏",
+ OpenType = 0,
+ Permission = "sysApp:detail",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914641L,
+ Application = "system",
+ Code = "sys_app_mgr_set_as_default",
+ IsDeleted = false,
+ Name = "璁句负榛樿搴旂敤",
+ OpenType = 0,
+ Permission = "sysApp:setAsDefault",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914642L,
+ Application = "system",
+ Code = "sys_menu_mgr",
+ Component = "system/menu/index",
+ IsDeleted = false,
+ Name = "鑿滃崟绠$悊",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/menu",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914643L,
+ Application = "system",
+ Code = "sys_menu_mgr_list",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒楄〃",
+ OpenType = 0,
+ Permission = "sysMenu:list",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914644L,
+ Application = "system",
+ Code = "sys_menu_mgr_add",
+ IsDeleted = false,
+ Name = "鑿滃崟澧炲姞",
+ OpenType = 0,
+ Permission = "sysMenu:add",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914645L,
+ Application = "system",
+ Code = "sys_menu_mgr_edit",
+ IsDeleted = false,
+ Name = "鑿滃崟缂栬緫",
+ OpenType = 0,
+ Permission = "sysMenu:edit",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914646L,
+ Application = "system",
+ Code = "sys_menu_mgr_delete",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysMenu:delete",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914647L,
+ Application = "system",
+ Code = "sys_menu_mgr_detail",
+ IsDeleted = false,
+ Name = "鑿滃崟璇︽儏",
+ OpenType = 0,
+ Permission = "sysMenu:detail",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914650L,
+ Application = "system",
+ Code = "sys_menu_mgr_change",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒囨崲",
+ OpenType = 0,
+ Permission = "sysMenu:change",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 494834310545477L,
+ Application = "system",
+ Code = "sys_wmspdapower_mgr",
+ Component = "main/WmsPdaPower/index",
+ IsDeleted = false,
+ Name = "Pda鑿滃崟",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/WmsPdaPower",
+ Sort = 101,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914662L,
+ Application = "system",
+ Code = "system_tools",
+ Component = "PageView",
+ Icon = "euro",
+ IsDeleted = false,
+ Name = "寮�鍙戠鐞�",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/tools",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914663L,
+ Application = "system",
+ Code = "system_tools_config",
+ Component = "system/config/index",
+ IsDeleted = false,
+ Name = "绯荤粺閰嶇疆",
+ OpenType = 1,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/config",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914664L,
+ Application = "system",
+ Code = "system_tools_config_page",
+ IsDeleted = false,
+ Name = "閰嶇疆鏌ヨ",
+ OpenType = 0,
+ Permission = "sysConfig:page",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914665L,
+ Application = "system",
+ Code = "system_tools_config_list",
+ IsDeleted = false,
+ Name = "閰嶇疆鍒楄〃",
+ OpenType = 0,
+ Permission = "sysConfig:list",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914666L,
+ Application = "system",
+ Code = "system_tools_config_add",
+ IsDeleted = false,
+ Name = "閰嶇疆澧炲姞",
+ OpenType = 0,
+ Permission = "sysConfig:add",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914667L,
+ Application = "system",
+ Code = "system_tools_config_edit",
+ IsDeleted = false,
+ Name = "閰嶇疆缂栬緫",
+ OpenType = 0,
+ Permission = "sysConfig:edit",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914668L,
+ Application = "system",
+ Code = "system_tools_config_delete",
+ IsDeleted = false,
+ Name = "閰嶇疆鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysConfig:delete",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914669L,
+ Application = "system",
+ Code = "system_tools_config_detail",
+ IsDeleted = false,
+ Name = "閰嶇疆璇︽儏",
+ OpenType = 0,
+ Permission = "sysConfig:detail",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914678L,
+ Application = "system",
+ Code = "sys_dict_mgr",
+ Component = "system/dict/index",
+ IsDeleted = false,
+ Name = "瀛楀吀绠$悊",
+ OpenType = 1,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/dict",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914679L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_page",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鏌ヨ",
+ OpenType = 0,
+ Permission = "sysDictType:page",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914680L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_list",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鍒楄〃",
+ OpenType = 0,
+ Permission = "sysDictType:list",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914681L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_add",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷澧炲姞",
+ OpenType = 0,
+ Permission = "sysDictType:add",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914682L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_delete",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysDictType:delete",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914683L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_edit",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷缂栬緫",
+ OpenType = 0,
+ Permission = "sysDictType:edit",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914684L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_detail",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷璇︽儏",
+ OpenType = 0,
+ Permission = "sysDictType:detail",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914685L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_drop_down",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷涓嬫媺",
+ OpenType = 0,
+ Permission = "sysDictType:dropDown",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914686L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_change_status",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysDictType:changeStatus",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914687L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_page",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊兼煡璇�",
+ OpenType = 0,
+ Permission = "sysDictData:page",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918725L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_list",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎垪琛�",
+ OpenType = 0,
+ Permission = "sysDictData:list",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918726L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_add",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎鍔�",
+ OpenType = 0,
+ Permission = "sysDictData:add",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918727L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_delete",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎垹闄�",
+ OpenType = 0,
+ Permission = "sysDictData:delete",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918728L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_edit",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊肩紪杈�",
+ OpenType = 0,
+ Permission = "sysDictData:edit",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918729L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_detail",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊艰鎯�",
+ OpenType = 0,
+ Permission = "sysDictData:detail",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918730L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_change_status",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊间慨鏀圭姸鎬�",
+ OpenType = 0,
+ Permission = "sysDictData:changeStatus",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918731L,
+ Application = "system",
+ Code = "sys_swagger_mgr",
+ Component = "Iframe",
+ IsDeleted = false,
+ Link = "http://localhost:6677/swagger/",
+ Name = "鎺ュ彛鏂囨。",
+ OpenType = 2,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/swagger",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918732L,
+ Application = "manage",
+ Code = "sys_log_mgr",
+ Component = "PageView",
+ Icon = "read",
+ IsDeleted = false,
+ Name = "鏃ュ織绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/log",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918733L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log",
+ Component = "system/log/vislog/index",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/vislog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918734L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log_page",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysVisLog:page",
+ Pid = 142307070918733L,
+ Pids = "[0],[142307070918732],[142307070918733],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918735L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log_delete",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysVisLog:delete",
+ Pid = 142307070918733L,
+ Pids = "[0],[142307070918732],[142307070918733],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918736L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log",
+ Component = "system/log/oplog/index",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/oplog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918737L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log_page",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOpLog:page",
+ Pid = 142307070918736L,
+ Pids = "[0],[142307070918732],[142307070918736],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918738L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log_delete",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysOpLog:delete",
+ Pid = 142307070918736L,
+ Pids = "[0],[142307070918732],[142307070918736],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911739L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log",
+ Component = "system/log/exlog/index",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/exlog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911740L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log_page",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysExLog:page",
+ Pid = 142307070911739L,
+ Pids = "[0],[142307070918732],[142307070911739],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911741L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log_delete",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysExLog:delete",
+ Pid = 142307070911739L,
+ Pids = "[0],[142307070918732],[142307070911739],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918739L,
+ Application = "system",
+ Code = "sys_monitor_mgr",
+ Component = "PageView",
+ Icon = "deployment-unit",
+ IsDeleted = false,
+ Name = "绯荤粺鐩戞帶",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/monitor",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918740L,
+ Application = "system",
+ Code = "sys_monitor_mgr_machine_monitor",
+ Component = "system/machine/index",
+ IsDeleted = false,
+ Name = "鏈嶅姟鐩戞帶",
+ OpenType = 1,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/machine",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918741L,
+ Application = "system",
+ Code = "sys_monitor_mgr_machine_monitor_query",
+ IsDeleted = false,
+ Name = "鏈嶅姟鐩戞帶鏌ヨ",
+ OpenType = 0,
+ Permission = "sysMachine:query",
+ Pid = 142307070918740L,
+ Pids = "[0],[142307070918739],[142307070918740],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918742L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user",
+ Component = "system/onlineUser/index",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛",
+ OpenType = 1,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/onlineUser",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918743L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user_page",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOnlineUser:page",
+ Pid = 142307070918742L,
+ Pids = "[0],[142307070918739],[142307070918742],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918744L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user_force_exist",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛寮洪��",
+ OpenType = 0,
+ Permission = "sysOnlineUser:forceExist",
+ Pid = 142307070918742L,
+ Pids = "[0],[142307070918739],[142307070918742],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918745L,
+ Application = "system",
+ Code = "sys_monitor_mgr_druid",
+ Component = "Iframe",
+ IsDeleted = false,
+ Link = "http://localhost:82/druid/login.html",
+ Name = "鏁版嵁鐩戞帶",
+ OpenType = 2,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/druid",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918746L,
+ Application = "manage",
+ Code = "sys_notice",
+ Component = "PageView",
+ Icon = "sound",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/notice",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918747L,
+ Application = "manage",
+ Code = "sys_notice_mgr",
+ Component = "system/notice/index",
+ IsDeleted = false,
+ Name = "鍏憡绠$悊",
+ OpenType = 1,
+ Pid = 142307070918746L,
+ Pids = "[0],[142307070918746],",
+ Router = "/notice",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918748L,
+ Application = "manage",
+ Code = "sys_notice_mgr_page",
+ IsDeleted = false,
+ Name = "鍏憡鏌ヨ",
+ OpenType = 0,
+ Permission = "sysNotice:page",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918749L,
+ Application = "manage",
+ Code = "sys_notice_mgr_add",
+ IsDeleted = false,
+ Name = "鍏憡澧炲姞",
+ OpenType = 0,
+ Permission = "sysNotice:add",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918750L,
+ Application = "manage",
+ Code = "sys_notice_mgr_edit",
+ IsDeleted = false,
+ Name = "鍏憡缂栬緫",
+ OpenType = 0,
+ Permission = "sysNotice:edit",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918751L,
+ Application = "manage",
+ Code = "sys_notice_mgr_delete",
+ IsDeleted = false,
+ Name = "鍏憡鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysNotice:delete",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918752L,
+ Application = "manage",
+ Code = "sys_notice_mgr_detail",
+ IsDeleted = false,
+ Name = "鍏憡鏌ョ湅",
+ OpenType = 0,
+ Permission = "sysNotice:detail",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918753L,
+ Application = "manage",
+ Code = "sys_notice_mgr_changeStatus",
+ IsDeleted = false,
+ Name = "鍏憡淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysNotice:changeStatus",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918754L,
+ Application = "manage",
+ Code = "sys_notice_mgr_received",
+ Component = "system/noticeReceived/index",
+ IsDeleted = false,
+ Name = "宸叉敹鍏憡",
+ OpenType = 1,
+ Pid = 142307070918746L,
+ Pids = "[0],[142307070918746],",
+ Router = "/noticeReceived",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918755L,
+ Application = "manage",
+ Code = "sys_notice_mgr_received_page",
+ IsDeleted = false,
+ Name = "宸叉敹鍏憡鏌ヨ",
+ OpenType = 0,
+ Permission = "sysNotice:received",
+ Pid = 142307070918754L,
+ Pids = "[0],[142307070918746],[142307070918754],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918756L,
+ Application = "manage",
+ Code = "sys_file_mgr",
+ Component = "PageView",
+ Icon = "file",
+ IsDeleted = false,
+ Name = "鏂囦欢绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/file",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918757L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file",
+ Component = "system/file/index",
+ IsDeleted = false,
+ Name = "绯荤粺鏂囦欢",
+ OpenType = 1,
+ Pid = 142307070918756L,
+ Pids = "[0],[142307070918756],",
+ Router = "/file",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918758L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_page",
+ IsDeleted = false,
+ Name = "鏂囦欢鏌ヨ",
+ OpenType = 0,
+ Permission = "sysFileInfo:page",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918759L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_list",
+ IsDeleted = false,
+ Name = "鏂囦欢鍒楄〃",
+ OpenType = 0,
+ Permission = "sysFileInfo:list",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918760L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_delete",
+ IsDeleted = false,
+ Name = "鏂囦欢鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysFileInfo:delete",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918761L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_detail",
+ IsDeleted = false,
+ Name = "鏂囦欢璇︽儏",
+ OpenType = 0,
+ Permission = "sysFileInfo:detail",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918762L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload",
+ IsDeleted = false,
+ Name = "鏂囦欢涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:upload",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918763L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_download",
+ IsDeleted = false,
+ Name = "鏂囦欢涓嬭浇",
+ OpenType = 0,
+ Permission = "sysFileInfo:download",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918764L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_preview",
+ IsDeleted = false,
+ Name = "鍥剧墖棰勮",
+ OpenType = 0,
+ Permission = "sysFileInfo:preview",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922874L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_avatar",
+ IsDeleted = false,
+ Name = "澶村儚涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadAvatar",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922875L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_document",
+ IsDeleted = false,
+ Name = "鏂囨。涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadDocument",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922876L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_shop",
+ IsDeleted = false,
+ Name = "鍟嗗煄涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadShop",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918765L,
+ Application = "system",
+ Code = "sys_timers",
+ Component = "PageView",
+ Icon = "dashboard",
+ IsDeleted = false,
+ Name = "浠诲姟璋冨害",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/timers",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918766L,
+ Application = "system",
+ Code = "sys_timers_mgr",
+ Component = "system/timers/index",
+ IsDeleted = false,
+ Name = "浠诲姟绠$悊",
+ OpenType = 1,
+ Pid = 142307070918765L,
+ Pids = "[0],[142307070918765],",
+ Router = "/timers",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918767L,
+ Application = "system",
+ Code = "sys_timers_mgr_page",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鏌ヨ",
+ OpenType = 0,
+ Permission = "sysTimers:page",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918768L,
+ Application = "system",
+ Code = "sys_timers_mgr_list",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍒楄〃",
+ OpenType = 0,
+ Permission = "sysTimers:list",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918769L,
+ Application = "system",
+ Code = "sys_timers_mgr_detail",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟璇︽儏",
+ OpenType = 0,
+ Permission = "sysTimers:detail",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918770L,
+ Application = "system",
+ Code = "sys_timers_mgr_add",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟澧炲姞",
+ OpenType = 0,
+ Permission = "sysTimers:add",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918771L,
+ Application = "system",
+ Code = "sys_timers_mgr_delete",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysTimers:delete",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918772L,
+ Application = "system",
+ Code = "sys_timers_mgr_edit",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟缂栬緫",
+ OpenType = 0,
+ Permission = "sysTimers:edit",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918773L,
+ Application = "system",
+ Code = "sys_timers_mgr_get_action_classes",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍙墽琛屽垪琛�",
+ OpenType = 0,
+ Permission = "sysTimers:getActionClasses",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918774L,
+ Application = "system",
+ Code = "sys_timers_mgr_start",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍚姩",
+ OpenType = 0,
+ Permission = "sysTimers:start",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918775L,
+ Application = "system",
+ Code = "sys_timers_mgr_stop",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍏抽棴",
+ OpenType = 0,
+ Permission = "sysTimers:stop",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918776L,
+ Application = "system",
+ Code = "code_gen",
+ Component = "PageView",
+ Icon = "thunderbolt",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/codeGenerate",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918778L,
+ Application = "system",
+ Code = "low_code",
+ Component = "gen/lowCode/index",
+ IsDeleted = false,
+ Name = "琛ㄥ崟璁捐",
+ OpenType = 0,
+ Pid = 142307070918776L,
+ Pids = "[0],[142307070918776],",
+ Router = "/lowCode/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918779L,
+ Application = "system",
+ Code = "code_gen_gen",
+ Component = "gen/codeGenerate/index",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚",
+ OpenType = 0,
+ Pid = 142307070918776L,
+ Pids = "[0],[142307070918776],",
+ Router = "/codeGenerate/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922870L,
+ Application = "system",
+ Code = "form_design",
+ Component = "system/formDesign/index",
+ IsDeleted = false,
+ Name = "琛ㄥ崟璁捐",
+ OpenType = 0,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285599875018821L,
+ Application = "system",
+ Code = "sys_formDesign",
+ Component = "PageView",
+ Icon = "snippets",
+ IsDeleted = false,
+ Name = "琛ㄥ崟绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/formDesign",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285599875018823L,
+ Application = "system",
+ Code = "sys_formDesign_list",
+ Component = "system/formDesign/list",
+ IsDeleted = false,
+ Name = "琛ㄥ崟鍒楄〃",
+ OpenType = 1,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/list",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285635743518789L,
+ Application = "system",
+ Code = "sys_formDesign_edit",
+ Component = "system/formDesign/edit",
+ IsDeleted = false,
+ Name = "淇敼琛ㄥ崟",
+ OpenType = 1,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/edit",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640475689029L,
+ Application = "system",
+ Code = "btn_formDesign_edit",
+ Component = "",
+ IsDeleted = false,
+ Name = "淇敼琛ㄥ崟",
+ OpenType = 0,
+ Permission = "formmanager:edit",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640599859269L,
+ Application = "system",
+ Code = "btn_formDesign_delete",
+ Component = "",
+ IsDeleted = false,
+ Name = "鍒犻櫎琛ㄥ崟",
+ OpenType = 0,
+ Permission = "formmanager:delete",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640740945989L,
+ Application = "system",
+ Code = "btn_formDesign_page",
+ Component = "",
+ IsDeleted = false,
+ Name = "琛ㄥ崟鍒楄〃",
+ OpenType = 0,
+ Permission = "formmanager:page",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 355687925174341L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr",
+ Component = "main/WmsContainer/index",
+ Icon = "border",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmscontainer",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178437L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_page",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsContainer:page",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178438L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_detail",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsContainer:detail",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178439L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_add",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsContainer:add",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925182533L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_delete",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsContainer:delete",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925182534L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_edit",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsContainer:edit",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792178757L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr",
+ Component = "main/WmsArea/index",
+ Icon = "appstore",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsarea",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792182853L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_page",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsArea:page",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792182854L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsArea:detail",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186949L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_add",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsArea:add",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186950L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsArea:delete",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186951L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsArea:edit",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496985669L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr",
+ Component = "main/WmsPlace/index",
+ Icon = "table",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsplace",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496989765L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_page",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsPlace:page",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993861L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsPlace:detail",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993862L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_add",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsPlace:add",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993863L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsPlace:delete",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993864L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsPlace:edit",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042511429L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr",
+ Component = "main/WmsMaterial/index",
+ Icon = "barcode",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsmaterial",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042515525L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_page",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsMaterial:page",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519621L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_detail",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsMaterial:detail",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519622L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_add",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsMaterial:add",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519623L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_delete",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsMaterial:delete",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519624L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_edit",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsMaterial:edit",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690923847749L,
+ Application = "warejob",
+ Code = "BindEntrance",
+ Component = "main/BindEntrance/index",
+ Icon = "logout",
+ IsDeleted = false,
+ Name = "缁勭洏鍏ュ簱",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/BindEntrance",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355691450822725L,
+ Application = "warejob",
+ Code = "ExWarehouse",
+ Component = "main/ExWarehouse/index",
+ Icon = "login",
+ IsDeleted = false,
+ Name = "鍑哄簱绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/ExWarehouse",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355691891650629L,
+ Application = "warejob",
+ Code = "WmsTask",
+ Component = "main/WmsTask/index",
+ Icon = "hourglass",
+ IsDeleted = false,
+ Name = "浠诲姟绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/WmsTask",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355692253458501L,
+ Application = "warecount",
+ Code = "LocationView",
+ Component = "main/LocationView/index",
+ Icon = "hdd",
+ IsDeleted = false,
+ Name = "搴撲綅瑙嗗浘",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/LocationView",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355692487622725L,
+ Application = "warecount",
+ Code = "View_AccessDetails",
+ Component = "main/View_AccessDetails/index",
+ Icon = "laptop",
+ IsDeleted = false,
+ Name = "鍑哄叆搴撹褰�",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/View_AccessDetails",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310358700101L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr",
+ Component = "main/LesProductionline/index",
+ Icon = "gateway",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lesproductionline",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359138373L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_page",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "LesProductionline:page",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359146565L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_detail",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "LesProductionline:detail",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359146566L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_add",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "LesProductionline:add",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359150661L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_delete",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesProductionline:delete",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359154757L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_edit",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "LesProductionlinel:edit",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866703941L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr",
+ Component = "main/LesStation/index",
+ Icon = "team",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lesstation",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866744901L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_page",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "LesStation:page",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866748997L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_detail",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "LesStation:detail",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753093L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_add",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "LesStation:add",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753094L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_delete",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesStation:delete",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753095L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_edit",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "LesStation:edit",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166334533L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr",
+ Component = "main/LesTakematerials/index",
+ Icon = "deployment-unit",
+ IsDeleted = false,
+ Name = "鍙枡绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lestakematerials",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166449221L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_page",
+ IsDeleted = false,
+ Name = "鍙枡鏌ヨ",
+ OpenType = 0,
+ Permission = "LesTakematerials:page",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166457413L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_detail",
+ IsDeleted = false,
+ Name = "鍙枡璇︽儏",
+ OpenType = 0,
+ Permission = "LesTakematerials:detail",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461509L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_add",
+ IsDeleted = false,
+ Name = "鍙枡澧炲姞",
+ OpenType = 0,
+ Permission = "LesTakematerials:add",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461510L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_delete",
+ IsDeleted = false,
+ Name = "鍙枡鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesTakematerials:delete",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461511L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_edit",
+ IsDeleted = false,
+ Name = "鍙枡缂栬緫",
+ OpenType = 0,
+ Permission = "LesTakematerials:edit",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902500933L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr",
+ Component = "main/WmsMaterialStock/index",
+ Icon = "vertical-left",
+ IsDeleted = false,
+ Name = "搴撳瓨淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsmaterialstock",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902545989L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_page",
+ IsDeleted = false,
+ Name = "搴撳瓨鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:page",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902550085L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撳瓨璇︽儏",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:detail",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902554181L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_add",
+ IsDeleted = false,
+ Name = "搴撳瓨澧炲姞",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:add",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902558277L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撳瓨鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:delete",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902558278L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撳瓨缂栬緫",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:edit",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysNotice", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CancelTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎾ゅ洖鏃堕棿");
+
+ b.Property<string>("Content")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍐呭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("PublicOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鍙戝竷鏈烘瀯Id");
+
+ b.Property<string>("PublicOrgName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍙戝竷鏈烘瀯鍚嶇О");
+
+ b.Property<DateTimeOffset?>("PublicTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍙戝竷鏃堕棿");
+
+ b.Property<long>("PublicUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍙戝竷浜篒d");
+
+ b.Property<string>("PublicUserName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍙戝竷浜哄鍚�");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("Title")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏍囬");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_notice");
+
+ b.HasComment("閫氱煡鍏憡琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysNoticeUser", b =>
+ {
+ b.Property<long>("NoticeId")
+ .HasColumnType("bigint")
+ .HasComment("閫氱煡鍏憡Id");
+
+ b.Property<long>("UserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<int>("ReadStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("ReadTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("闃呰鏃堕棿");
+
+ b.HasKey("NoticeId", "UserId");
+
+ b.ToTable("sys_notice_user");
+
+ b.HasComment("閫氱煡鍏憡鐢ㄦ埛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<string>("Contacts")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鑱旂郴浜�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("OrgType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("Tel")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢佃瘽");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_org");
+
+ b.HasComment("缁勭粐鏈烘瀯琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910539L,
+ Code = "wbgf",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃",
+ Pid = 0L,
+ Pids = "[0],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910540L,
+ Code = "wbgf_sh",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)",
+ Pid = 142307070910539L,
+ Pids = "[0],[142307070910539],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910541L,
+ Code = "wbgf_cq",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)",
+ Pid = 142307070910539L,
+ Pids = "[0],[142307070910539],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910542L,
+ Code = "wbgf_sh_yfb",
+ IsDeleted = false,
+ Name = "鐮斿彂閮�",
+ Pid = 142307070910540L,
+ Pids = "[0],[142307070910539],[142307070910540],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910543L,
+ Code = "wbgf_sh_qhb",
+ IsDeleted = false,
+ Name = "浼佸垝閮�",
+ Pid = 142307070910540L,
+ Pids = "[0],[142307070910539],[142307070910540],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910544L,
+ Code = "wbgf_cq_scb",
+ IsDeleted = false,
+ Name = "甯傚満閮�",
+ Pid = 142307070910541L,
+ Pids = "[0],[142307070910539],[142307070910541],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910545L,
+ Code = "wbgf_cq_cwb",
+ IsDeleted = false,
+ Name = "璐㈠姟閮�",
+ Pid = 142307070910541L,
+ Pids = "[0],[142307070910539],[142307070910541],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910546L,
+ Code = "wbgf_cq_scb",
+ IsDeleted = false,
+ Name = "甯傚満閮ㄤ簩閮�",
+ Pid = 142307070910544L,
+ Pids = "[0],[142307070910539],[142307070910541],[142307070910544],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_pos");
+
+ b.HasComment("鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910547L,
+ Code = "zjl",
+ IsDeleted = false,
+ Name = "鎬荤粡鐞�",
+ Remark = "鎬荤粡鐞�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910548L,
+ Code = "fzjl",
+ IsDeleted = false,
+ Name = "鍓�荤粡鐞�",
+ Remark = "鍓�荤粡鐞�",
+ Sort = 101,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910549L,
+ Code = "bmjl",
+ IsDeleted = false,
+ Name = "閮ㄩ棬缁忕悊",
+ Remark = "閮ㄩ棬缁忕悊",
+ Sort = 102,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910550L,
+ Code = "gzry",
+ IsDeleted = false,
+ Name = "宸ヤ綔浜哄憳",
+ Remark = "宸ヤ綔浜哄憳",
+ Sort = 103,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DataScopeType")
+ .HasColumnType("int")
+ .HasComment("鏁版嵁鑼冨洿绫诲瀷");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("RoleType")
+ .HasColumnType("int")
+ .HasComment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_role");
+
+ b.HasComment("瑙掕壊琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910554L,
+ Code = "sys_manager_role",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊鍛�",
+ Remark = "绯荤粺绠$悊鍛�",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 356094617575493L,
+ Code = "admin",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "绠$悊鍛�",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 358509609758789L,
+ Code = "ware",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "浠撳簱鐢ㄦ埛",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 358536344862789L,
+ Code = "iWare",
+ DataScopeType = 5,
+ IsDeleted = false,
+ Name = "鐮斿彂鐢ㄦ埛",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.HasKey("SysRoleId", "SysOrgId");
+
+ b.HasIndex("SysOrgId");
+
+ b.ToTable("sys_role_data_scope");
+
+ b.HasComment("瑙掕壊鏁版嵁鑼冨洿琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("SysMenuId")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟Id");
+
+ b.HasKey("SysRoleId", "SysMenuId");
+
+ b.HasIndex("SysMenuId");
+
+ b.ToTable("sys_role_menu");
+
+ b.HasComment("瑙掕壊鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysTimer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Cron")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("Cron琛ㄨ揪寮�");
+
+ b.Property<bool>("DoOnce")
+ .HasColumnType("bit")
+ .HasComment("鍙墽琛屼竴娆�");
+
+ b.Property<int>("ExecuteType")
+ .HasColumnType("int")
+ .HasComment("鎵ц绫诲瀷");
+
+ b.Property<string>("Headers")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("Headers");
+
+ b.Property<int?>("Interval")
+ .HasColumnType("int")
+ .HasComment("闂撮殧鏃堕棿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("JobName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浠诲姟鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<string>("RequestParameters")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璇锋眰鍙傛暟");
+
+ b.Property<int>("RequestType")
+ .HasColumnType("int")
+ .HasComment("璇锋眰绫诲瀷");
+
+ b.Property<string>("RequestUrl")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("璇锋眰url");
+
+ b.Property<bool>("StartNow")
+ .HasColumnType("bit")
+ .HasComment("绔嬪嵆鎵ц");
+
+ b.Property<int>("TimerType")
+ .HasColumnType("int")
+ .HasComment("瀹氭椂鍣ㄧ被鍨�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_timer");
+
+ b.HasComment("瀹氭椂浠诲姟琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910556L,
+ DoOnce = false,
+ ExecuteType = 1,
+ Interval = 5,
+ IsDeleted = false,
+ JobName = "鐧惧害api",
+ Remark = "鎺ュ彛API",
+ RequestType = 2,
+ RequestUrl = "https://www.baidu.com",
+ StartNow = false,
+ TimerType = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Account")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璐﹀彿");
+
+ b.Property<int>("AdminType")
+ .HasColumnType("int")
+ .HasComment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3");
+
+ b.Property<string>("Avatar")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("澶村儚");
+
+ b.Property<DateTimeOffset?>("Birthday")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鐢熸棩");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Email")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("閭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("LastLoginIp")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏈�鍚庣櫥褰旾P");
+
+ b.Property<DateTimeOffset?>("LastLoginTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏈�鍚庣櫥褰曟椂闂�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("濮撳悕");
+
+ b.Property<string>("NickName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏄电О");
+
+ b.Property<string>("Password")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀵嗙爜");
+
+ b.Property<string>("Phone")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鎵嬫満");
+
+ b.Property<long>("ProductionlineId")
+ .HasColumnType("bigint");
+
+ b.Property<int>("Sex")
+ .HasColumnType("int")
+ .HasComment("鎬у埆-鐢穇1銆佸コ_2");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2");
+
+ b.Property<string>("Tel")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢佃瘽");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_user");
+
+ b.HasComment("鐢ㄦ埛琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910551L,
+ Account = "superAdmin",
+ AdminType = 1,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "瓒呯骇绠$悊鍛�",
+ NickName = "superAdmin",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "18020030720",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 142307070910552L,
+ Account = "admin",
+ AdminType = 2,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊鍛�",
+ NickName = "admin",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "18020030720",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 358533464608837L,
+ Account = "warehouse",
+ AdminType = 3,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "浠撳簱鐢ㄦ埛",
+ NickName = "warehouse",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "13869156666",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 358536045723717L,
+ Account = "admin1",
+ AdminType = 3,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "鐮斿彂閮�",
+ NickName = "admin1",
+ Password = "f379eaf3c831b04de153469d1bec345e",
+ Phone = "13869156666",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+ {
+ b.Property<long>("SysUserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.HasKey("SysUserId", "SysOrgId");
+
+ b.HasIndex("SysOrgId");
+
+ b.ToTable("sys_user_data_scope");
+
+ b.HasComment("鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+ b.HasData(
+ new
+ {
+ SysUserId = 142307070910551L,
+ SysOrgId = 142307070910540L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+ {
+ b.Property<long>("SysUserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.HasKey("SysUserId", "SysRoleId");
+
+ b.HasIndex("SysRoleId");
+
+ b.ToTable("sys_user_role");
+
+ b.HasComment("鐢ㄦ埛瑙掕壊琛�");
+
+ b.HasData(
+ new
+ {
+ SysUserId = 142307070910552L,
+ SysRoleId = 142307070910554L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent2", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<decimal>("HasMoney")
+ .HasColumnType("decimal(10,3)")
+ .HasColumnName("HasMoney")
+ .HasComment("闆惰姳閽�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students2");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent3", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<decimal>("HasMoney")
+ .HasColumnType("decimal(10,3)")
+ .HasColumnName("HasMoney")
+ .HasComment("闆惰姳閽�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students3");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AreaDesc")
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)")
+ .HasComment("鎻忚堪");
+
+ b.Property<string>("AreaName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("AreaStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<int>("AreaType")
+ .HasColumnType("int")
+ .HasComment("鍒嗙被");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsSteel")
+ .HasColumnType("bit")
+ .HasComment("鏄惁涓洪挗骞冲彴");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_area");
+
+ b.HasComment("搴撳尯琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AssetNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧勪骇缂栧彿");
+
+ b.Property<int>("ContainerCategory")
+ .HasColumnType("int")
+ .HasComment("鎵樼洏鍒嗙被");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栧彿");
+
+ b.Property<int>("ContainerStatus")
+ .HasColumnType("int")
+ .HasComment("鎵樼洏鐘舵��");
+
+ b.Property<int>("ContainerType")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("ErpNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("Erp鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("IsVirtually")
+ .HasColumnType("int")
+ .HasComment("鏄惁铏氭嫙");
+
+ b.Property<decimal>("LimitHeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愰珮");
+
+ b.Property<decimal>("LimitLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愰暱");
+
+ b.Property<decimal>("LimitWidth")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愬");
+
+ b.Property<decimal>("MaxWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("杞介噸涓婇檺");
+
+ b.Property<long>("ParentContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鐖舵墭鐩業d");
+
+ b.Property<decimal>("SpecHeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("楂樺害");
+
+ b.Property<decimal>("SpecLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闀垮害");
+
+ b.Property<decimal>("SpecWidth")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹藉害");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_container");
+
+ b.HasComment("鎵樼洏淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsContainerPlace", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<int>("ContainerPlaceStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<long>("PlaceId")
+ .HasColumnType("bigint")
+ .HasComment("搴撲綅Id");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_containerplace");
+
+ b.HasComment("鎵樼洏搴撲綅鍏崇郴琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Creator")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒涘缓浜�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_dumporder");
+
+ b.HasComment("杞偍鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闀垮害");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("搴撳瓨椤圭洰缂栫爜");
+
+ b.Property<string>("Projectcode_To")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂板簱瀛橀」鐩紪鐮�");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_dumporder_details");
+
+ b.HasComment("杞偍鍗曟槑缁�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("GoodsReturnStatus")
+ .HasColumnType("int")
+ .HasComment("閫�璐х姸鎬�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_goodsreturnorder");
+
+ b.HasComment("閫�璐у崟");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_WMS")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎵规鍙�");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("閫�璐х姸鎬�");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_goodsreturnorder_details");
+
+ b.HasComment("閫�璐у崟鎹槑缁嗚〃");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("BindQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("缁勭洏鏁伴噺");
+
+ b.Property<int>("BindStatus")
+ .HasColumnType("int")
+ .HasComment("缁勭洏鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<long>("MaterialId")
+ .HasColumnType("bigint")
+ .HasComment("鐗╂枡Id");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍗曞彿");
+
+ b.Property<decimal>("SampleQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶芥鏁伴噺");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaterialId");
+
+ b.ToTable("wms_history_materialcontainer");
+
+ b.HasComment("鐗╂枡鎵樼洏鍘嗗彶琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AreaIds")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("搴撳尯Ids");
+
+ b.Property<string>("AreaNameParameter")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("搴撳尯鍙傛暟");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Description")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("鎻忚堪");
+
+ b.Property<int>("InspectionMethod")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡妫�楠�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<int>("MaterialType")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡绫诲埆");
+
+ b.Property<string>("MaterialUnit")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍗曚綅");
+
+ b.Property<decimal>("MaxImumqty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶у瓨閲�");
+
+ b.Property<decimal>("MaxstorageAge")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶у簱榫�");
+
+ b.Property<decimal>("MinstorageAge")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�灏忓簱榫�");
+
+ b.Property<decimal>("Safeqty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹夊叏瀛橀噺");
+
+ b.Property<string>("StationIds")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("宸ヤ綔鍖篒ds");
+
+ b.Property<string>("StationNameParameter")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("宸ヤ綔鍖哄弬鏁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_material");
+
+ b.HasComment("鐗╂枡淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("BindQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("缁勭洏鏁伴噺");
+
+ b.Property<int>("BindStatus")
+ .HasColumnType("int")
+ .HasComment("缁勭洏鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<long>("MaterialId")
+ .HasColumnType("bigint")
+ .HasComment("鐗╂枡Id");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<long>("OrderDetailsId")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁鏄庣粏Id");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍗曞彿");
+
+ b.Property<decimal>("SampleQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶芥鏁伴噺");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<long?>("WmsContainerId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaterialId");
+
+ b.HasIndex("WmsContainerId");
+
+ b.ToTable("wms_materialcontainer");
+
+ b.HasComment("鐗╂枡鎵樼洏鍏崇郴琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialStock", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("搴撳尯Id");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("High")
+ .HasColumnType("int")
+ .HasComment("楂�");
+
+ b.Property<int>("InspectionMethod")
+ .HasColumnType("int")
+ .HasComment("妫�楠屾柟寮�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("Long")
+ .HasColumnType("int")
+ .HasComment("闀�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<int>("MaterialType")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡绫诲埆");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("QuantityOfBill")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("璐﹂潰鏁伴噺");
+
+ b.Property<int>("Source")
+ .HasColumnType("int")
+ .HasComment("鍏ュ簱鏉ユ簮");
+
+ b.Property<decimal>("StockNumber")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹炵墿搴撳瓨鏁�");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<int>("UnitNo")
+ .HasColumnType("int")
+ .HasComment("鍗曚綅缂栧彿");
+
+ b.Property<int>("UnitType")
+ .HasColumnType("int")
+ .HasComment("鍗曚綅绫诲埆");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int")
+ .HasComment("瀹�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_materialstock");
+
+ b.HasComment("搴撳瓨琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMerchantinfo", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MerchantAddress")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鍦板潃");
+
+ b.Property<string>("MerchantAttribute")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢灞炴��");
+
+ b.Property<string>("MerchantContact")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鑱旂郴浜�");
+
+ b.Property<string>("MerchantEmail")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢閭");
+
+ b.Property<string>("MerchantFax")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢浼犵湡");
+
+ b.Property<int>("MerchantGrade")
+ .HasColumnType("int")
+ .HasComment("瀹㈠晢绛夌骇");
+
+ b.Property<string>("MerchantName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鍚嶇О");
+
+ b.Property<string>("MerchantNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢缂栧彿");
+
+ b.Property<string>("MerchantPhone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鐢佃瘽");
+
+ b.Property<string>("MerchantShort")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢绠�绉�");
+
+ b.Property<string>("MerchantTmt")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢琛屼笟");
+
+ b.Property<int>("MerchantType")
+ .HasColumnType("int")
+ .HasComment("瀹㈠晢鍒嗙被");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_merchantinfo");
+
+ b.HasComment("瀹㈠晢淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Majorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("涓撲笟");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<string>("SourceBillNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<int>("TradeMode")
+ .HasColumnType("int")
+ .HasComment("璐告槗鏂瑰紡");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_order");
+
+ b.HasComment("鍗曟嵁琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<int>("InspectionResults")
+ .HasColumnType("int")
+ .HasComment("妫�楠岀粨鏋�");
+
+ b.Property<decimal>("InventoryQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍏ュ簱鏁伴噺");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("SpecialNeeds")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗规畩瑕佹眰");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_order_details");
+
+ b.HasComment("鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderType", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesWorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_order_type");
+
+ b.HasComment("鍗曟嵁绫诲瀷缁存姢琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Clolor")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("棰滆壊");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Icon")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍥炬爣");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍚嶇О");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_pdapower");
+
+ b.HasComment("PDA鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅瀵瑰簲AGV缂栫爜");
+
+ b.Property<int>("Aisle")
+ .HasColumnType("int")
+ .HasComment("宸烽亾");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("鎵�鍦ㄥ簱鍖�");
+
+ b.Property<int>("ColumnNo")
+ .HasColumnType("int")
+ .HasComment("鍒�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DeepcellNo")
+ .HasColumnType("int")
+ .HasComment("杩涙繁鍙�");
+
+ b.Property<int>("EmptyContainer")
+ .HasColumnType("int")
+ .HasComment("鏄惁绌烘墭");
+
+ b.Property<decimal>("Height")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅楂樺害");
+
+ b.Property<int>("HeightLevel")
+ .HasColumnType("int")
+ .HasComment("搴撲綅楂樺害灞炴��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("Islock")
+ .HasColumnType("int")
+ .HasComment("鏄惁閿佸畾");
+
+ b.Property<int>("LayerNo")
+ .HasColumnType("int")
+ .HasComment("灞�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅闀垮害");
+
+ b.Property<int>("Line")
+ .HasColumnType("int")
+ .HasComment("绾垮彿");
+
+ b.Property<int>("LogicalName")
+ .HasColumnType("int")
+ .HasComment("閫昏緫鍖哄煙");
+
+ b.Property<decimal>("MaxWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶ф壙閲�");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<int>("PlaceStatus")
+ .HasColumnType("int")
+ .HasComment("搴撲綅鐘舵��");
+
+ b.Property<string>("PositionnoForSrm")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆");
+
+ b.Property<int>("Priority")
+ .HasColumnType("int")
+ .HasComment("浼樺厛绾�");
+
+ b.Property<int>("RowNo")
+ .HasColumnType("int")
+ .HasComment("鎺�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<decimal>("Width")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅瀹藉害");
+
+ b.Property<string>("Xzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅X鍧愭爣");
+
+ b.Property<string>("Yzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅Y鍧愭爣");
+
+ b.Property<string>("Zzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅Z鍧愭爣");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AreaId");
+
+ b.ToTable("wms_place");
+
+ b.HasComment("搴撲綅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<int>("InspectionStatus")
+ .HasColumnType("int")
+ .HasComment("鎶ユ鐘舵��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Majorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("涓撲笟");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("鏀惰揣鐘舵��");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<string>("SourceBillNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<int>("TradeMode")
+ .HasColumnType("int")
+ .HasComment("璐告槗鏂瑰紡");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WMSNO")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鏀惰揣鍗曞彿");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_receiptorder");
+
+ b.HasComment("鏀惰揣鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<decimal>("DeliveryQty")
+ .HasMaxLength(50)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("閫佽揣鏁伴噺");
+
+ b.Property<int>("InspectionResultsEnum")
+ .HasColumnType("int")
+ .HasComment("鎶ユ缁撴灉");
+
+ b.Property<int>("InspectionStatus")
+ .HasColumnType("int")
+ .HasComment("鎶ユ鐘舵��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("ReceivedQty")
+ .HasMaxLength(50)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏀惰揣鏁伴噺");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("鏀惰揣鐘舵��");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("SpecialNeeds")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗规畩瑕佹眰");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_receiptorder_details");
+
+ b.HasComment("鏀惰揣鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsSortOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("ActualQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹為檯鍒嗘嫞鏁�");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹瑰櫒缂栧彿");
+
+ b.Property<string>("ContainerOrderNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒嗘嫞缁勭洏鍗曞彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OrderDetailID")
+ .HasColumnType("bigint");
+
+ b.Property<string>("OrderNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏉ユ簮鍗曞彿");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<decimal>("SortQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍒嗘嫞鏁�");
+
+ b.Property<int>("SortStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_sortorder");
+
+ b.HasComment("鍒嗘嫞琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("BenefitingDepartcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("閫�鏂欑敵璇锋棩鏈�");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<string>("ConstructionTeamID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂藉伐闃�");
+
+ b.Property<string>("CostCenterID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏀剁泭閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FI_Client_Analysis_H")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("瀹㈡埛");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("MoveType")
+ .HasColumnType("int")
+ .HasComment("浜嬪姟绫诲瀷");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("PickerID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗗彇浜�");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WBSElementcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗙敤椤圭洰鍙�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_stockreturn_order");
+
+ b.HasComment("閫�鏂欏叆搴撳崟");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<decimal>("Number")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("浠舵暟");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_stockreturn_order_details");
+
+ b.HasComment("閫�鏂欏叆搴撳崟璇︽儏");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("BenefitingDepartcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("棰嗘枡鍗曠敵璇锋棩鏈�");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<string>("ConstructionTeamID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂藉伐闃�");
+
+ b.Property<string>("CostCenterID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍙楃泭閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FI_Client_Analysis_H")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("瀹㈡埛");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("IsInnerCompany")
+ .HasColumnType("bigint")
+ .HasComment("鏄惁鍏徃闂翠氦鏄�");
+
+ b.Property<string>("MoveType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("浜嬪姟绫诲瀷");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("PickerID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡浜�");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WBSElementcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗙敤椤圭洰鍙�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_takematerialorder");
+
+ b.HasComment("棰嗘枡鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("DistributeQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嬪彂鏁伴噺");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<decimal>("Number")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("浠舵暟");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_takematerial_orderdetail");
+
+ b.HasComment("鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTask", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Aisle")
+ .HasColumnType("int")
+ .HasComment("宸烽亾");
+
+ b.Property<string>("AreaName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳尯鍚嶇О");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Description")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍏ュ簱鏉ユ簮");
+
+ b.Property<int>("DodeviceId")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鎵ц鍫嗗灈鏈篒d");
+
+ b.Property<string>("DodevicenodeId")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁惧鎵ц鑺傜偣Id");
+
+ b.Property<int>("Dodevicetype")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("璁惧绫诲瀷");
+
+ b.Property<int>("EmptyContainer")
+ .HasColumnType("int")
+ .HasComment("鏄惁绌烘墭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsRead")
+ .HasColumnType("bit")
+ .HasComment("WCS鏄惁鍙互璇诲彇");
+
+ b.Property<long>("OrderDetailsId")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁鏄庣粏Id");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("缁勭洏璁板綍鍗曟嵁鍙�");
+
+ b.Property<int>("SendTimes")
+ .HasColumnType("int")
+ .HasComment("鍙戦�佹鏁�");
+
+ b.Property<string>("SourcePlace")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰搴撲綅");
+
+ b.Property<int>("TaskDodeviceStatus")
+ .HasColumnType("int")
+ .HasComment("浠诲姟璁惧鐘舵��");
+
+ b.Property<int>("TaskLevel")
+ .HasColumnType("int")
+ .HasComment("浠诲姟绾у埆");
+
+ b.Property<int>("TaskModel")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鏂瑰紡");
+
+ b.Property<string>("TaskNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浠诲姟鍙�");
+
+ b.Property<int>("TaskStatus")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鐘舵��");
+
+ b.Property<int>("TaskType")
+ .HasColumnType("int")
+ .HasComment("浠诲姟绫诲瀷");
+
+ b.Property<string>("ToPlace")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐩爣搴撲綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_task");
+
+ b.HasComment("浠诲姟绠$悊琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsWarehouseEntrance", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("AffiliatedRoadway")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炲贩閬�");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesWorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_warehouse_entrance");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FormDesign")
+ .HasColumnType("text")
+ .HasComment("鍔ㄦ�佽〃鍗�");
+
+ b.Property<int>("FormDesignType")
+ .HasColumnType("int")
+ .HasComment("鍔ㄦ�佽〃鍗曠被鍨�");
+
+ b.Property<string>("GenerateType")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢熸垚鏂瑰紡");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("ModuleName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_low_code_module");
+
+ b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+ {
+ b.Property<Guid>("Id")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("绫诲悕");
+
+ b.Property<string>("Control_Key")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢Key");
+
+ b.Property<string>("Control_Label")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢鍚嶇О");
+
+ b.Property<string>("Control_Model")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢瀛楁");
+
+ b.Property<string>("Control_Type")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢瀛楁");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DbParam")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟");
+
+ b.Property<string>("DbTypeName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("鏁版嵁绫诲瀷");
+
+ b.Property<string>("DtoTypeName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("浼犲叆鏁版嵁绫诲瀷");
+
+ b.Property<string>("FieldName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("瀛楁鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool?>("IsRequired")
+ .HasColumnType("bit")
+ .HasComment("鏄惁蹇呭~");
+
+ b.Property<string>("QueryType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏌ヨ鏂瑰紡");
+
+ b.Property<bool?>("QueryWhether")
+ .HasColumnType("bit")
+ .HasComment("鏄惁鏄煡璇�");
+
+ b.Property<long>("SysLowCodeId")
+ .HasColumnType("bigint");
+
+ b.Property<string>("TableDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("琛ㄦ弿杩�");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("琛ㄥ悕");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<bool?>("WhetherAddUpdate")
+ .HasColumnType("bit")
+ .HasComment("澧炴敼");
+
+ b.Property<bool?>("WhetherOrderBy")
+ .HasColumnType("bit")
+ .HasComment("鎺掑簭");
+
+ b.Property<bool?>("WhetherTable")
+ .HasColumnType("bit")
+ .HasComment("鍒楄〃鏄剧ず");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SysLowCodeId");
+
+ b.ToTable("sys_low_code_module_database");
+
+ b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.SysCodeModular", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FormDesignJson")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍔ㄦ�佽〃鍗�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_modular");
+
+ b.HasComment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsPdaPower", "WmsPdaPower")
+ .WithMany("WmsRolePdaMenus")
+ .HasForeignKey("PdaMenuId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("WmsRolePdaMenus")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysRole");
+
+ b.Navigation("WmsPdaPower");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+ .WithMany("LesEntrance")
+ .HasForeignKey("AreaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsArea");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysDictType", "SysDictType")
+ .WithMany("SysDictDatas")
+ .HasForeignKey("TypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysDictType");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+ .WithMany()
+ .HasForeignKey("SysEmpId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany()
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+ .WithMany()
+ .HasForeignKey("SysPosId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysEmp");
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+ .WithMany("SysEmpPos")
+ .HasForeignKey("SysEmpId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+ .WithMany("SysEmpPos")
+ .HasForeignKey("SysPosId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysEmp");
+
+ b.Navigation("SysPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany("SysRoleDataScopes")
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysRoleDataScopes")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysRole");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysMenu", "SysMenu")
+ .WithMany("SysRoleMenus")
+ .HasForeignKey("SysMenuId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysRoleMenus")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysMenu");
+
+ b.Navigation("SysRole");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany("SysUserDataScopes")
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+ .WithMany("SysUserDataScopes")
+ .HasForeignKey("SysUserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysUser");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysUserRoles")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+ .WithMany("SysUserRoles")
+ .HasForeignKey("SysUserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysRole");
+
+ b.Navigation("SysUser");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsDumpOrder", "WmsDumpOrder")
+ .WithMany("WmsDumpOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsDumpOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsGoodsReturnOrder", "WmsGoodsReturnOrder")
+ .WithMany("WmsGoodsReturnOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsGoodsReturnOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+ .WithMany("WmsFoamingHistoryMaterialContainer")
+ .HasForeignKey("MaterialId");
+
+ b.Navigation("WmsMaterial");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+ .WithMany("WmsFoamingMaterialContainer")
+ .HasForeignKey("MaterialId");
+
+ b.HasOne("Admin.NET.Core.WmsContainer", "WmsContainer")
+ .WithMany()
+ .HasForeignKey("WmsContainerId");
+
+ b.Navigation("WmsContainer");
+
+ b.Navigation("WmsMaterial");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsOrder", "WareOrder")
+ .WithMany("WareOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WareOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+ .WithMany("WmsPlaces")
+ .HasForeignKey("AreaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsArea");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsReceiptOrder", "WmsReceiptOrder")
+ .WithMany("WmsReceiptOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsReceiptOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsStockReturnOrder", "WmsStockReturnOrder")
+ .WithMany("WmsStockReturnOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsStockReturnOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsTakeMaterialOrder", "WmsTakeMaterialOrder")
+ .WithMany("WmsTakeMaterialOrderDetail")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsTakeMaterialOrder");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+ {
+ b.HasOne("Furion.Extras.Admin.NET.Entity.SysLowCode", "SysLowCode")
+ .WithMany("Databases")
+ .HasForeignKey("SysLowCodeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysLowCode");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+ {
+ b.Navigation("SysDictDatas");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+ {
+ b.Navigation("SysEmpPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+ {
+ b.Navigation("SysRoleMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+ {
+ b.Navigation("SysRoleDataScopes");
+
+ b.Navigation("SysUserDataScopes");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+ {
+ b.Navigation("SysEmpPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+ {
+ b.Navigation("SysRoleDataScopes");
+
+ b.Navigation("SysRoleMenus");
+
+ b.Navigation("SysUserRoles");
+
+ b.Navigation("WmsRolePdaMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+ {
+ b.Navigation("SysUserDataScopes");
+
+ b.Navigation("SysUserRoles");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+ {
+ b.Navigation("LesEntrance");
+
+ b.Navigation("WmsPlaces");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+ {
+ b.Navigation("WmsDumpOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+ {
+ b.Navigation("WmsGoodsReturnOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+ {
+ b.Navigation("WmsFoamingHistoryMaterialContainer");
+
+ b.Navigation("WmsFoamingMaterialContainer");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+ {
+ b.Navigation("WareOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+ {
+ b.Navigation("WmsRolePdaMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+ {
+ b.Navigation("WmsReceiptOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+ {
+ b.Navigation("WmsStockReturnOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+ {
+ b.Navigation("WmsTakeMaterialOrderDetail");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+ {
+ b.Navigation("Databases");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs
new file mode 100644
index 0000000..850c5e0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/20240413040247_v1.0.1.cs
@@ -0,0 +1,3102 @@
+锘縰sing System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+ public partial class v101 : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "les_agv_task",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ TaskType = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱"),
+ StartPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰浣嶇疆"),
+ StartName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰鍚嶇О"),
+ EndPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缁撴潫浣嶇疆"),
+ EndName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缁撴潫鍚嶇О"),
+ AgvState = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐘舵��"),
+ TransportOrder = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "褰撳墠鎵ц鐨勪换鍔�"),
+ TaskNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "涓讳换鍔″彿"),
+ Pid = table.Column<long>(type: "bigint", nullable: false, comment: "Agv鐖禝d"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹瑰櫒缂栧彿"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ SourcePlaceName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璧峰搴撲綅鍚嶇О"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_agv_task", x => x.Id);
+ },
+ comment: "Agv浠诲姟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "les_agv_waring",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Code = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鍞竴缂栫爜"),
+ TransportOrder = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "浠诲姟鍙�"),
+ AgvCarCode = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "agv灏忚溅缂栧彿"),
+ FaultText = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏁呴殰鍐呭"),
+ StartTime = table.Column<DateTimeOffset>(type: "datetimeoffset", maxLength: 50, nullable: true, comment: "鏁呴殰鏃堕棿"),
+ YesOrNot = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "鏄惁瑙e喅"),
+ IsRead = table.Column<bool>(type: "bit", nullable: false, comment: "WCS鏄惁鍙互璇诲彇"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_agv_waring", x => x.Id);
+ },
+ comment: "Agv鎶ヨ");
+
+ migrationBuilder.CreateTable(
+ name: "les_devicewaring",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ WcsId = table.Column<int>(type: "int", nullable: false, comment: "WcsId"),
+ DeviceName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁惧鍚嶇О"),
+ FaultName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏁呴殰鍚嶇О"),
+ StartTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍙戠敓鏃堕棿"),
+ EndTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "缁撴潫鏃堕棿"),
+ RunningTime = table.Column<int>(type: "int", nullable: false, comment: "鎸佺画鏃堕棿"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_devicewaring", x => x.Id);
+ },
+ comment: "璁惧鎶ヨ");
+
+ migrationBuilder.CreateTable(
+ name: "les_packwarehouse",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ PackCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏍囩鐮�"),
+ MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鐮�"),
+ Long = table.Column<int>(type: "int", nullable: false, comment: "闀�"),
+ Wide = table.Column<int>(type: "int", nullable: false, comment: "瀹�"),
+ High = table.Column<int>(type: "int", nullable: false, comment: "楂�"),
+ OutputEntrance = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍑哄簱鍙�"),
+ LesPackState = table.Column<int>(type: "int", nullable: false, comment: "鎵撳寘鐘舵��"),
+ OrderNo = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍗曟嵁鍙�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_packwarehouse", x => x.Id);
+ },
+ comment: "鎵撳寘琛�");
+
+ migrationBuilder.CreateTable(
+ name: "les_serial_rule_detail",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ SerialType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴忓彿绫诲埆"),
+ ItemNo = table.Column<int>(type: "int", nullable: false, comment: "椤规"),
+ SourceType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璧勬枡鏉ユ簮"),
+ SerialLength = table.Column<int>(type: "int", nullable: false, comment: "闀垮害"),
+ SearchStart = table.Column<int>(type: "int", nullable: false, comment: "鎾峰彇鐮佹暟(璧�)"),
+ DecimalType = table.Column<int>(type: "int", nullable: false, comment: "杩涗綅绫诲瀷"),
+ UserDefine = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "浣跨敤鑰呰嚜瀹氫箟"),
+ SerialCodeFlag = table.Column<int>(type: "int", nullable: false, comment: "搴忓彿缂栫爜"),
+ Description = table.Column<string>(type: "nvarchar(300)", maxLength: 300, nullable: true, comment: "璇存槑"),
+ SerialTypeNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴忓彿绫诲埆缂栧彿"),
+ GetData = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "鎾峰彇"),
+ PadLeft = table.Column<int>(type: "int", nullable: false, comment: "鑷姩琛ラ浂"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_serial_rule_detail", x => x.Id);
+ },
+ comment: "缂栧彿瑙勫垯");
+
+ migrationBuilder.CreateTable(
+ name: "les_station",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ ProductionlineId = table.Column<long>(type: "bigint", nullable: false, comment: "浜х嚎Id"),
+ Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "宸ヤ綅鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "宸ヤ綅缂栫爜"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "宸ヤ綅鐘舵��"),
+ StataionStatus = table.Column<int>(type: "int", nullable: false, comment: "杩愯鐘舵��"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+ PlaceSpec = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅瑙勬牸"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_station", x => x.Id);
+ },
+ comment: "宸ヤ綅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_app",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Active = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁榛樿婵�娲�"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_app", x => x.Id);
+ },
+ comment: "绯荤粺搴旂敤琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_code_gen",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+ TablePrefix = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁绉婚櫎琛ㄥ墠缂�"),
+ GenerateType = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢熸垚鏂瑰紡"),
+ DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+ TableName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撹〃鍚�"),
+ NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+ ModuleName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "妯″潡璺緞"),
+ FrontProName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍓嶇椤圭洰鍚�"),
+ BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+ MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+ MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+ LowCodeId = table.Column<long>(type: "bigint", nullable: true),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_code_gen", x => x.Id);
+ },
+ comment: "浠g爜鐢熸垚琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_code_gen_config",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ CodeGenId = table.Column<long>(type: "bigint", nullable: false, comment: "浠g爜鐢熸垚涓昏〃ID"),
+ ColumnName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鏁版嵁搴撳瓧娈靛悕"),
+ ColumnComment = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛楁鎻忚堪"),
+ NetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: ".NET鏁版嵁绫诲瀷"),
+ DtoNetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: ".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)"),
+ EffectType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "浣滅敤绫诲瀷"),
+ FkEntityName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭瀹炰綋鍚嶇О"),
+ FkColumnName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭鏄剧ず瀛楁"),
+ FkColumnNetType = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "澶栭敭鏄剧ず瀛楁.NET绫诲瀷"),
+ DictTypeCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀛楀吀Code"),
+ WhetherRetract = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄惁缂╄繘"),
+ WhetherRequired = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁蹇呭~"),
+ QueryWhether = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鏄煡璇㈡潯浠�"),
+ QueryType = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鏌ヨ鏂瑰紡"),
+ WhetherTable = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄剧ず"),
+ WhetherOrderBy = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鍒楄〃鏄惁鎺掑簭"),
+ WhetherAddUpdate = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "澧炴敼"),
+ ColumnKey = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "涓婚敭"),
+ DataType = table.Column<string>(type: "nvarchar(128)", maxLength: 128, nullable: true, comment: "鏁版嵁搴撲腑绫诲瀷"),
+ WhetherCommon = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁閫氱敤瀛楁"),
+ ShowTitleMinWidth = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "椤甸潰鍒楁樉绀烘渶灏忓搴�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_code_gen_config", x => x.Id);
+ },
+ comment: "浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_code_modular",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+ DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+ NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+ BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+ MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+ MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+ FormDesignJson = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍔ㄦ�佽〃鍗�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_code_modular", x => x.Id);
+ },
+ comment: "鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+
+ migrationBuilder.CreateTable(
+ name: "sys_config",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Value = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "灞炴�у��"),
+ SysFlag = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鏄郴缁熷弬鏁�"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ GroupCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "甯搁噺鎵�灞炲垎绫荤殑缂栫爜"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_config", x => x.Id);
+ },
+ comment: "鍙傛暟閰嶇疆琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_dict_type",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ EnumClassName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "瀵瑰簲鏋氫妇"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_dict_type", x => x.Id);
+ },
+ comment: "瀛楀吀绫诲瀷琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_emp",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+ JobNum = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true, comment: "宸ュ彿"),
+ OrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id"),
+ OrgName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏈烘瀯鍚嶇О")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_emp", x => x.Id);
+ },
+ comment: "鍛樺伐琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_excel_template",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "妯℃澘鍚嶇О"),
+ Version = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鐗堟湰"),
+ AppName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鎵�灞炲簲鐢�"),
+ ClassName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "绫诲悕"),
+ TemplateFileName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "妯℃澘鏂囦欢鍚嶇О"),
+ UnionUniqueFields = table.Column<string>(type: "nvarchar(300)", maxLength: 300, nullable: false, comment: "鍞竴瀛楁闆�"),
+ HeadStartLine = table.Column<int>(type: "int", nullable: false, comment: "琛ㄥご寮�濮嬭"),
+ DataStartLine = table.Column<int>(type: "int", nullable: false, comment: "鏁版嵁寮�濮嬭"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_excel_template", x => x.Id);
+ table.UniqueConstraint("AK_sys_excel_template_ClassName_Version_AppName", x => new { x.ClassName, x.Version, x.AppName });
+ },
+ comment: "Excel妯℃澘");
+
+ migrationBuilder.CreateTable(
+ name: "sys_file",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ FileLocation = table.Column<int>(type: "int", nullable: false, comment: "鏂囦欢瀛樺偍浣嶇疆"),
+ FileBucket = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂囦欢浠撳簱"),
+ FileOriginName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂囦欢鍚嶇О"),
+ FileSuffix = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏂囦欢鍚庣紑"),
+ FileSizeKb = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "鏂囦欢澶у皬kb"),
+ FileSizeInfo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏂囦欢澶у皬淇℃伅"),
+ FileObjectName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛樺偍鍒癰ucket鐨勫悕绉�"),
+ FilePath = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "瀛樺偍璺緞"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_file", x => x.Id);
+ },
+ comment: "鏂囦欢淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_forms",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Title = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鏍囬"),
+ FormJson = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "form琛ㄥ崟Json"),
+ Publish = table.Column<bool>(type: "bit", nullable: false, comment: "鏄惁鍙戝竷"),
+ TypeId = table.Column<long>(type: "bigint", nullable: false, comment: "琛ㄥ崟绫诲瀷ID"),
+ Version = table.Column<int>(type: "int", nullable: false, comment: "鐗堟湰"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_forms", x => x.Id);
+ },
+ comment: "琛ㄥ崟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_log_audit",
+ columns: table => new
+ {
+ Id = table.Column<int>(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ TableName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "琛ㄥ悕"),
+ ColumnName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒楀悕"),
+ NewValue = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏂板��"),
+ OldValue = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏃у��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎿嶄綔鏃堕棿"),
+ UserId = table.Column<long>(type: "bigint", nullable: false, comment: "鎿嶄綔浜篒d"),
+ UserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜哄悕绉�"),
+ Operate = table.Column<int>(type: "int", nullable: false, comment: "鎿嶄綔鏂瑰紡")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_log_audit", x => x.Id);
+ },
+ comment: "瀹¤鏃ュ織琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_log_ex",
+ columns: table => new
+ {
+ Id = table.Column<int>(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜�"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+ ClassName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "绫诲悕"),
+ MethodName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂规硶鍚�"),
+ ExceptionName = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父鍚嶇О"),
+ ExceptionMsg = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父淇℃伅"),
+ ExceptionSource = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "寮傚父婧�"),
+ StackTrace = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍫嗘爤淇℃伅"),
+ ParamsObj = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍙傛暟瀵硅薄"),
+ ExceptionTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "寮傚父鏃堕棿")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_log_ex", x => x.Id);
+ },
+ comment: "寮傚父鏃ュ織琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_log_op",
+ columns: table => new
+ {
+ Id = table.Column<int>(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+ Success = table.Column<int>(type: "int", nullable: false, comment: "鏄惁鎵ц鎴愬姛"),
+ Message = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍏蜂綋娑堟伅"),
+ Ip = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "IP"),
+ Location = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: true, comment: "鍦板潃"),
+ Browser = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "娴忚鍣�"),
+ Os = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鎿嶄綔绯荤粺"),
+ Url = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "璇锋眰鍦板潃"),
+ ClassName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "绫诲悕绉�"),
+ MethodName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏂规硶鍚嶇О"),
+ ReqMethod = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "璇锋眰鏂瑰紡"),
+ Param = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璇锋眰鍙傛暟"),
+ Result = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "杩斿洖缁撴灉"),
+ ElapsedTime = table.Column<long>(type: "bigint", nullable: false, comment: "鑰楁椂"),
+ OpTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎿嶄綔鏃堕棿"),
+ Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎿嶄綔浜�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_log_op", x => x.Id);
+ },
+ comment: "鎿嶄綔鏃ュ織琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_log_vis",
+ columns: table => new
+ {
+ Id = table.Column<int>(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍚嶇О"),
+ Success = table.Column<int>(type: "int", nullable: false, comment: "鏄惁鎵ц鎴愬姛"),
+ Message = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鍏蜂綋娑堟伅"),
+ Ip = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "IP"),
+ Location = table.Column<string>(type: "nvarchar(1024)", maxLength: 1024, nullable: true, comment: "鍦板潃"),
+ Browser = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "娴忚鍣�"),
+ Os = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鎿嶄綔绯荤粺"),
+ VisType = table.Column<int>(type: "int", nullable: false, comment: "璁块棶绫诲瀷"),
+ VisTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "璁块棶鏃堕棿"),
+ Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁块棶浜�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_log_vis", x => x.Id);
+ },
+ comment: "璁块棶鏃ュ織琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_low_code_module",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ AuthorName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "浣滆�呭鍚�"),
+ GenerateType = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢熸垚鏂瑰紡"),
+ DatabaseName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏁版嵁搴撳悕"),
+ NameSpace = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍛藉悕绌洪棿"),
+ ModuleName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍"),
+ BusName = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "涓氬姟鍚�"),
+ MenuApplication = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鑿滃崟搴旂敤鍒嗙被"),
+ MenuPid = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟缂栫爜"),
+ FormDesignType = table.Column<int>(type: "int", nullable: false, comment: "鍔ㄦ�佽〃鍗曠被鍨�"),
+ FormDesign = table.Column<string>(type: "text", nullable: true, comment: "鍔ㄦ�佽〃鍗�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_low_code_module", x => x.Id);
+ },
+ comment: "浣庝唬鐮佹ā鍧楃鐞�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_menu",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+ Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+ Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Type = table.Column<int>(type: "int", nullable: false, comment: "鑿滃崟绫诲瀷"),
+ Icon = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鍥炬爣"),
+ Router = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "璺敱鍦板潃"),
+ Component = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "缁勪欢鍦板潃"),
+ Permission = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鏉冮檺鏍囪瘑"),
+ Application = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴旂敤鍒嗙被"),
+ OpenType = table.Column<int>(type: "int", nullable: false, comment: "鎵撳紑鏂瑰紡"),
+ Visible = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: true, comment: "鏄惁鍙"),
+ Link = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍐呴摼鍦板潃"),
+ Redirect = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "閲嶅畾鍚戝湴鍧�"),
+ Weight = table.Column<int>(type: "int", nullable: false, comment: "鏉冮噸"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_menu", x => x.Id);
+ },
+ comment: "鑿滃崟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_notice",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Title = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鏍囬"),
+ Content = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鍐呭"),
+ Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+ PublicUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鍙戝竷浜篒d"),
+ PublicUserName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鍙戝竷浜哄鍚�"),
+ PublicOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鍙戝竷鏈烘瀯Id"),
+ PublicOrgName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍙戝竷鏈烘瀯鍚嶇О"),
+ PublicTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍙戝竷鏃堕棿"),
+ CancelTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鎾ゅ洖鏃堕棿"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_notice", x => x.Id);
+ },
+ comment: "閫氱煡鍏憡琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_notice_user",
+ columns: table => new
+ {
+ NoticeId = table.Column<long>(type: "bigint", nullable: false, comment: "閫氱煡鍏憡Id"),
+ UserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+ ReadTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "闃呰鏃堕棿"),
+ ReadStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_notice_user", x => new { x.NoticeId, x.UserId });
+ },
+ comment: "閫氱煡鍏憡鐢ㄦ埛琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_org",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+ Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Contacts = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鑱旂郴浜�"),
+ Tel = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢佃瘽"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ OrgType = table.Column<string>(type: "nvarchar(max)", nullable: true),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_org", x => x.Id);
+ },
+ comment: "缁勭粐鏈烘瀯琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_pos",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_pos", x => x.Id);
+ },
+ comment: "鑱屼綅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_role",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ DataScopeType = table.Column<int>(type: "int", nullable: false, comment: "鏁版嵁鑼冨洿绫诲瀷"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ RoleType = table.Column<int>(type: "int", nullable: false, comment: "瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_role", x => x.Id);
+ },
+ comment: "瑙掕壊琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_timer",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ JobName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: false, comment: "浠诲姟鍚嶇О"),
+ DoOnce = table.Column<bool>(type: "bit", nullable: false, comment: "鍙墽琛屼竴娆�"),
+ StartNow = table.Column<bool>(type: "bit", nullable: false, comment: "绔嬪嵆鎵ц"),
+ ExecuteType = table.Column<int>(type: "int", nullable: false, comment: "鎵ц绫诲瀷"),
+ Interval = table.Column<int>(type: "int", nullable: true, comment: "闂撮殧鏃堕棿"),
+ Cron = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "Cron琛ㄨ揪寮�"),
+ TimerType = table.Column<int>(type: "int", nullable: false, comment: "瀹氭椂鍣ㄧ被鍨�"),
+ RequestUrl = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "璇锋眰url"),
+ RequestParameters = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "璇锋眰鍙傛暟"),
+ Headers = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "Headers"),
+ RequestType = table.Column<int>(type: "int", nullable: false, comment: "璇锋眰绫诲瀷"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_timer", x => x.Id);
+ },
+ comment: "瀹氭椂浠诲姟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_user",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Account = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璐﹀彿"),
+ Password = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "瀵嗙爜"),
+ NickName = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鏄电О"),
+ Name = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "濮撳悕"),
+ Avatar = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "澶村儚"),
+ Birthday = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鐢熸棩"),
+ Sex = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆-鐢穇1銆佸コ_2"),
+ Email = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "閭"),
+ Phone = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鎵嬫満"),
+ Tel = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鐢佃瘽"),
+ LastLoginIp = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "鏈�鍚庣櫥褰旾P"),
+ LastLoginTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏈�鍚庣櫥褰曟椂闂�"),
+ AdminType = table.Column<int>(type: "int", nullable: false, comment: "绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false),
+ ProductionlineId = table.Column<long>(type: "bigint", nullable: false),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_user", x => x.Id);
+ },
+ comment: "鐢ㄦ埛琛�");
+
+ migrationBuilder.CreateTable(
+ name: "test_students",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+ Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+ StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+ Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+ BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_test_students", x => x.Id);
+ },
+ comment: "瀛︾敓淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "test_students2",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+ Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+ HasMoney = table.Column<decimal>(type: "decimal(10,3)", nullable: false, comment: "闆惰姳閽�"),
+ StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+ Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+ BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_test_students2", x => x.Id);
+ },
+ comment: "瀛︾敓淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "test_students3",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: true, comment: "瀛︾敓濮撳悕"),
+ Age = table.Column<int>(type: "int", nullable: false, comment: "瀛︾敓骞撮緞"),
+ HasMoney = table.Column<decimal>(type: "decimal(10,3)", nullable: false, comment: "闆惰姳閽�"),
+ StartName = table.Column<bool>(type: "bit", maxLength: 50, nullable: false, comment: "鏄惁鍦ㄦ牎"),
+ Gender = table.Column<int>(type: "int", nullable: false, comment: "鎬у埆"),
+ BrithDate = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑虹敓鏃ユ湡"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_test_students3", x => x.Id);
+ },
+ comment: "瀛︾敓淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_area",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ AreaName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍚嶇О"),
+ AreaDesc = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: true, comment: "鎻忚堪"),
+ AreaStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ AreaType = table.Column<int>(type: "int", nullable: false, comment: "鍒嗙被"),
+ IsSteel = table.Column<bool>(type: "bit", nullable: false, comment: "鏄惁涓洪挗骞冲彴"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_area", x => x.Id);
+ },
+ comment: "搴撳尯琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_container",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栧彿"),
+ ContainerType = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+ ContainerStatus = table.Column<int>(type: "int", nullable: false, comment: "鎵樼洏鐘舵��"),
+ SpecLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闀垮害"),
+ SpecWidth = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹藉害"),
+ SpecHeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "楂樺害"),
+ LimitLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愰暱"),
+ LimitWidth = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愬"),
+ LimitHeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闄愰珮"),
+ MaxWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "杞介噸涓婇檺"),
+ ParentContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鐖舵墭鐩業d"),
+ AssetNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璧勪骇缂栧彿"),
+ ContainerCategory = table.Column<int>(type: "int", nullable: false, comment: "鎵樼洏鍒嗙被"),
+ ErpNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "Erp鍗曞彿"),
+ IsVirtually = table.Column<int>(type: "int", nullable: false, comment: "鏄惁铏氭嫙"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_container", x => x.Id);
+ },
+ comment: "鎵樼洏淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_containerplace",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ PlaceId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撲綅Id"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+ ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+ ContainerPlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_containerplace", x => x.Id);
+ },
+ comment: "鎵樼洏搴撲綅鍏崇郴琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_dumporder",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+ Creator = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒涘缓浜�"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_dumporder", x => x.Id);
+ },
+ comment: "杞偍鍗�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_goodsreturnorder",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+ Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+ Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+ WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+ WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+ GoodsReturnStatus = table.Column<int>(type: "int", nullable: false, comment: "閫�璐х姸鎬�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_goodsreturnorder", x => x.Id);
+ },
+ comment: "閫�璐у崟");
+
+ migrationBuilder.CreateTable(
+ name: "wms_material",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+ MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+ MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鎵规"),
+ MaterialType = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡绫诲埆"),
+ InspectionMethod = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡妫�楠�"),
+ MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+ MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瀵嗗害"),
+ MaterialUnit = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡鍗曚綅"),
+ AreaIds = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "搴撳尯Ids"),
+ AreaNameParameter = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "搴撳尯鍙傛暟"),
+ StationIds = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "宸ヤ綔鍖篒ds"),
+ StationNameParameter = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "宸ヤ綔鍖哄弬鏁�"),
+ Description = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "鎻忚堪"),
+ Safeqty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹夊叏瀛橀噺"),
+ MaxImumqty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶у瓨閲�"),
+ MinstorageAge = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�灏忓簱榫�"),
+ MaxstorageAge = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶у簱榫�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_material", x => x.Id);
+ },
+ comment: "鐗╂枡淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_materialstock",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+ MaterialType = table.Column<int>(type: "int", nullable: false, comment: "鐗╂枡绫诲埆"),
+ MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+ MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+ MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+ Long = table.Column<int>(type: "int", nullable: false, comment: "闀�"),
+ Wide = table.Column<int>(type: "int", nullable: false, comment: "瀹�"),
+ High = table.Column<int>(type: "int", nullable: false, comment: "楂�"),
+ MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+ InspectionMethod = table.Column<int>(type: "int", nullable: false, comment: "妫�楠屾柟寮�"),
+ UnitType = table.Column<int>(type: "int", nullable: false, comment: "鍗曚綅绫诲埆"),
+ UnitNo = table.Column<int>(type: "int", nullable: false, comment: "鍗曚綅缂栧彿"),
+ StockNumber = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹炵墿搴撳瓨鏁�"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+ ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+ AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撳尯Id"),
+ QuantityOfBill = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "璐﹂潰鏁伴噺"),
+ Source = table.Column<int>(type: "int", nullable: false, comment: "鍏ュ簱鏉ユ簮"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_materialstock", x => x.Id);
+ },
+ comment: "搴撳瓨琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_merchantinfo",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ MerchantNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢缂栧彿"),
+ MerchantName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鍚嶇О"),
+ MerchantType = table.Column<int>(type: "int", nullable: false, comment: "瀹㈠晢鍒嗙被"),
+ MerchantShort = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢绠�绉�"),
+ MerchantGrade = table.Column<int>(type: "int", nullable: false, comment: "瀹㈠晢绛夌骇"),
+ MerchantAttribute = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢灞炴��"),
+ MerchantTmt = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢琛屼笟"),
+ MerchantContact = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鑱旂郴浜�"),
+ MerchantPhone = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鐢佃瘽"),
+ MerchantFax = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢浼犵湡"),
+ MerchantEmail = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢閭"),
+ MerchantAddress = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹㈠晢鍦板潃"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_merchantinfo", x => x.Id);
+ },
+ comment: "瀹㈠晢淇℃伅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_order",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+ SourceBillNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "閫佽揣閫氱煡鍗曞彿"),
+ Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+ Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+ WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+ TradeMode = table.Column<int>(type: "int", nullable: false, comment: "璐告槗鏂瑰紡"),
+ WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+ StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+ DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+ Majorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "涓撲笟"),
+ Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_order", x => x.Id);
+ },
+ comment: "鍗曟嵁琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_order_type",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Pid = table.Column<long>(type: "bigint", nullable: false, comment: "鐖禝d"),
+ Pids = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鐖禝ds"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ LesWorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_order_type", x => x.Id);
+ },
+ comment: "鍗曟嵁绫诲瀷缁存姢琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_pdapower",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Icon = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍥炬爣"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缂栫爜"),
+ Name = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "鍚嶇О"),
+ Clolor = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "棰滆壊"),
+ WorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_pdapower", x => x.Id);
+ },
+ comment: "PDA鑿滃崟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_receiptorder",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ WMSNO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鏀惰揣鍗曞彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃ユ湡"),
+ SourceBillNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "閫佽揣閫氱煡鍗曞彿"),
+ Vendorcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗙紪鐮�"),
+ Vendorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "渚涘簲鍟嗗悕绉�"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃鍚嶇О"),
+ WarehouseKeepername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撶鍛�"),
+ TradeMode = table.Column<int>(type: "int", nullable: false, comment: "璐告槗鏂瑰紡"),
+ WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+ StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+ DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+ Majorname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "涓撲笟"),
+ Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+ ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "鏀惰揣鐘舵��"),
+ InspectionStatus = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_receiptorder", x => x.Id);
+ },
+ comment: "鏀惰揣鍗�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_sortorder",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鏉ユ簮鍗曞彿"),
+ OrderDetailID = table.Column<long>(type: "bigint", nullable: false),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ ContainerOrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒嗘嫞缁勭洏鍗曞彿"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+ PlaceCode = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true, comment: "搴撲綅缂栫爜"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "瀹瑰櫒缂栧彿"),
+ SortQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍒嗘嫞鏁�"),
+ ActualQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "瀹為檯鍒嗘嫞鏁�"),
+ Remarks = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
+ SortStatus = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_sortorder", x => x.Id);
+ },
+ comment: "鍒嗘嫞琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_stockreturn_order",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ MoveType = table.Column<int>(type: "int", nullable: false, comment: "浜嬪姟绫诲瀷"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "閫�鏂欑敵璇锋棩鏈�"),
+ WBSElementcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗙敤椤圭洰鍙�"),
+ BenefitingDepartcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡閮ㄩ棬"),
+ CostCenterID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏀剁泭閮ㄩ棬"),
+ FI_Client_Analysis_H = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "瀹㈡埛"),
+ PickerID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗗彇浜�"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+ ConstructionTeamID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂藉伐闃�"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_stockreturn_order", x => x.Id);
+ },
+ comment: "閫�鏂欏叆搴撳崟");
+
+ migrationBuilder.CreateTable(
+ name: "wms_takematerialorder",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderLargeCategory = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁澶х被"),
+ OrderSubclass = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁灏忕被"),
+ MoveType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "浜嬪姟绫诲瀷"),
+ SOID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�"),
+ NO = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鍗曟嵁缂栧彿"),
+ Billdate = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "棰嗘枡鍗曠敵璇锋棩鏈�"),
+ WBSElementcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗙敤椤圭洰鍙�"),
+ BenefitingDepartcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡閮ㄩ棬"),
+ CostCenterID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍙楃泭閮ㄩ棬"),
+ FI_Client_Analysis_H = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "瀹㈡埛"),
+ IsInnerCompany = table.Column<long>(type: "bigint", nullable: false, comment: "鏄惁鍏徃闂翠氦鏄�"),
+ PickerID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "棰嗘枡浜�"),
+ WarehouseCentername = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撳偍涓績"),
+ Companyname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍏徃"),
+ ConstructionTeamID = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂藉伐闃�"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_takematerialorder", x => x.Id);
+ },
+ comment: "棰嗘枡鍗�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_task",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ TaskNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "浠诲姟鍙�"),
+ TaskModel = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鏂瑰紡"),
+ TaskType = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟绫诲瀷"),
+ TaskLevel = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟绾у埆"),
+ TaskStatus = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鐘舵��"),
+ IsRead = table.Column<bool>(type: "bit", nullable: false, comment: "WCS鏄惁鍙互璇诲彇"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栧彿"),
+ SourcePlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "璧峰搴撲綅"),
+ ToPlace = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐩爣搴撲綅"),
+ Aisle = table.Column<int>(type: "int", nullable: false, comment: "宸烽亾"),
+ EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "鏄惁绌烘墭"),
+ AreaName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撳尯鍚嶇О"),
+ OrderDetailsId = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁鏄庣粏Id"),
+ OrderNo = table.Column<string>(type: "nvarchar(max)", nullable: false, comment: "缁勭洏璁板綍鍗曟嵁鍙�"),
+ SendTimes = table.Column<int>(type: "int", nullable: false, comment: "鍙戦�佹鏁�"),
+ DodeviceId = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟鎵ц鍫嗗灈鏈篒d"),
+ DodevicenodeId = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "璁惧鎵ц鑺傜偣Id"),
+ Dodevicetype = table.Column<int>(type: "int", maxLength: 50, nullable: false, comment: "璁惧绫诲瀷"),
+ TaskDodeviceStatus = table.Column<int>(type: "int", nullable: false, comment: "浠诲姟璁惧鐘舵��"),
+ Description = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍏ュ簱鏉ユ簮"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_task", x => x.Id);
+ },
+ comment: "浠诲姟绠$悊琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_warehouse_entrance",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�"),
+ LesWorkShopType = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炶溅闂�"),
+ AffiliatedRoadway = table.Column<int>(type: "int", nullable: false, comment: "鎵�灞炲贩閬�"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_warehouse_entrance", x => x.Id);
+ },
+ comment: "搴撳彛琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_warehouse_manage",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false, comment: "鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "缂栫爜"),
+ Type = table.Column<int>(type: "int", nullable: false, comment: "绫诲瀷"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_warehouse_manage", x => x.Id);
+ },
+ comment: "搴撳彛琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_dict_data",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ TypeId = table.Column<long>(type: "bigint", nullable: false, comment: "瀛楀吀绫诲瀷Id"),
+ Value = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "鍊�"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "缂栫爜"),
+ Sort = table.Column<int>(type: "int", nullable: false, comment: "鎺掑簭"),
+ Remark = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true, comment: "澶囨敞"),
+ Status = table.Column<int>(type: "int", nullable: false, comment: "鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_dict_data", x => x.Id);
+ table.ForeignKey(
+ name: "FK_sys_dict_data_sys_dict_type_TypeId",
+ column: x => x.TypeId,
+ principalTable: "sys_dict_type",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "瀛楀吀鍊艰〃");
+
+ migrationBuilder.CreateTable(
+ name: "sys_low_code_module_database",
+ columns: table => new
+ {
+ Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false, comment: "Id涓婚敭"),
+ SysLowCodeId = table.Column<long>(type: "bigint", nullable: false),
+ Control_Key = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢Key"),
+ Control_Label = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢鍚嶇О"),
+ Control_Model = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢瀛楁"),
+ Control_Type = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "缁勪欢瀛楁"),
+ TableName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "琛ㄥ悕"),
+ ClassName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "绫诲悕"),
+ TableDesc = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "琛ㄦ弿杩�"),
+ FieldName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "瀛楁鍚嶇О"),
+ DbTypeName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "鏁版嵁绫诲瀷"),
+ DtoTypeName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "浼犲叆鏁版嵁绫诲瀷"),
+ DbParam = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true, comment: "鏁版嵁绫诲瀷琛ュ厖鍙傛暟"),
+ IsRequired = table.Column<bool>(type: "bit", nullable: true, comment: "鏄惁蹇呭~"),
+ WhetherTable = table.Column<bool>(type: "bit", nullable: true, comment: "鍒楄〃鏄剧ず"),
+ WhetherOrderBy = table.Column<bool>(type: "bit", nullable: true, comment: "鎺掑簭"),
+ WhetherAddUpdate = table.Column<bool>(type: "bit", nullable: true, comment: "澧炴敼"),
+ QueryWhether = table.Column<bool>(type: "bit", nullable: true, comment: "鏄惁鏄煡璇�"),
+ QueryType = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鏌ヨ鏂瑰紡"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_low_code_module_database", x => x.Id);
+ table.ForeignKey(
+ name: "FK_sys_low_code_module_database_sys_low_code_module_SysLowCodeId",
+ column: x => x.SysLowCodeId,
+ principalTable: "sys_low_code_module",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "浣庝唬鐮佹ā鍧楃鐞�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_emp_ext_org_pos",
+ columns: table => new
+ {
+ SysEmpId = table.Column<long>(type: "bigint", nullable: false, comment: "鍛樺伐Id"),
+ SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id"),
+ SysPosId = table.Column<long>(type: "bigint", nullable: false, comment: "鑱屼綅Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_emp_ext_org_pos", x => new { x.SysEmpId, x.SysOrgId, x.SysPosId });
+ table.ForeignKey(
+ name: "FK_sys_emp_ext_org_pos_sys_emp_SysEmpId",
+ column: x => x.SysEmpId,
+ principalTable: "sys_emp",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_emp_ext_org_pos_sys_org_SysOrgId",
+ column: x => x.SysOrgId,
+ principalTable: "sys_org",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_emp_ext_org_pos_sys_pos_SysPosId",
+ column: x => x.SysPosId,
+ principalTable: "sys_pos",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_emp_pos",
+ columns: table => new
+ {
+ SysEmpId = table.Column<long>(type: "bigint", nullable: false, comment: "鍛樺伐Id"),
+ SysPosId = table.Column<long>(type: "bigint", nullable: false, comment: "鑱屼綅Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_emp_pos", x => new { x.SysEmpId, x.SysPosId });
+ table.ForeignKey(
+ name: "FK_sys_emp_pos_sys_emp_SysEmpId",
+ column: x => x.SysEmpId,
+ principalTable: "sys_emp",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_emp_pos_sys_pos_SysPosId",
+ column: x => x.SysPosId,
+ principalTable: "sys_pos",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鍛樺伐鑱屼綅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_role_data_scope",
+ columns: table => new
+ {
+ SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+ SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_role_data_scope", x => new { x.SysRoleId, x.SysOrgId });
+ table.ForeignKey(
+ name: "FK_sys_role_data_scope_sys_org_SysOrgId",
+ column: x => x.SysOrgId,
+ principalTable: "sys_org",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_role_data_scope_sys_role_SysRoleId",
+ column: x => x.SysRoleId,
+ principalTable: "sys_role",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "瑙掕壊鏁版嵁鑼冨洿琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_role_menu",
+ columns: table => new
+ {
+ SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+ SysMenuId = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_role_menu", x => new { x.SysRoleId, x.SysMenuId });
+ table.ForeignKey(
+ name: "FK_sys_role_menu_sys_menu_SysMenuId",
+ column: x => x.SysMenuId,
+ principalTable: "sys_menu",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_role_menu_sys_role_SysRoleId",
+ column: x => x.SysRoleId,
+ principalTable: "sys_role",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "瑙掕壊鑿滃崟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_user_data_scope",
+ columns: table => new
+ {
+ SysUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+ SysOrgId = table.Column<long>(type: "bigint", nullable: false, comment: "鏈烘瀯Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_user_data_scope", x => new { x.SysUserId, x.SysOrgId });
+ table.ForeignKey(
+ name: "FK_sys_user_data_scope_sys_org_SysOrgId",
+ column: x => x.SysOrgId,
+ principalTable: "sys_org",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_user_data_scope_sys_user_SysUserId",
+ column: x => x.SysUserId,
+ principalTable: "sys_user",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+ migrationBuilder.CreateTable(
+ name: "sys_user_role",
+ columns: table => new
+ {
+ SysUserId = table.Column<long>(type: "bigint", nullable: false, comment: "鐢ㄦ埛Id"),
+ SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_sys_user_role", x => new { x.SysUserId, x.SysRoleId });
+ table.ForeignKey(
+ name: "FK_sys_user_role_sys_role_SysRoleId",
+ column: x => x.SysRoleId,
+ principalTable: "sys_role",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_sys_user_role_sys_user_SysUserId",
+ column: x => x.SysUserId,
+ principalTable: "sys_user",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鐢ㄦ埛瑙掕壊琛�");
+
+ migrationBuilder.CreateTable(
+ name: "les_entrance",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "搴撳尯Id"),
+ Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撳彛鍚嶇О"),
+ Code = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撳彛缂栫爜"),
+ EntranceType = table.Column<int>(type: "int", nullable: false, comment: "搴撳彛绫诲瀷"),
+ CommenStatus = table.Column<int>(type: "int", nullable: false, comment: "搴撳彛鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_les_entrance", x => x.Id);
+ table.ForeignKey(
+ name: "FK_les_entrance_wms_area_AreaId",
+ column: x => x.AreaId,
+ principalTable: "wms_area",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "搴撳彛琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_place",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "搴撲綅缂栫爜"),
+ AgvCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅瀵瑰簲AGV缂栫爜"),
+ PlaceStatus = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅鐘舵��"),
+ AreaId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵�鍦ㄥ簱鍖�"),
+ RowNo = table.Column<int>(type: "int", nullable: false, comment: "鎺�"),
+ ColumnNo = table.Column<int>(type: "int", nullable: false, comment: "鍒�"),
+ LayerNo = table.Column<int>(type: "int", nullable: false, comment: "灞�"),
+ DeepcellNo = table.Column<int>(type: "int", nullable: false, comment: "杩涙繁鍙�"),
+ Aisle = table.Column<int>(type: "int", nullable: false, comment: "宸烽亾"),
+ Line = table.Column<int>(type: "int", nullable: false, comment: "绾垮彿"),
+ Islock = table.Column<int>(type: "int", nullable: false, comment: "鏄惁閿佸畾"),
+ EmptyContainer = table.Column<int>(type: "int", nullable: false, comment: "鏄惁绌烘墭"),
+ PositionnoForSrm = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆"),
+ Xzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅X鍧愭爣"),
+ Yzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅Y鍧愭爣"),
+ Zzb = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅Z鍧愭爣"),
+ Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅闀垮害"),
+ Width = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅瀹藉害"),
+ Height = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "搴撲綅楂樺害"),
+ MaxWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏈�澶ф壙閲�"),
+ HeightLevel = table.Column<int>(type: "int", nullable: false, comment: "搴撲綅楂樺害灞炴��"),
+ Priority = table.Column<int>(type: "int", nullable: false, comment: "浼樺厛绾�"),
+ LogicalName = table.Column<int>(type: "int", nullable: false, comment: "閫昏緫鍖哄煙"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_place", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_place_wms_area_AreaId",
+ column: x => x.AreaId,
+ principalTable: "wms_area",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "搴撲綅琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_dumporder_details",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "闀垮害"),
+ Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+ Batchno_WMS = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鎵规鍙�"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "搴撳瓨椤圭洰缂栫爜"),
+ Projectcode_To = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鏂板簱瀛橀」鐩紪鐮�"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_dumporder_details", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_dumporder_details_wms_dumporder_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_dumporder",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "杞偍鍗曟槑缁�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_goodsreturnorder_details",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+ TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+ Batchno_WMS = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎵规鍙�"),
+ Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+ SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ StoreRoomname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "浠撻棿"),
+ DeclarationCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曞彿"),
+ TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+ ItemNo = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎶ュ叧椤瑰彿"),
+ CustomsUnitName = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "鎶ュ叧鍗曚綅"),
+ CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+ CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+ ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "閫�璐х姸鎬�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_goodsreturnorder_details", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_goodsreturnorder_details_wms_goodsreturnorder_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_goodsreturnorder",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "閫�璐у崟鎹槑缁嗚〃");
+
+ migrationBuilder.CreateTable(
+ name: "wms_history_materialcontainer",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+ MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+ MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+ MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+ MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+ MaterialId = table.Column<long>(type: "bigint", nullable: false, comment: "鐗╂枡Id"),
+ BindQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "缁勭洏鏁伴噺"),
+ BindStatus = table.Column<int>(type: "int", nullable: false, comment: "缁勭洏鐘舵��"),
+ SampleQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶芥鏁伴噺"),
+ OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍗曞彿"),
+ MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_history_materialcontainer", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_history_materialcontainer_wms_material_MaterialId",
+ column: x => x.MaterialId,
+ principalTable: "wms_material",
+ principalColumn: "Id");
+ },
+ comment: "鐗╂枡鎵樼洏鍘嗗彶琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_materialcontainer",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ ContainerId = table.Column<long>(type: "bigint", nullable: false, comment: "鎵樼洏Id"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鎵樼洏缂栫爜"),
+ MaterialName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鍚嶇О"),
+ MaterialNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡缂栧彿"),
+ MaterialBatch = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡鎵规"),
+ MaterialSpec = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鐗╂枡瑙勬牸"),
+ MaterialId = table.Column<long>(type: "bigint", nullable: false, comment: "鐗╂枡Id"),
+ BindQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "缁勭洏鏁伴噺"),
+ BindStatus = table.Column<int>(type: "int", nullable: false, comment: "缁勭洏鐘舵��"),
+ SampleQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶芥鏁伴噺"),
+ OrderNo = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鍗曞彿"),
+ OrderDetailsId = table.Column<long>(type: "bigint", nullable: false, comment: "鍗曟嵁鏄庣粏Id"),
+ MaterialDensity = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, comment: "鐗╂枡瀵嗗害"),
+ WmsContainerId = table.Column<long>(type: "bigint", nullable: true),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_materialcontainer", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_materialcontainer_wms_container_WmsContainerId",
+ column: x => x.WmsContainerId,
+ principalTable: "wms_container",
+ principalColumn: "Id");
+ table.ForeignKey(
+ name: "FK_wms_materialcontainer_wms_material_MaterialId",
+ column: x => x.MaterialId,
+ principalTable: "wms_material",
+ principalColumn: "Id");
+ },
+ comment: "鐗╂枡鎵樼洏鍏崇郴琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_order_details",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ InventoryQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍏ュ簱鏁伴噺"),
+ SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+ TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+ Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+ SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+ ItemNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧椤瑰彿"),
+ CustomsUnitName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曚綅"),
+ CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+ CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+ SpecialNeeds = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗规畩瑕佹眰"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ InspectionResults = table.Column<int>(type: "int", nullable: false, comment: "妫�楠岀粨鏋�"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_order_details", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_order_details_wms_order_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_order",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鍗曟嵁鏄庣粏琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_role_pdamenu",
+ columns: table => new
+ {
+ SysRoleId = table.Column<long>(type: "bigint", nullable: false, comment: "瑙掕壊Id"),
+ PdaMenuId = table.Column<long>(type: "bigint", nullable: false, comment: "鑿滃崟Id")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_role_pdamenu", x => new { x.SysRoleId, x.PdaMenuId });
+ table.ForeignKey(
+ name: "FK_wms_role_pdamenu_sys_role_SysRoleId",
+ column: x => x.SysRoleId,
+ principalTable: "sys_role",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_wms_role_pdamenu_wms_pdapower_PdaMenuId",
+ column: x => x.PdaMenuId,
+ principalTable: "wms_pdapower",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "瑙掕壊鑿滃崟琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_receiptorder_details",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+ TheoreticalWeight = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鐞嗚閲嶉噺"),
+ Price = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嶅惈绋庡崟浠�"),
+ SumPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎴愭湰閲戦"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ ContractCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍚堝悓缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ TradeName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍝佸悕"),
+ ItemNo = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧椤瑰彿"),
+ CustomsUnitName = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鎶ュ叧鍗曚綅"),
+ CustomsNum = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧鏁伴噺"),
+ CustomsPrices = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鎶ュ叧閲戦"),
+ SpecialNeeds = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗规畩瑕佹眰"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+ DeliveryQty = table.Column<decimal>(type: "decimal(18,2)", maxLength: 50, nullable: false, comment: "閫佽揣鏁伴噺"),
+ ReceivedQty = table.Column<decimal>(type: "decimal(18,2)", maxLength: 50, nullable: false, comment: "鏀惰揣鏁伴噺"),
+ ReceivingStatus = table.Column<int>(type: "int", nullable: false, comment: "鏀惰揣鐘舵��"),
+ InspectionStatus = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ鐘舵��"),
+ InspectionResultsEnum = table.Column<int>(type: "int", nullable: false, comment: "鎶ユ缁撴灉"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_receiptorder_details", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_receiptorder_details_wms_receiptorder_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_receiptorder",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鏀惰揣鍗曟嵁鏄庣粏琛�");
+
+ migrationBuilder.CreateTable(
+ name: "wms_stockreturn_order_details",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ Length = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+ Number = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "浠舵暟"),
+ Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+ Batchno_WMS = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "WMS鎵规鍙�"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_stockreturn_order_details", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_stockreturn_order_details_wms_stockreturn_order_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_stockreturn_order",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "閫�鏂欏叆搴撳崟璇︽儏");
+
+ migrationBuilder.CreateTable(
+ name: "wms_takematerial_orderdetail",
+ columns: table => new
+ {
+ Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
+ OrderId = table.Column<long>(type: "bigint", maxLength: 50, nullable: false, comment: "鍗曟嵁Id"),
+ OID = table.Column<long>(type: "bigint", nullable: false, comment: "SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑"),
+ Materialcode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡缂栧彿"),
+ Materialname = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鐗╂枡鍚嶇О"),
+ Unit = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍩烘湰鍗曚綅"),
+ Qty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鏁伴噺"),
+ DistributeQty = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "涓嬪彂鏁伴噺"),
+ SingleLength = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "鍗曟牴闀垮害"),
+ Number = table.Column<decimal>(type: "decimal(18,2)", nullable: false, comment: "浠舵暟"),
+ Batchno_SCM = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "SCM鎵规鍙�"),
+ Batchno_WMS = table.Column<string>(type: "nvarchar(max)", nullable: true, comment: "WMS鎵规鍙�"),
+ ProjectCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "椤圭洰缂栧彿"),
+ TACode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "TA鍙�"),
+ PartCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: true, comment: "鍒嗘鍙�"),
+ OrderStatus = table.Column<int>(type: "int", nullable: false, comment: "鍗曟嵁鐘舵��"),
+ ContainerCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鎵樼洏缂栫爜"),
+ PlaceCode = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "搴撲綅缂栫爜"),
+ CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
+ UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
+ CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
+ CreatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "鍒涘缓鑰呭悕绉�"),
+ UpdatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "淇敼鑰匢d"),
+ UpdatedUserName = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true, comment: "淇敼鑰呭悕绉�"),
+ IsDeleted = table.Column<bool>(type: "bit", nullable: false, comment: "杞垹闄ゆ爣璁�")
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_wms_takematerial_orderdetail", x => x.Id);
+ table.ForeignKey(
+ name: "FK_wms_takematerial_orderdetail_wms_takematerialorder_OrderId",
+ column: x => x.OrderId,
+ principalTable: "wms_takematerialorder",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ },
+ comment: "鍗曟嵁鏄庣粏琛�");
+
+ migrationBuilder.InsertData(
+ table: "sys_app",
+ columns: new[] { "Id", "Active", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 142307070898245L, "Y", "system", null, null, null, false, "寮�鍙戠鐞�", 100, 0, null, null, null },
+ { 142307070902341L, "N", "manage", null, null, null, false, "绯荤粺绠$悊", 300, 0, null, null, null },
+ { 142307070922869L, "N", "busiapp", null, null, null, false, "涓氬姟搴旂敤", 400, 0, null, null, null },
+ { 355686432948293L, "N", "warejob", null, null, null, false, "浠撳簱浣滀笟", 500, 0, null, null, null },
+ { 355686518018117L, "N", "warecount", null, null, null, false, "缁熻鏌ヨ", 600, 0, null, null, null },
+ { 383337192390725L, "N", "xbjl", null, null, null, false, "绾胯竟鍙枡", 550, 0, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_config",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "GroupCode", "IsDeleted", "Name", "Remark", "Status", "SysFlag", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 142307070902342L, "DILON_JWT_SECRET", null, null, null, "DEFAULT", false, "jwt瀵嗛挜", "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆", 0, "Y", null, null, null, "weiben" },
+ { 142307070902343L, "DILON_DEFAULT_PASSWORD", null, null, null, "DEFAULT", false, "榛樿瀵嗙爜", "榛樿瀵嗙爜", 0, "Y", null, null, null, "123456" },
+ { 142307070902344L, "DILON_TOKEN_EXPIRE", null, null, null, "DEFAULT", false, "token杩囨湡鏃堕棿", "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", 0, "Y", null, null, null, "86400" },
+ { 142307070902345L, "DILON_SESSION_EXPIRE", null, null, null, "DEFAULT", false, "session浼氳瘽杩囨湡鏃堕棿", "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級", 0, "Y", null, null, null, "7200" },
+ { 142307070902361L, "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS", null, null, null, "FILE_PATH", false, "Win鏈湴涓婁紶鏂囦欢璺緞", "Win鏈湴涓婁紶鏂囦欢璺緞", 0, "Y", null, null, null, "D:/tmp" },
+ { 142307070902363L, "DILON_UN_XSS_FILTER_URL", null, null, null, "DEFAULT", false, "鏀惧紑XSS杩囨护鐨勬帴鍙�", "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑", 0, "Y", null, null, null, "/demo/xssfilter,/demo/unxss" },
+ { 142307070902364L, "DILON_ENABLE_SINGLE_LOGIN", null, null, null, "DEFAULT", false, "鍗曠敤鎴风櫥闄嗙殑寮�鍏�", "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓", 0, "Y", null, null, null, "false" },
+ { 142307070902365L, "DILON_CAPTCHA_OPEN", null, null, null, "DEFAULT", false, "鐧诲綍楠岃瘉鐮佺殑寮�鍏�", "true-鎵撳紑锛宖alse-鍏抽棴", 0, "Y", null, null, null, "true" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_type",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "EnumClassName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 142307070906483L, "common_status", null, null, null, null, false, "閫氱敤鐘舵��", "閫氱敤鐘舵��", 100, 0, null, null, null },
+ { 142307070906484L, "sex", null, null, null, null, false, "鎬у埆", "鎬у埆瀛楀吀", 100, 0, null, null, null },
+ { 142307070906485L, "consts_type", null, null, null, null, false, "甯搁噺鐨勫垎绫�", "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�", 100, 0, null, null, null },
+ { 142307070906486L, "yes_or_no", null, null, null, null, false, "鏄惁", "鏄惁", 100, 0, null, null, null },
+ { 142307070906487L, "vis_type", null, null, null, null, false, "璁块棶绫诲瀷", "璁块棶绫诲瀷", 100, 0, null, null, null },
+ { 142307070906488L, "menu_type", null, null, null, null, false, "鑿滃崟绫诲瀷", "鑿滃崟绫诲瀷", 100, 0, null, null, null },
+ { 142307070906489L, "send_type", null, null, null, null, false, "鍙戦�佺被鍨�", "鍙戦�佺被鍨�", 100, 0, null, null, null },
+ { 142307070906490L, "open_type", null, null, null, null, false, "鎵撳紑鏂瑰紡", "鎵撳紑鏂瑰紡", 100, 0, null, null, null },
+ { 142307070906491L, "menu_weight", null, null, null, null, false, "鑿滃崟鏉冮噸", "鑿滃崟鏉冮噸", 100, 0, null, null, null },
+ { 142307070906492L, "data_scope_type", null, null, null, null, false, "鏁版嵁鑼冨洿绫诲瀷", "鏁版嵁鑼冨洿绫诲瀷", 100, 0, null, null, null },
+ { 142307070906494L, "op_type", null, null, null, null, false, "鎿嶄綔绫诲瀷", "鎿嶄綔绫诲瀷", 100, 0, null, null, null },
+ { 142307070906495L, "file_storage_location", null, null, null, null, false, "鏂囦欢瀛樺偍浣嶇疆", "鏂囦欢瀛樺偍浣嶇疆", 100, 0, null, null, null },
+ { 142307070910533L, "run_status", null, null, null, null, false, "杩愯鐘舵��", "瀹氭椂浠诲姟杩愯鐘舵��", 100, 0, null, null, null },
+ { 142307070910534L, "notice_type", null, null, null, null, false, "閫氱煡鍏憡绫诲瀷", "閫氱煡鍏憡绫诲瀷", 100, 0, null, null, null },
+ { 142307070910535L, "notice_status", null, null, null, null, false, "閫氱煡鍏憡鐘舵��", "閫氱煡鍏憡鐘舵��", 100, 0, null, null, null },
+ { 142307070910536L, "yes_true_false", null, null, null, null, false, "鏄惁boolean", "鏄惁boolean", 100, 0, null, null, null },
+ { 142307070910537L, "code_gen_create_type", null, null, null, null, false, "浠g爜鐢熸垚鏂瑰紡", "浠g爜鐢熸垚鏂瑰紡", 100, 0, null, null, null },
+ { 142307070910538L, "request_type", null, null, null, null, false, "璇锋眰鏂瑰紡", "璇锋眰鏂瑰紡", 100, 0, null, null, null },
+ { 142307070922827L, "code_gen_effect_type", null, null, null, null, false, "浠g爜鐢熸垚浣滅敤绫诲瀷", "浠g爜鐢熸垚浣滅敤绫诲瀷", 100, 0, null, null, null },
+ { 142307070922828L, "code_gen_query_type", null, null, null, null, false, "浠g爜鐢熸垚鏌ヨ绫诲瀷", "浠g爜鐢熸垚鏌ヨ绫诲瀷", 100, 0, null, null, null },
+ { 142307070922829L, "code_gen_net_type", null, null, null, null, false, "浠g爜鐢熸垚.NET绫诲瀷", "浠g爜鐢熸垚.NET绫诲瀷", 100, 0, null, null, null },
+ { 142307070926941L, "role_type", null, null, null, null, false, "瑙掕壊绫诲瀷", "瑙掕壊绫诲瀷", 100, 0, null, null, null },
+ { 142307070926942L, "org_type", null, null, null, null, false, "鏈烘瀯绫诲瀷", "鏈烘瀯绫诲瀷", 100, 0, null, null, null },
+ { 285605149831237L, "form_type", null, null, null, null, false, "琛ㄥ崟绫诲瀷", "琛ㄥ崟绫诲瀷", 100, 0, null, null, null },
+ { 285641358889029L, "workflow_group", null, null, null, null, false, "娴佺▼鍒嗙被", "娴佺▼鍒嗙被", 100, 0, null, null, null },
+ { 355694205325381L, "container_type", null, null, null, null, false, "鎵樼洏绫诲瀷", "", 100, 0, null, null, null },
+ { 355697881423941L, "container_status", null, null, null, null, false, "鎵樼洏鐘舵��", "", 100, 0, null, null, null },
+ { 355697881423942L, "container_category", null, null, null, null, false, "鎵樼洏鍒嗙被", "", 100, 0, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_type",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "EnumClassName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 355698224758853L, "area_type", null, null, null, null, false, "搴撳尯绫诲瀷", "", 100, 0, null, null, null },
+ { 355698441912389L, "place_status", null, null, null, null, false, "搴撲綅鐘舵��", "", 100, 0, null, null, null },
+ { 355698661130309L, "height_level", null, null, null, null, false, "搴撲綅楂樺害", "", 100, 0, null, null, null },
+ { 355698855280709L, "material_inspection", null, null, null, null, false, "鐗╂枡妫�楠�", "", 100, 0, null, null, null },
+ { 355699003580485L, "material_type", null, null, null, null, false, "鐗╂枡绫诲埆", "", 100, 0, null, null, null },
+ { 355699189051461L, "unit_type", null, null, null, null, false, "鍗曚綅绫诲埆", "", 100, 0, null, null, null },
+ { 355699314061381L, "unitno_type", null, null, null, null, false, "鍗曚綅缂栧彿", "", 100, 0, null, null, null },
+ { 355699447029829L, "task_model", null, null, null, null, false, "浠诲姟鏂瑰紡", "", 100, 0, null, null, null },
+ { 355699576467525L, "task_type", null, null, null, null, false, "浠诲姟绫诲瀷", "", 100, 0, null, null, null },
+ { 355699731099717L, "task_status", null, null, null, null, false, "浠诲姟鐘舵��", "", 100, 0, null, null, null },
+ { 355699731099718L, "taskdodevice_statusenum", null, null, null, null, false, "浠诲姟璁惧鐘舵��", "", 100, 0, null, null, null },
+ { 383290718294085L, "les_workshop_type", null, null, null, null, false, "鎵�灞炶溅闂�", "", 100, 0, null, null, null },
+ { 383317542490181L, "les_takematerials_status", null, null, null, null, false, "鍙枡鍗曠姸鎬�", "", 100, 0, null, null, null },
+ { 384394636988485L, "dodevice_type", null, null, null, null, false, "璁惧绫诲瀷", "", 100, 0, null, null, null },
+ { 385412129075269L, "lesworkshop_section", null, null, null, null, false, "宸ユ", "", 100, 0, null, null, null },
+ { 386522984120389L, "les_entrance_type", null, null, null, null, false, "搴撳彛绫诲瀷", "", 100, 0, null, null, null },
+ { 386522984120390L, "blankingproductionLine_enum", null, null, null, null, false, "涓嬫枡浜х嚎", "", 100, 0, null, null, null },
+ { 386522984120391L, "orderdetails_statusenum", null, null, null, null, false, "鍗曟嵁鏄庣粏琛ㄧ姸鎬�", "", 100, 0, null, null, null },
+ { 386522984120392L, "orderlargecategory_Enum", null, null, null, null, false, "鍗曟嵁澶х被", "", 100, 0, null, null, null },
+ { 386522984120393L, "order_statusenum", null, null, null, null, false, "鍗曟嵁涓昏〃鐘舵��", "", 100, 0, null, null, null },
+ { 386522984120394L, "ordersubclass_enum", null, null, null, null, false, "鍗曟嵁灏忕被", "", 100, 0, null, null, null },
+ { 386522984120395L, "issue_state", null, null, null, null, false, "绛炬牳鐘舵��", "", 100, 0, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_emp",
+ columns: new[] { "Id", "JobNum", "OrgId", "OrgName" },
+ values: new object[,]
+ {
+ { 142307070910551L, "D1001", 142307070910539L, "绉熸埛3鍏徃" },
+ { 142307070910552L, "D1002", 142307070910539L, "绉熸埛3鍏徃" },
+ { 142307070910553L, "D1003", 142307070910539L, "绉熸埛3鍏徃" },
+ { 142307070910554L, "D1001", 142307070910547L, "绉熸埛1鍏徃" },
+ { 142307070910555L, "D1002", 142307070910547L, "绉熸埛1鍏徃" },
+ { 142307070910556L, "D1003", 142307070910547L, "绉熸埛1鍏徃" },
+ { 142307070910557L, "D1001", 142307070910548L, "绉熸埛2鍏徃" },
+ { 142307070910558L, "D1002", 142307070910548L, "绉熸埛2鍏徃" },
+ { 142307070910559L, "D1003", 142307070910548L, "绉熸埛2鍏徃" },
+ { 358533464608837L, "", 142307070910539L, "浼熸湰鑲′唤鏈夐檺鍏徃" },
+ { 358536045723717L, "", 142307070910542L, "鐮斿彂閮�" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 142307000914633L, "manage", "sys_mgr", "PageView", null, null, null, "team", false, null, "缁勭粐鏋舵瀯", 0, null, 0L, "[0],", null, null, "/sys", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070910563L, "manage", "auth_manager", "PageView", null, null, null, "safety-certificate", false, null, "鏉冮檺绠$悊", 0, null, 0L, "[0],", null, null, "/auth", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070910564L, "manage", "sys_user_mgr", "system/user/index", null, null, null, null, false, null, "鐢ㄦ埛绠$悊", 1, null, 142307070910563L, "[0],[142307070910563],", null, null, "/mgr_user", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070910565L, "manage", "sys_user_mgr_page", null, null, null, null, null, false, null, "鐢ㄦ埛鏌ヨ", 0, "sysUser:page", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910566L, "manage", "sys_user_mgr_edit", null, null, null, null, null, false, null, "鐢ㄦ埛缂栬緫", 0, "sysUser:edit", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910567L, "manage", "sys_user_mgr_add", null, null, null, null, null, false, null, "鐢ㄦ埛澧炲姞", 0, "sysUser:add", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910568L, "manage", "sys_user_mgr_delete", null, null, null, null, null, false, null, "鐢ㄦ埛鍒犻櫎", 0, "sysUser:delete", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910569L, "manage", "sys_user_mgr_detail", null, null, null, null, null, false, null, "鐢ㄦ埛璇︽儏", 0, "sysUser:detail", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910570L, "manage", "sys_user_mgr_export", null, null, null, null, null, false, null, "鐢ㄦ埛瀵煎嚭", 0, "sysUser:export", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 142307070910571L, "manage", "sys_user_mgr_selector", null, null, null, null, null, false, null, "鐢ㄦ埛閫夋嫨鍣�", 0, "sysUser:selector", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910572L, "manage", "sys_user_mgr_grant_role", null, null, null, null, null, false, null, "鐢ㄦ埛鎺堟潈瑙掕壊", 0, "sysUser:grantRole", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910573L, "manage", "sys_user_mgr_own_role", null, null, null, null, null, false, null, "鐢ㄦ埛鎷ユ湁瑙掕壊", 0, "sysUser:ownRole", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910574L, "manage", "sys_user_mgr_grant_data", null, null, null, null, null, false, null, "鐢ㄦ埛鎺堟潈鏁版嵁", 0, "sysUser:grantData", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910575L, "manage", "sys_user_mgr_own_data", null, null, null, null, null, false, null, "鐢ㄦ埛鎷ユ湁鏁版嵁", 0, "sysUser:ownData", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910576L, "manage", "sys_user_mgr_update_info", null, null, null, null, null, false, null, "鐢ㄦ埛鏇存柊淇℃伅", 0, "sysUser:updateInfo", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910577L, "manage", "sys_user_mgr_update_pwd", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼瀵嗙爜", 0, "sysUser:updatePwd", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910578L, "manage", "sys_user_mgr_change_status", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼鐘舵��", 0, "sysUser:changeStatus", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910579L, "manage", "sys_user_mgr_update_avatar", null, null, null, null, null, false, null, "鐢ㄦ埛淇敼澶村儚", 0, "sysUser:updateAvatar", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910580L, "manage", "sys_user_mgr_reset_pwd", null, null, null, null, null, false, null, "鐢ㄦ埛閲嶇疆瀵嗙爜", 0, "sysUser:resetPwd", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910581L, "manage", "sys_org_mgr", "system/org/index", null, null, null, null, false, null, "鏈烘瀯绠$悊", 1, null, 142307000914633L, "[0],[142307000914633],", null, null, "/org", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070910582L, "manage", "sys_org_mgr_page", null, null, null, null, null, false, null, "鏈烘瀯鏌ヨ", 0, "sysOrg:page", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910583L, "manage", "sys_org_mgr_list", null, null, null, null, null, false, null, "鏈烘瀯鍒楄〃", 0, "sysOrg:list", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910584L, "manage", "sys_org_mgr_add", null, null, null, null, null, false, null, "鏈烘瀯澧炲姞", 0, "sysOrg:add", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910585L, "manage", "sys_org_mgr_edit", null, null, null, null, null, false, null, "鏈烘瀯缂栬緫", 0, "sysOrg:edit", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910586L, "manage", "sys_org_mgr_delete", null, null, null, null, null, false, null, "鏈烘瀯鍒犻櫎", 0, "sysOrg:delete", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910587L, "manage", "sys_org_mgr_detail", null, null, null, null, null, false, null, "鏈烘瀯璇︽儏", 0, "sysOrg:detail", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910588L, "manage", "sys_org_mgr_tree", null, null, null, null, null, false, null, "鏈烘瀯鏍�", 0, "sysOrg:tree", 142307070910581L, "[0],[142307000914633],[142307070910581],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910589L, "manage", "sys_pos_mgr", "system/pos/index", null, null, null, null, false, null, "鑱屼綅绠$悊", 1, null, 142307000914633L, "[0],[142307000914633],", null, null, "/pos", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070910590L, "manage", "sys_pos_mgr_page", null, null, null, null, null, false, null, "鑱屼綅鏌ヨ", 0, "sysPos:page", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070910591L, "manage", "sys_pos_mgr_list", null, null, null, null, null, false, null, "鑱屼綅鍒楄〃", 0, "sysPos:list", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070911739L, "manage", "sys_log_mgr_ex_log", "system/log/exlog/index", null, null, null, null, false, null, "寮傚父鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/exlog", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070911740L, "manage", "sys_log_mgr_ex_log_page", null, null, null, null, null, false, null, "寮傚父鏃ュ織鏌ヨ", 0, "sysExLog:page", 142307070911739L, "[0],[142307070918732],[142307070911739],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070911741L, "manage", "sys_log_mgr_ex_log_delete", null, null, null, null, null, false, null, "寮傚父鏃ュ織娓呯┖", 0, "sysExLog:delete", 142307070911739L, "[0],[142307070918732],[142307070911739],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914629L, "manage", "sys_pos_mgr_add", null, null, null, null, null, false, null, "鑱屼綅澧炲姞", 0, "sysPos:add", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914630L, "manage", "sys_pos_mgr_edit", null, null, null, null, null, false, null, "鑱屼綅缂栬緫", 0, "sysPos:edit", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914631L, "manage", "sys_pos_mgr_delete", null, null, null, null, null, false, null, "鑱屼綅鍒犻櫎", 0, "sysPos:delete", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914632L, "manage", "sys_pos_mgr_detail", null, null, null, null, null, false, null, "鑱屼綅璇︽儏", 0, "sysPos:detail", 142307070910589L, "[0],[142307000914633],[142307070910589],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914633L, "system", "sys_platform", "PageView", null, null, null, "safety-certificate", false, null, "骞冲彴绠$悊", 0, null, 0L, "[0],", null, null, "/platform", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070914634L, "system", "sys_app_mgr", "system/app/index", null, null, null, null, false, null, "搴旂敤绠$悊", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/app", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070914635L, "system", "sys_app_mgr_page", null, null, null, null, null, false, null, "搴旂敤鏌ヨ", 0, "sysApp:page", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914636L, "system", "sys_app_mgr_list", null, null, null, null, null, false, null, "搴旂敤鍒楄〃", 0, "sysApp:list", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914637L, "system", "sys_app_mgr_add", null, null, null, null, null, false, null, "搴旂敤澧炲姞", 0, "sysApp:add", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914638L, "system", "sys_app_mgr_edit", null, null, null, null, null, false, null, "搴旂敤缂栬緫", 0, "sysApp:edit", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914639L, "system", "sys_app_mgr_delete", null, null, null, null, null, false, null, "搴旂敤鍒犻櫎", 0, "sysApp:delete", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914640L, "system", "sys_app_mgr_detail", null, null, null, null, null, false, null, "搴旂敤璇︽儏", 0, "sysApp:detail", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914641L, "system", "sys_app_mgr_set_as_default", null, null, null, null, null, false, null, "璁句负榛樿搴旂敤", 0, "sysApp:setAsDefault", 142307070914634L, "[0],[142307070914633],[142307070914634],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914642L, "system", "sys_menu_mgr", "system/menu/index", null, null, null, null, false, null, "鑿滃崟绠$悊", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/menu", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070914643L, "system", "sys_menu_mgr_list", null, null, null, null, null, false, null, "鑿滃崟鍒楄〃", 0, "sysMenu:list", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914644L, "system", "sys_menu_mgr_add", null, null, null, null, null, false, null, "鑿滃崟澧炲姞", 0, "sysMenu:add", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914645L, "system", "sys_menu_mgr_edit", null, null, null, null, null, false, null, "鑿滃崟缂栬緫", 0, "sysMenu:edit", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914646L, "system", "sys_menu_mgr_delete", null, null, null, null, null, false, null, "鑿滃崟鍒犻櫎", 0, "sysMenu:delete", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 142307070914647L, "system", "sys_menu_mgr_detail", null, null, null, null, null, false, null, "鑿滃崟璇︽儏", 0, "sysMenu:detail", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914648L, "manage", "sys_menu_mgr_grant_tree", null, null, null, null, null, false, null, "鑿滃崟鎺堟潈鏍�", 0, "sysMenu:treeForGrant", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914649L, "manage", "sys_menu_mgr_tree", null, null, null, null, null, false, null, "鑿滃崟鏍�", 0, "sysMenu:tree", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914650L, "system", "sys_menu_mgr_change", null, null, null, null, null, false, null, "鑿滃崟鍒囨崲", 0, "sysMenu:change", 142307070914642L, "[0],[142307070914633],[142307070914642],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914651L, "manage", "sys_role_mgr", "system/role/index", null, null, null, null, false, null, "瑙掕壊绠$悊", 1, null, 142307070910563L, "[0],[142307070910563],", null, null, "/role", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070914652L, "manage", "sys_role_mgr_page", null, null, null, null, null, false, null, "瑙掕壊鏌ヨ", 0, "sysRole:page", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914653L, "manage", "sys_role_mgr_add", null, null, null, null, null, false, null, "瑙掕壊澧炲姞", 0, "sysRole:add", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914654L, "manage", "sys_role_mgr_edit", null, null, null, null, null, false, null, "瑙掕壊缂栬緫", 0, "sysRole:edit", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914655L, "manage", "sys_role_mgr_delete", null, null, null, null, null, false, null, "瑙掕壊鍒犻櫎", 0, "sysRole:delete", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914656L, "manage", "sys_role_mgr_detail", null, null, null, null, null, false, null, "瑙掕壊璇︽儏", 0, "sysRole:detail", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914657L, "manage", "sys_role_mgr_drop_down", null, null, null, null, null, false, null, "瑙掕壊涓嬫媺", 0, "sysRole:dropDown", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914658L, "manage", "sys_role_mgr_grant_menu", null, null, null, null, null, false, null, "瑙掕壊鎺堟潈鑿滃崟", 0, "sysRole:grantMenu", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914659L, "manage", "sys_role_mgr_own_menu", null, null, null, null, null, false, null, "瑙掕壊鎷ユ湁鑿滃崟", 0, "sysRole:ownMenu", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914660L, "manage", "sys_role_mgr_grant_data", null, null, null, null, null, false, null, "瑙掕壊鎺堟潈鏁版嵁", 0, "sysRole:grantData", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914661L, "manage", "sys_role_mgr_own_data", null, null, null, null, null, false, null, "瑙掕壊鎷ユ湁鏁版嵁", 0, "sysRole:ownData", 142307070914651L, "[0],[142307070910563],[142307070914651],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914662L, "system", "system_tools", "PageView", null, null, null, "euro", false, null, "寮�鍙戠鐞�", 0, null, 0L, "[0],", null, null, "/tools", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070914663L, "system", "system_tools_config", "system/config/index", null, null, null, null, false, null, "绯荤粺閰嶇疆", 1, null, 142307070914662L, "[0],[142307070914662],", null, null, "/config", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070914664L, "system", "system_tools_config_page", null, null, null, null, null, false, null, "閰嶇疆鏌ヨ", 0, "sysConfig:page", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914665L, "system", "system_tools_config_list", null, null, null, null, null, false, null, "閰嶇疆鍒楄〃", 0, "sysConfig:list", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914666L, "system", "system_tools_config_add", null, null, null, null, null, false, null, "閰嶇疆澧炲姞", 0, "sysConfig:add", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914667L, "system", "system_tools_config_edit", null, null, null, null, null, false, null, "閰嶇疆缂栬緫", 0, "sysConfig:edit", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914668L, "system", "system_tools_config_delete", null, null, null, null, null, false, null, "閰嶇疆鍒犻櫎", 0, "sysConfig:delete", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914669L, "system", "system_tools_config_detail", null, null, null, null, null, false, null, "閰嶇疆璇︽儏", 0, "sysConfig:detail", 142307070914663L, "[0],[142307070914662],[142307070914663],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914678L, "system", "sys_dict_mgr", "system/dict/index", null, null, null, null, false, null, "瀛楀吀绠$悊", 1, null, 142307070914662L, "[0],[142307070914662],", null, null, "/dict", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070914679L, "system", "sys_dict_mgr_dict_type_page", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鏌ヨ", 0, "sysDictType:page", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914680L, "system", "sys_dict_mgr_dict_type_list", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鍒楄〃", 0, "sysDictType:list", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914681L, "system", "sys_dict_mgr_dict_type_add", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷澧炲姞", 0, "sysDictType:add", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914682L, "system", "sys_dict_mgr_dict_type_delete", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷鍒犻櫎", 0, "sysDictType:delete", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914683L, "system", "sys_dict_mgr_dict_type_edit", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷缂栬緫", 0, "sysDictType:edit", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914684L, "system", "sys_dict_mgr_dict_type_detail", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷璇︽儏", 0, "sysDictType:detail", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914685L, "system", "sys_dict_mgr_dict_type_drop_down", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷涓嬫媺", 0, "sysDictType:dropDown", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914686L, "system", "sys_dict_mgr_dict_type_change_status", null, null, null, null, null, false, null, "瀛楀吀绫诲瀷淇敼鐘舵��", 0, "sysDictType:changeStatus", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070914687L, "system", "sys_dict_mgr_dict_page", null, null, null, null, null, false, null, "瀛楀吀鍊兼煡璇�", 0, "sysDictData:page", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918725L, "system", "sys_dict_mgr_dict_list", null, null, null, null, null, false, null, "瀛楀吀鍊煎垪琛�", 0, "sysDictData:list", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918726L, "system", "sys_dict_mgr_dict_add", null, null, null, null, null, false, null, "瀛楀吀鍊煎鍔�", 0, "sysDictData:add", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918727L, "system", "sys_dict_mgr_dict_delete", null, null, null, null, null, false, null, "瀛楀吀鍊煎垹闄�", 0, "sysDictData:delete", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918728L, "system", "sys_dict_mgr_dict_edit", null, null, null, null, null, false, null, "瀛楀吀鍊肩紪杈�", 0, "sysDictData:edit", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918729L, "system", "sys_dict_mgr_dict_detail", null, null, null, null, null, false, null, "瀛楀吀鍊艰鎯�", 0, "sysDictData:detail", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918730L, "system", "sys_dict_mgr_dict_change_status", null, null, null, null, null, false, null, "瀛楀吀鍊间慨鏀圭姸鎬�", 0, "sysDictData:changeStatus", 142307070914678L, "[0],[142307070914662],[142307070914678],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918731L, "system", "sys_swagger_mgr", "Iframe", null, null, null, null, false, "http://localhost:6677/swagger/", "鎺ュ彛鏂囨。", 2, null, 142307070914662L, "[0],[142307070914662],", null, null, "/swagger", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918732L, "manage", "sys_log_mgr", "PageView", null, null, null, "read", false, null, "鏃ュ織绠$悊", 0, null, 0L, "[0],", null, null, "/log", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918733L, "manage", "sys_log_mgr_vis_log", "system/log/vislog/index", null, null, null, null, false, null, "璁块棶鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/vislog", 100, 0, 1, null, null, null, "Y", 1 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 142307070918734L, "manage", "sys_log_mgr_vis_log_page", null, null, null, null, null, false, null, "璁块棶鏃ュ織鏌ヨ", 0, "sysVisLog:page", 142307070918733L, "[0],[142307070918732],[142307070918733],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918735L, "manage", "sys_log_mgr_vis_log_delete", null, null, null, null, null, false, null, "璁块棶鏃ュ織娓呯┖", 0, "sysVisLog:delete", 142307070918733L, "[0],[142307070918732],[142307070918733],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918736L, "manage", "sys_log_mgr_op_log", "system/log/oplog/index", null, null, null, null, false, null, "鎿嶄綔鏃ュ織", 1, null, 142307070918732L, "[0],[142307070918732],", null, null, "/oplog", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918737L, "manage", "sys_log_mgr_op_log_page", null, null, null, null, null, false, null, "鎿嶄綔鏃ュ織鏌ヨ", 0, "sysOpLog:page", 142307070918736L, "[0],[142307070918732],[142307070918736],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918738L, "manage", "sys_log_mgr_op_log_delete", null, null, null, null, null, false, null, "鎿嶄綔鏃ュ織娓呯┖", 0, "sysOpLog:delete", 142307070918736L, "[0],[142307070918732],[142307070918736],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918739L, "system", "sys_monitor_mgr", "PageView", null, null, null, "deployment-unit", false, null, "绯荤粺鐩戞帶", 0, null, 0L, "[0],", null, null, "/monitor", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918740L, "system", "sys_monitor_mgr_machine_monitor", "system/machine/index", null, null, null, null, false, null, "鏈嶅姟鐩戞帶", 1, null, 142307070918739L, "[0],[142307070918739],", null, null, "/machine", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918741L, "system", "sys_monitor_mgr_machine_monitor_query", null, null, null, null, null, false, null, "鏈嶅姟鐩戞帶鏌ヨ", 0, "sysMachine:query", 142307070918740L, "[0],[142307070918739],[142307070918740],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918742L, "system", "sys_monitor_mgr_online_user", "system/onlineUser/index", null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛", 1, null, 142307070918739L, "[0],[142307070918739],", null, null, "/onlineUser", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918743L, "system", "sys_monitor_mgr_online_user_page", null, null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛鏌ヨ", 0, "sysOnlineUser:page", 142307070918742L, "[0],[142307070918739],[142307070918742],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918744L, "system", "sys_monitor_mgr_online_user_force_exist", null, null, null, null, null, false, null, "鍦ㄧ嚎鐢ㄦ埛寮洪��", 0, "sysOnlineUser:forceExist", 142307070918742L, "[0],[142307070918739],[142307070918742],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918745L, "system", "sys_monitor_mgr_druid", "Iframe", null, null, null, null, false, "http://localhost:82/druid/login.html", "鏁版嵁鐩戞帶", 2, null, 142307070918739L, "[0],[142307070918739],", null, null, "/druid", 100, 0, 1, null, null, null, "N", 1 },
+ { 142307070918746L, "manage", "sys_notice", "PageView", null, null, null, "sound", false, null, "閫氱煡鍏憡", 0, null, 0L, "[0],", null, null, "/notice", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918747L, "manage", "sys_notice_mgr", "system/notice/index", null, null, null, null, false, null, "鍏憡绠$悊", 1, null, 142307070918746L, "[0],[142307070918746],", null, null, "/notice", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918748L, "manage", "sys_notice_mgr_page", null, null, null, null, null, false, null, "鍏憡鏌ヨ", 0, "sysNotice:page", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918749L, "manage", "sys_notice_mgr_add", null, null, null, null, null, false, null, "鍏憡澧炲姞", 0, "sysNotice:add", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918750L, "manage", "sys_notice_mgr_edit", null, null, null, null, null, false, null, "鍏憡缂栬緫", 0, "sysNotice:edit", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918751L, "manage", "sys_notice_mgr_delete", null, null, null, null, null, false, null, "鍏憡鍒犻櫎", 0, "sysNotice:delete", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918752L, "manage", "sys_notice_mgr_detail", null, null, null, null, null, false, null, "鍏憡鏌ョ湅", 0, "sysNotice:detail", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918753L, "manage", "sys_notice_mgr_changeStatus", null, null, null, null, null, false, null, "鍏憡淇敼鐘舵��", 0, "sysNotice:changeStatus", 142307070918747L, "[0],[142307070918746],[142307070918747],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918754L, "manage", "sys_notice_mgr_received", "system/noticeReceived/index", null, null, null, null, false, null, "宸叉敹鍏憡", 1, null, 142307070918746L, "[0],[142307070918746],", null, null, "/noticeReceived", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918755L, "manage", "sys_notice_mgr_received_page", null, null, null, null, null, false, null, "宸叉敹鍏憡鏌ヨ", 0, "sysNotice:received", 142307070918754L, "[0],[142307070918746],[142307070918754],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918756L, "manage", "sys_file_mgr", "PageView", null, null, null, "file", false, null, "鏂囦欢绠$悊", 0, null, 0L, "[0],", null, null, "/file", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918757L, "manage", "sys_file_mgr_sys_file", "system/file/index", null, null, null, null, false, null, "绯荤粺鏂囦欢", 1, null, 142307070918756L, "[0],[142307070918756],", null, null, "/file", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918758L, "manage", "sys_file_mgr_sys_file_page", null, null, null, null, null, false, null, "鏂囦欢鏌ヨ", 0, "sysFileInfo:page", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918759L, "manage", "sys_file_mgr_sys_file_list", null, null, null, null, null, false, null, "鏂囦欢鍒楄〃", 0, "sysFileInfo:list", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918760L, "manage", "sys_file_mgr_sys_file_delete", null, null, null, null, null, false, null, "鏂囦欢鍒犻櫎", 0, "sysFileInfo:delete", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918761L, "manage", "sys_file_mgr_sys_file_detail", null, null, null, null, null, false, null, "鏂囦欢璇︽儏", 0, "sysFileInfo:detail", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918762L, "manage", "sys_file_mgr_sys_file_upload", null, null, null, null, null, false, null, "鏂囦欢涓婁紶", 0, "sysFileInfo:upload", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918763L, "manage", "sys_file_mgr_sys_file_download", null, null, null, null, null, false, null, "鏂囦欢涓嬭浇", 0, "sysFileInfo:download", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918764L, "manage", "sys_file_mgr_sys_file_preview", null, null, null, null, null, false, null, "鍥剧墖棰勮", 0, "sysFileInfo:preview", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918765L, "system", "sys_timers", "PageView", null, null, null, "dashboard", false, null, "浠诲姟璋冨害", 0, null, 0L, "[0],", null, null, "/timers", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918766L, "system", "sys_timers_mgr", "system/timers/index", null, null, null, null, false, null, "浠诲姟绠$悊", 1, null, 142307070918765L, "[0],[142307070918765],", null, null, "/timers", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918767L, "system", "sys_timers_mgr_page", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鏌ヨ", 0, "sysTimers:page", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918768L, "system", "sys_timers_mgr_list", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍒楄〃", 0, "sysTimers:list", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918769L, "system", "sys_timers_mgr_detail", null, null, null, null, null, false, null, "瀹氭椂浠诲姟璇︽儏", 0, "sysTimers:detail", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918770L, "system", "sys_timers_mgr_add", null, null, null, null, null, false, null, "瀹氭椂浠诲姟澧炲姞", 0, "sysTimers:add", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918771L, "system", "sys_timers_mgr_delete", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍒犻櫎", 0, "sysTimers:delete", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918772L, "system", "sys_timers_mgr_edit", null, null, null, null, null, false, null, "瀹氭椂浠诲姟缂栬緫", 0, "sysTimers:edit", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918773L, "system", "sys_timers_mgr_get_action_classes", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍙墽琛屽垪琛�", 0, "sysTimers:getActionClasses", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918774L, "system", "sys_timers_mgr_start", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍚姩", 0, "sysTimers:start", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070918775L, "system", "sys_timers_mgr_stop", null, null, null, null, null, false, null, "瀹氭椂浠诲姟鍏抽棴", 0, "sysTimers:stop", 142307070918766L, "[0],[142307070918765],[142307070918766],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 142307070918776L, "system", "code_gen", "PageView", null, null, null, "thunderbolt", false, null, "浠g爜鐢熸垚", 0, null, 0L, "[0],", null, null, "/codeGenerate", 100, 0, 0, null, null, null, "Y", 1 },
+ { 142307070918777L, "manage", "sys_user_mgr_login", null, null, null, null, null, false, null, "鐢ㄦ埛鐧诲綍淇℃伅", 0, "getLoginUser", 142307070910564L, "[0],[142307070910563],[142307070910564],", null, null, null, 100, 1, 2, null, null, null, "N", 1 },
+ { 142307070918778L, "system", "low_code", "gen/lowCode/index", null, null, null, null, false, null, "琛ㄥ崟璁捐", 0, null, 142307070918776L, "[0],[142307070918776],", null, null, "/lowCode/index", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070918779L, "system", "code_gen_gen", "gen/codeGenerate/index", null, null, null, null, false, null, "浠g爜鐢熸垚", 0, null, 142307070918776L, "[0],[142307070918776],", null, null, "/codeGenerate/index", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070922870L, "system", "form_design", "system/formDesign/index", null, null, null, null, false, null, "琛ㄥ崟璁捐", 0, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/index", 100, 0, 1, null, null, null, "Y", 1 },
+ { 142307070922874L, "manage", "sys_file_mgr_sys_file_upload_avatar", null, null, null, null, null, false, null, "澶村儚涓婁紶", 0, "sysFileInfo:uploadAvatar", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070922875L, "manage", "sys_file_mgr_sys_file_upload_document", null, null, null, null, null, false, null, "鏂囨。涓婁紶", 0, "sysFileInfo:uploadDocument", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 142307070922876L, "manage", "sys_file_mgr_sys_file_upload_shop", null, null, null, null, null, false, null, "鍟嗗煄涓婁紶", 0, "sysFileInfo:uploadShop", 142307070918757L, "[0],[142307070918756],[142307070918757],", null, null, null, 100, 0, 2, null, null, null, "Y", 1 },
+ { 285599875018821L, "system", "sys_formDesign", "PageView", null, null, null, "snippets", false, null, "琛ㄥ崟绠$悊", 1, null, 0L, "[0],", null, null, "/formDesign", 100, 0, 0, null, null, null, "Y", 1 },
+ { 285599875018823L, "system", "sys_formDesign_list", "system/formDesign/list", null, null, null, null, false, null, "琛ㄥ崟鍒楄〃", 1, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/list", 100, 0, 1, null, null, null, "Y", 1 },
+ { 285635743518789L, "system", "sys_formDesign_edit", "system/formDesign/edit", null, null, null, null, false, null, "淇敼琛ㄥ崟", 1, null, 285599875018821L, "[0],[285599875018821],", null, null, "/formDesign/edit", 100, 0, 1, null, null, null, "N", 1 },
+ { 285640475689029L, "system", "btn_formDesign_edit", "", null, null, null, null, false, null, "淇敼琛ㄥ崟", 0, "formmanager:edit", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+ { 285640599859269L, "system", "btn_formDesign_delete", "", null, null, null, null, false, null, "鍒犻櫎琛ㄥ崟", 0, "formmanager:delete", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+ { 285640740945989L, "system", "btn_formDesign_page", "", null, null, null, null, false, null, "琛ㄥ崟鍒楄〃", 0, "formmanager:page", 285599875018823L, "[0],[285599875018821],[285599875018823],", null, null, "", 100, 0, 2, null, null, null, "Y", 1 },
+ { 355687925174341L, "busiapp", "Maste_wmscontainer_mgr", "main/WmsContainer/index", null, null, null, "border", false, null, "鎵樼洏淇℃伅", 1, null, 0L, "[0],", null, null, "/wmscontainer", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355687925178437L, "busiapp", "Maste_wmscontainer_mgr_page", null, null, null, null, null, false, null, "鎵樼洏淇℃伅鏌ヨ", 0, "WmsContainer:page", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355687925178438L, "busiapp", "Maste_wmscontainer_mgr_detail", null, null, null, null, null, false, null, "鎵樼洏淇℃伅璇︽儏", 0, "WmsContainer:detail", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355687925178439L, "busiapp", "Maste_wmscontainer_mgr_add", null, null, null, null, null, false, null, "鎵樼洏淇℃伅澧炲姞", 0, "WmsContainer:add", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355687925182533L, "busiapp", "Maste_wmscontainer_mgr_delete", null, null, null, null, null, false, null, "鎵樼洏淇℃伅鍒犻櫎", 0, "WmsContainer:delete", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355687925182534L, "busiapp", "Maste_wmscontainer_mgr_edit", null, null, null, null, null, false, null, "鎵樼洏淇℃伅缂栬緫", 0, "WmsContainer:edit", 355687925174341L, "[0],[355687924998213],[355687925174341],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355688792178757L, "busiapp", "Maste_wmsarea_mgr", "main/WmsArea/index", null, null, null, "appstore", false, null, "搴撳尯淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsarea", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355688792182853L, "busiapp", "Maste_wmsarea_mgr_page", null, null, null, null, null, false, null, "搴撳尯淇℃伅鏌ヨ", 0, "WmsArea:page", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355688792182854L, "busiapp", "Maste_wmsarea_mgr_detail", null, null, null, null, null, false, null, "搴撳尯淇℃伅璇︽儏", 0, "WmsArea:detail", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355688792186949L, "busiapp", "Maste_wmsarea_mgr_add", null, null, null, null, null, false, null, "搴撳尯淇℃伅澧炲姞", 0, "WmsArea:add", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355688792186950L, "busiapp", "Maste_wmsarea_mgr_delete", null, null, null, null, null, false, null, "搴撳尯淇℃伅鍒犻櫎", 0, "WmsArea:delete", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355688792186951L, "busiapp", "Maste_wmsarea_mgr_edit", null, null, null, null, null, false, null, "搴撳尯淇℃伅缂栬緫", 0, "WmsArea:edit", 355688792178757L, "[0],[355688792162373],[355688792178757],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355689496985669L, "busiapp", "Maste_wmsplace_mgr", "main/WmsPlace/index", null, null, null, "table", false, null, "搴撲綅淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsplace", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355689496989765L, "busiapp", "Maste_wmsplace_mgr_page", null, null, null, null, null, false, null, "搴撲綅淇℃伅鏌ヨ", 0, "WmsPlace:page", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355689496993861L, "busiapp", "Maste_wmsplace_mgr_detail", null, null, null, null, null, false, null, "搴撲綅淇℃伅璇︽儏", 0, "WmsPlace:detail", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355689496993862L, "busiapp", "Maste_wmsplace_mgr_add", null, null, null, null, null, false, null, "搴撲綅淇℃伅澧炲姞", 0, "WmsPlace:add", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355689496993863L, "busiapp", "Maste_wmsplace_mgr_delete", null, null, null, null, null, false, null, "搴撲綅淇℃伅鍒犻櫎", 0, "WmsPlace:delete", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355689496993864L, "busiapp", "Maste_wmsplace_mgr_edit", null, null, null, null, null, false, null, "搴撲綅淇℃伅缂栬緫", 0, "WmsPlace:edit", 355689496985669L, "[0],[355689496977477],[355689496985669],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690042511429L, "busiapp", "Maste_wmsmaterial_mgr", "main/WmsMaterial/index", null, null, null, "barcode", false, null, "鐗╂枡淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsmaterial", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355690042515525L, "busiapp", "Maste_wmsmaterial_mgr_page", null, null, null, null, null, false, null, "鐗╂枡淇℃伅鏌ヨ", 0, "WmsMaterial:page", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690042519621L, "busiapp", "Maste_wmsmaterial_mgr_detail", null, null, null, null, null, false, null, "鐗╂枡淇℃伅璇︽儏", 0, "WmsMaterial:detail", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690042519622L, "busiapp", "Maste_wmsmaterial_mgr_add", null, null, null, null, null, false, null, "鐗╂枡淇℃伅澧炲姞", 0, "WmsMaterial:add", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690042519623L, "busiapp", "Maste_wmsmaterial_mgr_delete", null, null, null, null, null, false, null, "鐗╂枡淇℃伅鍒犻櫎", 0, "WmsMaterial:delete", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690042519624L, "busiapp", "Maste_wmsmaterial_mgr_edit", null, null, null, null, null, false, null, "鐗╂枡淇℃伅缂栬緫", 0, "WmsMaterial:edit", 355690042511429L, "[0],[355690042499141],[355690042511429],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 355690923847749L, "warejob", "BindEntrance", "main/BindEntrance/index", null, null, null, "logout", false, null, "缁勭洏鍏ュ簱", 1, null, 0L, "[0],", null, null, "/BindEntrance", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355691450822725L, "warejob", "ExWarehouse", "main/ExWarehouse/index", null, null, null, "login", false, null, "鍑哄簱绠$悊", 1, null, 0L, "[0],", null, null, "/ExWarehouse", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355691891650629L, "warejob", "WmsTask", "main/WmsTask/index", null, null, null, "hourglass", false, null, "浠诲姟绠$悊", 1, null, 0L, "[0],", null, null, "/WmsTask", 100, 0, 1, null, null, null, "Y", 2 },
+ { 355692253458501L, "warecount", "LocationView", "main/LocationView/index", null, null, null, "hdd", false, null, "搴撲綅瑙嗗浘", 1, null, 0L, "[0],", null, null, "/LocationView", 100, 0, 1, null, null, null, "Y", 2 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_menu",
+ columns: new[] { "Id", "Application", "Code", "Component", "CreatedTime", "CreatedUserId", "CreatedUserName", "Icon", "IsDeleted", "Link", "Name", "OpenType", "Permission", "Pid", "Pids", "Redirect", "Remark", "Router", "Sort", "Status", "Type", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Visible", "Weight" },
+ values: new object[,]
+ {
+ { 355692487622725L, "warecount", "View_AccessDetails", "main/View_AccessDetails/index", null, null, null, "laptop", false, null, "鍑哄叆搴撹褰�", 1, null, 0L, "[0],", null, null, "/View_AccessDetails", 100, 0, 1, null, null, null, "Y", 2 },
+ { 383310358700101L, "busiapp", "Maste_lesproductionline_mgr", "main/LesProductionline/index", null, null, null, "gateway", false, null, "浜х嚎淇℃伅", 1, null, 0L, "[0],", null, null, "/lesproductionline", 100, 0, 1, null, null, null, "Y", 2 },
+ { 383310359138373L, "busiapp", "Maste_lesproductionline_mgr_page", null, null, null, null, null, false, null, "浜х嚎淇℃伅鏌ヨ", 0, "LesProductionline:page", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383310359146565L, "busiapp", "Maste_lesproductionline_mgr_detail", null, null, null, null, null, false, null, "浜х嚎淇℃伅璇︽儏", 0, "LesProductionline:detail", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383310359146566L, "busiapp", "Maste_lesproductionline_mgr_add", null, null, null, null, null, false, null, "浜х嚎淇℃伅澧炲姞", 0, "LesProductionline:add", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383310359150661L, "busiapp", "Maste_lesproductionline_mgr_delete", null, null, null, null, null, false, null, "浜х嚎淇℃伅鍒犻櫎", 0, "LesProductionline:delete", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383310359154757L, "busiapp", "Maste_lesproductionline_mgr_edit", null, null, null, null, null, false, null, "浜х嚎淇℃伅缂栬緫", 0, "LesProductionlinel:edit", 383310358700101L, "[0],[383310357848133],[383310358700101],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383311866703941L, "busiapp", "Maste_lesstation_mgr", "main/LesStation/index", null, null, null, "team", false, null, "宸ヤ綅淇℃伅", 1, null, 0L, "[0],", null, null, "/lesstation", 100, 0, 1, null, null, null, "Y", 2 },
+ { 383311866744901L, "busiapp", "Maste_lesstation_mgr_page", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅鏌ヨ", 0, "LesStation:page", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383311866748997L, "busiapp", "Maste_lesstation_mgr_detail", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅璇︽儏", 0, "LesStation:detail", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383311866753093L, "busiapp", "Maste_lesstation_mgr_add", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅澧炲姞", 0, "LesStation:add", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383311866753094L, "busiapp", "Maste_lesstation_mgr_delete", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅鍒犻櫎", 0, "LesStation:delete", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383311866753095L, "busiapp", "Maste_lesstation_mgr_edit", null, null, null, null, null, false, null, "宸ヤ綅淇℃伅缂栬緫", 0, "LesStation:edit", 383311866703941L, "[0],[383311866441797],[383311866703941],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383328166334533L, "xbjl", "Maste_lestakematerials_mgr", "main/LesTakematerials/index", null, null, null, "deployment-unit", false, null, "鍙枡绠$悊", 1, null, 0L, "[0],", null, null, "/lestakematerials", 100, 0, 1, null, null, null, "Y", 2 },
+ { 383328166449221L, "xbjl", "Maste_lestakematerials_mgr_page", null, null, null, null, null, false, null, "鍙枡鏌ヨ", 0, "LesTakematerials:page", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383328166457413L, "xbjl", "Maste_lestakematerials_mgr_detail", null, null, null, null, null, false, null, "鍙枡璇︽儏", 0, "LesTakematerials:detail", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383328166461509L, "xbjl", "Maste_lestakematerials_mgr_add", null, null, null, null, null, false, null, "鍙枡澧炲姞", 0, "LesTakematerials:add", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383328166461510L, "xbjl", "Maste_lestakematerials_mgr_delete", null, null, null, null, null, false, null, "鍙枡鍒犻櫎", 0, "LesTakematerials:delete", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 383328166461511L, "xbjl", "Maste_lestakematerials_mgr_edit", null, null, null, null, null, false, null, "鍙枡缂栬緫", 0, "LesTakematerials:edit", 383328166334533L, "[0],[383328165556293],[383328166334533],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 386851902500933L, "warecount", "Maste_wmsmaterialstock_mgr", "main/WmsMaterialStock/index", null, null, null, "vertical-left", false, null, "搴撳瓨淇℃伅", 1, null, 0L, "[0],", null, null, "/wmsmaterialstock", 100, 0, 1, null, null, null, "Y", 2 },
+ { 386851902545989L, "warecount", "Maste_wmsmaterialstock_mgr_page", null, null, null, null, null, false, null, "搴撳瓨鏌ヨ", 0, "WmsMaterialStock:page", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 386851902550085L, "warecount", "Maste_wmsmaterialstock_mgr_detail", null, null, null, null, null, false, null, "搴撳瓨璇︽儏", 0, "WmsMaterialStock:detail", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 386851902554181L, "warecount", "Maste_wmsmaterialstock_mgr_add", null, null, null, null, null, false, null, "搴撳瓨澧炲姞", 0, "WmsMaterialStock:add", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 386851902558277L, "warecount", "Maste_wmsmaterialstock_mgr_delete", null, null, null, null, null, false, null, "搴撳瓨鍒犻櫎", 0, "WmsMaterialStock:delete", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 386851902558278L, "warecount", "Maste_wmsmaterialstock_mgr_edit", null, null, null, null, null, false, null, "搴撳瓨缂栬緫", 0, "WmsMaterialStock:edit", 386851902500933L, "[0],[386851902124101],[386851902500933],", null, null, null, 100, 0, 2, null, null, null, "Y", 2 },
+ { 494834310545477L, "system", "sys_wmspdapower_mgr", "main/WmsPdaPower/index", null, null, null, null, false, null, "Pda鑿滃崟", 1, null, 142307070914633L, "[0],[142307070914633],", null, null, "/WmsPdaPower", 101, 0, 1, null, null, null, "Y", 1 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_org",
+ columns: new[] { "Id", "Code", "Contacts", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "OrgType", "Pid", "Pids", "Remark", "Sort", "Status", "Tel", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 142307070910539L, "wbgf", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃", null, 0L, "[0],", "浼熸湰鑲′唤鏈夐檺鍏徃", 100, 0, null, null, null, null },
+ { 142307070910540L, "wbgf_sh", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)", null, 142307070910539L, "[0],[142307070910539],", "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣", 100, 0, null, null, null, null },
+ { 142307070910541L, "wbgf_cq", null, null, null, null, false, "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)", null, 142307070910539L, "[0],[142307070910539],", "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡", 100, 0, null, null, null, null },
+ { 142307070910542L, "wbgf_sh_yfb", null, null, null, null, false, "鐮斿彂閮�", null, 142307070910540L, "[0],[142307070910539],[142307070910540],", "", 100, 0, null, null, null, null },
+ { 142307070910543L, "wbgf_sh_qhb", null, null, null, null, false, "浼佸垝閮�", null, 142307070910540L, "[0],[142307070910539],[142307070910540],", "", 100, 0, null, null, null, null },
+ { 142307070910544L, "wbgf_cq_scb", null, null, null, null, false, "甯傚満閮�", null, 142307070910541L, "[0],[142307070910539],[142307070910541],", "", 100, 0, null, null, null, null },
+ { 142307070910545L, "wbgf_cq_cwb", null, null, null, null, false, "璐㈠姟閮�", null, 142307070910541L, "[0],[142307070910539],[142307070910541],", "", 100, 0, null, null, null, null },
+ { 142307070910546L, "wbgf_cq_scb", null, null, null, null, false, "甯傚満閮ㄤ簩閮�", null, 142307070910544L, "[0],[142307070910539],[142307070910541],[142307070910544],", "", 100, 0, null, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_pos",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Name", "Remark", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 142307070910547L, "zjl", null, null, null, false, "鎬荤粡鐞�", "鎬荤粡鐞�", 100, 0, null, null, null },
+ { 142307070910548L, "fzjl", null, null, null, false, "鍓�荤粡鐞�", "鍓�荤粡鐞�", 101, 0, null, null, null },
+ { 142307070910549L, "bmjl", null, null, null, false, "閮ㄩ棬缁忕悊", "閮ㄩ棬缁忕悊", 102, 0, null, null, null },
+ { 142307070910550L, "gzry", null, null, null, false, "宸ヤ綔浜哄憳", "宸ヤ綔浜哄憳", 103, 0, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_role",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "DataScopeType", "IsDeleted", "Name", "Remark", "RoleType", "Sort", "Status", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[,]
+ {
+ { 142307070910554L, "sys_manager_role", null, null, null, 1, false, "绯荤粺绠$悊鍛�", "绯荤粺绠$悊鍛�", 0, 100, 0, null, null, null },
+ { 356094617575493L, "admin", null, null, null, 1, false, "绠$悊鍛�", "", 0, 100, 0, null, null, null },
+ { 358509609758789L, "ware", null, null, null, 1, false, "浠撳簱鐢ㄦ埛", "", 0, 100, 0, null, null, null },
+ { 358536344862789L, "iWare", null, null, null, 5, false, "鐮斿彂鐢ㄦ埛", "", 0, 100, 0, null, null, null }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_timer",
+ columns: new[] { "Id", "CreatedTime", "CreatedUserId", "CreatedUserName", "Cron", "DoOnce", "ExecuteType", "Headers", "Interval", "IsDeleted", "JobName", "Remark", "RequestParameters", "RequestType", "RequestUrl", "StartNow", "TimerType", "UpdatedTime", "UpdatedUserId", "UpdatedUserName" },
+ values: new object[] { 142307070910556L, null, null, null, null, false, 1, null, 5, false, "鐧惧害api", "鎺ュ彛API", null, 2, "https://www.baidu.com", false, 0, null, null, null });
+
+ migrationBuilder.InsertData(
+ table: "sys_user",
+ columns: new[] { "Id", "Account", "AdminType", "Avatar", "Birthday", "CreatedTime", "CreatedUserId", "CreatedUserName", "Email", "IsDeleted", "LastLoginIp", "LastLoginTime", "Name", "NickName", "Password", "Phone", "ProductionlineId", "Sex", "Status", "Tel", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "WorkShopType" },
+ values: new object[,]
+ {
+ { 142307070910551L, "superAdmin", 1, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "瓒呯骇绠$悊鍛�", "superAdmin", "e10adc3949ba59abbe56e057f20f883e", "18020030720", 0L, 1, 0, null, null, null, null, 0 },
+ { 142307070910552L, "admin", 2, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "绯荤粺绠$悊鍛�", "admin", "e10adc3949ba59abbe56e057f20f883e", "18020030720", 0L, 1, 0, null, null, null, null, 0 },
+ { 358533464608837L, "warehouse", 3, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "浠撳簱鐢ㄦ埛", "warehouse", "e10adc3949ba59abbe56e057f20f883e", "13869156666", 0L, 1, 0, null, null, null, null, 0 },
+ { 358536045723717L, "admin1", 3, null, new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), null, null, null, null, false, null, null, "鐮斿彂閮�", "admin1", "f379eaf3c831b04de153469d1bec345e", "13869156666", 0L, 1, 0, null, null, null, null, 0 }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_data",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 142307070902375L, "1", null, null, null, false, "鐢锋��", 100, 0, 142307070906484L, null, null, null, "鐢�" },
+ { 142307070902376L, "2", null, null, null, false, "濂虫��", 100, 0, 142307070906484L, null, null, null, "濂�" },
+ { 142307070902377L, "3", null, null, null, false, "鏈煡鎬у埆", 100, 0, 142307070906484L, null, null, null, "鏈煡" },
+ { 142307070902384L, "0", null, null, null, false, "姝e父", 100, 0, 142307070906483L, null, null, null, "姝e父" },
+ { 142307070902385L, "1", null, null, null, false, "鍋滅敤", 100, 0, 142307070906483L, null, null, null, "鍋滅敤" },
+ { 142307070902386L, "2", null, null, null, false, "鍒犻櫎", 100, 0, 142307070906483L, null, null, null, "鍒犻櫎" },
+ { 142307070902387L, "N", null, null, null, false, "鍚�", 100, 0, 142307070906486L, null, null, null, "鍚�" },
+ { 142307070902388L, "Y", null, null, null, false, "鏄�", 100, 0, 142307070906486L, null, null, null, "鏄�" },
+ { 142307070902389L, "1", null, null, null, false, "鐧诲綍", 100, 0, 142307070906487L, null, null, null, "鐧诲綍" },
+ { 142307070902390L, "2", null, null, null, false, "鐧诲嚭", 100, 0, 142307070906487L, null, null, null, "鐧诲嚭" },
+ { 142307070902391L, "0", null, null, null, false, "鐩綍", 100, 0, 142307070906488L, null, null, null, "鐩綍" },
+ { 142307070902392L, "1", null, null, null, false, "鑿滃崟", 100, 0, 142307070906488L, null, null, null, "鑿滃崟" },
+ { 142307070902393L, "2", null, null, null, false, "鎸夐挳", 100, 0, 142307070906488L, null, null, null, "鎸夐挳" },
+ { 142307070902394L, "0", null, null, null, false, "鏈彂閫�", 100, 0, 142307070906489L, null, null, null, "鏈彂閫�" },
+ { 142307070902395L, "1", null, null, null, false, "鍙戦�佹垚鍔�", 100, 0, 142307070906489L, null, null, null, "鍙戦�佹垚鍔�" },
+ { 142307070902396L, "2", null, null, null, false, "鍙戦�佸け璐�", 100, 0, 142307070906489L, null, null, null, "鍙戦�佸け璐�" },
+ { 142307070902397L, "3", null, null, null, false, "澶辨晥", 100, 0, 142307070906489L, null, null, null, "澶辨晥" },
+ { 142307070902398L, "0", null, null, null, false, "鏃�", 100, 0, 142307070906490L, null, null, null, "鏃�" },
+ { 142307070902399L, "1", null, null, null, false, "缁勪欢", 100, 0, 142307070906490L, null, null, null, "缁勪欢" },
+ { 142307070906437L, "2", null, null, null, false, "鍐呴摼", 100, 0, 142307070906490L, null, null, null, "鍐呴摼" },
+ { 142307070906438L, "3", null, null, null, false, "澶栭摼", 100, 0, 142307070906490L, null, null, null, "澶栭摼" },
+ { 142307070906439L, "1", null, null, null, false, "绯荤粺鏉冮噸", 100, 0, 142307070906491L, null, null, null, "绯荤粺鏉冮噸" },
+ { 142307070906440L, "2", null, null, null, false, "涓氬姟鏉冮噸", 100, 0, 142307070906491L, null, null, null, "涓氬姟鏉冮噸" },
+ { 142307070906441L, "1", null, null, null, false, "鍏ㄩ儴鏁版嵁", 100, 0, 142307070906492L, null, null, null, "鍏ㄩ儴鏁版嵁" },
+ { 142307070906442L, "2", null, null, null, false, "鏈儴闂ㄥ強浠ヤ笅鏁版嵁", 100, 0, 142307070906492L, null, null, null, "鏈儴闂ㄥ強浠ヤ笅鏁版嵁" },
+ { 142307070906443L, "3", null, null, null, false, "鏈儴闂ㄦ暟鎹�", 100, 0, 142307070906492L, null, null, null, "鏈儴闂ㄦ暟鎹�" },
+ { 142307070906444L, "4", null, null, null, false, "浠呮湰浜烘暟鎹�", 100, 0, 142307070906492L, null, null, null, "浠呮湰浜烘暟鎹�" },
+ { 142307070906445L, "5", null, null, null, false, "鑷畾涔夋暟鎹�", 100, 0, 142307070906492L, null, null, null, "鑷畾涔夋暟鎹�" },
+ { 142307070906449L, "0", null, null, null, false, "鍏跺畠", 100, 0, 142307070906494L, null, null, null, "鍏跺畠" },
+ { 142307070906450L, "1", null, null, null, false, "澧炲姞", 100, 0, 142307070906494L, null, null, null, "澧炲姞" },
+ { 142307070906451L, "2", null, null, null, false, "鍒犻櫎", 100, 0, 142307070906494L, null, null, null, "鍒犻櫎" },
+ { 142307070906452L, "3", null, null, null, false, "缂栬緫", 100, 0, 142307070906494L, null, null, null, "缂栬緫" },
+ { 142307070906453L, "4", null, null, null, false, "鏇存柊", 100, 0, 142307070906494L, null, null, null, "鏇存柊" },
+ { 142307070906454L, "5", null, null, null, false, "鏌ヨ", 100, 0, 142307070906494L, null, null, null, "鏌ヨ" },
+ { 142307070906455L, "6", null, null, null, false, "璇︽儏", 100, 0, 142307070906494L, null, null, null, "璇︽儏" },
+ { 142307070906456L, "7", null, null, null, false, "鏍�", 100, 0, 142307070906494L, null, null, null, "鏍�" },
+ { 142307070906457L, "8", null, null, null, false, "瀵煎叆", 100, 0, 142307070906494L, null, null, null, "瀵煎叆" },
+ { 142307070906458L, "9", null, null, null, false, "瀵煎嚭", 100, 0, 142307070906494L, null, null, null, "瀵煎嚭" },
+ { 142307070906459L, "10", null, null, null, false, "鎺堟潈", 100, 0, 142307070906494L, null, null, null, "鎺堟潈" },
+ { 142307070906460L, "11", null, null, null, false, "寮洪��", 100, 0, 142307070906494L, null, null, null, "寮洪��" },
+ { 142307070906461L, "12", null, null, null, false, "娓呯┖", 100, 0, 142307070906494L, null, null, null, "娓呯┖" },
+ { 142307070906462L, "13", null, null, null, false, "淇敼鐘舵��", 100, 0, 142307070906494L, null, null, null, "淇敼鐘舵��" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_data",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 142307070906463L, "1", null, null, null, false, "闃块噷浜�", 100, 0, 142307070906495L, null, null, null, "闃块噷浜�" },
+ { 142307070906464L, "2", null, null, null, false, "鑵捐浜�", 100, 0, 142307070906495L, null, null, null, "鑵捐浜�" },
+ { 142307070906465L, "3", null, null, null, false, "minio", 100, 0, 142307070906495L, null, null, null, "minio" },
+ { 142307070906466L, "4", null, null, null, false, "鏈湴", 100, 0, 142307070906495L, null, null, null, "鏈湴" },
+ { 142307070906467L, "1", null, null, null, false, "杩愯", 100, 0, 142307070910533L, null, null, null, "杩愯" },
+ { 142307070906468L, "2", null, null, null, false, "鍋滄", 100, 0, 142307070910533L, null, null, null, "鍋滄" },
+ { 142307070906469L, "1", null, null, null, false, "閫氱煡", 100, 0, 142307070910534L, null, null, null, "閫氱煡" },
+ { 142307070906470L, "2", null, null, null, false, "鍏憡", 100, 0, 142307070910534L, null, null, null, "鍏憡" },
+ { 142307070906471L, "0", null, null, null, false, "鑽夌", 100, 0, 142307070910535L, null, null, null, "鑽夌" },
+ { 142307070906472L, "1", null, null, null, false, "鍙戝竷", 100, 0, 142307070910535L, null, null, null, "鍙戝竷" },
+ { 142307070906473L, "2", null, null, null, false, "鎾ゅ洖", 100, 0, 142307070910535L, null, null, null, "鎾ゅ洖" },
+ { 142307070906474L, "3", null, null, null, false, "鍒犻櫎", 100, 0, 142307070910535L, null, null, null, "鍒犻櫎" },
+ { 142307070906475L, "true", null, null, null, false, "鏄�", 100, 0, 142307070910536L, null, null, null, "鏄�" },
+ { 142307070906476L, "false", null, null, null, false, "鍚�", 100, 0, 142307070910536L, null, null, null, "鍚�" },
+ { 142307070906477L, "1", null, null, null, false, "涓嬭浇鍘嬬缉鍖�", 100, 0, 142307070910537L, null, null, null, "涓嬭浇鍘嬬缉鍖�" },
+ { 142307070906478L, "2", null, null, null, false, "鐢熸垚鍒版湰椤圭洰", 100, 0, 142307070910537L, null, null, null, "鐢熸垚鍒版湰椤圭洰" },
+ { 142307070906479L, "1", null, null, null, false, "GET", 100, 0, 142307070910538L, null, null, null, "GET" },
+ { 142307070906480L, "2", null, null, null, false, "POST", 100, 0, 142307070910538L, null, null, null, "POST" },
+ { 142307070906481L, "3", null, null, null, false, "PUT", 100, 0, 142307070910538L, null, null, null, "PUT" },
+ { 142307070906482L, "4", null, null, null, false, "DELETE", 100, 0, 142307070910538L, null, null, null, "DELETE" },
+ { 142307070922829L, "fk", null, null, null, false, "澶栭敭", 100, 0, 142307070922827L, null, null, null, "澶栭敭" },
+ { 142307070922830L, "input", null, null, null, false, "杈撳叆妗�", 100, 0, 142307070922827L, null, null, null, "杈撳叆妗�" },
+ { 142307070922831L, "datepicker", null, null, null, false, "鏃ユ湡閫夋嫨", 100, 0, 142307070922827L, null, null, null, "鏃ユ湡閫夋嫨" },
+ { 142307070922832L, "select", null, null, null, false, "涓嬫媺妗�", 100, 0, 142307070922827L, null, null, null, "涓嬫媺妗�" },
+ { 142307070922833L, "radio", null, null, null, false, "鍗曢�夋", 100, 0, 142307070922827L, null, null, null, "鍗曢�夋" },
+ { 142307070922834L, "switch", null, null, null, false, "寮�鍏�", 100, 0, 142307070922827L, null, null, null, "寮�鍏�" },
+ { 142307070922835L, "checkbox", null, null, null, false, "澶氶�夋", 100, 0, 142307070922827L, null, null, null, "澶氶�夋" },
+ { 142307070922836L, "inputnumber", null, null, null, false, "鏁板瓧杈撳叆妗�", 100, 0, 142307070922827L, null, null, null, "鏁板瓧杈撳叆妗�" },
+ { 142307070922837L, "textarea", null, null, null, false, "鏂囨湰鍩�", 100, 0, 142307070922827L, null, null, null, "鏂囨湰鍩�" },
+ { 142307070922838L, "==", null, null, null, false, "绛変簬", 1, 0, 142307070922828L, null, null, null, "绛変簬" },
+ { 142307070922839L, "like", null, null, null, false, "妯$硦", 2, 0, 142307070922828L, null, null, null, "妯$硦" },
+ { 142307070922840L, ">", null, null, null, false, "澶т簬", 3, 0, 142307070922828L, null, null, null, "澶т簬" },
+ { 142307070922841L, "<", null, null, null, false, "灏忎簬", 4, 0, 142307070922828L, null, null, null, "灏忎簬" },
+ { 142307070922842L, "!=", null, null, null, false, "涓嶇瓑浜�", 5, 0, 142307070922828L, null, null, null, "涓嶇瓑浜�" },
+ { 142307070922843L, ">=", null, null, null, false, "澶т簬绛変簬", 6, 0, 142307070922828L, null, null, null, "澶т簬绛変簬" },
+ { 142307070922844L, "<=", null, null, null, false, "灏忎簬绛変簬", 7, 0, 142307070922828L, null, null, null, "灏忎簬绛変簬" },
+ { 142307070922845L, "isNotNull", null, null, null, false, "涓嶄负绌�", 8, 0, 142307070922828L, null, null, null, "涓嶄负绌�" },
+ { 142307070922846L, "long", null, null, null, false, "long", 100, 0, 142307070922829L, null, null, null, "long" },
+ { 142307070922847L, "string", null, null, null, false, "string", 100, 0, 142307070922829L, null, null, null, "string" },
+ { 142307070922848L, "DateTime", null, null, null, false, "DateTime", 100, 0, 142307070922829L, null, null, null, "DateTime" },
+ { 142307070922850L, "bool", null, null, null, false, "bool", 100, 0, 142307070922829L, null, null, null, "bool" },
+ { 142307070922851L, "int", null, null, null, false, "int", 100, 0, 142307070922829L, null, null, null, "int" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_data",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 142307070922852L, "double", null, null, null, false, "double", 100, 0, 142307070922829L, null, null, null, "double" },
+ { 142307070922861L, "float", null, null, null, false, "float", 100, 0, 142307070922829L, null, null, null, "float" },
+ { 142307070922862L, "decimal", null, null, null, false, "decimal", 100, 0, 142307070922829L, null, null, null, "decimal" },
+ { 142307070922863L, "Guid", null, null, null, false, "Guid", 100, 0, 142307070922829L, null, null, null, "Guid" },
+ { 142307070922864L, "DateTimeOffset", null, null, null, false, "DateTimeOffset", 100, 0, 142307070922829L, null, null, null, "DateTimeOffset" },
+ { 142307070926943L, "0", null, null, null, false, "闆嗗洟瑙掕壊", 100, 0, 142307070926941L, null, null, null, "闆嗗洟瑙掕壊" },
+ { 142307070926944L, "1", null, null, null, false, "鍔犵洘鍟嗚鑹�", 100, 0, 142307070926941L, null, null, null, "鍔犵洘鍟嗚鑹�" },
+ { 142307070926945L, "2", null, null, null, false, "闂ㄥ簵瑙掕壊", 100, 0, 142307070926941L, null, null, null, "闂ㄥ簵瑙掕壊" },
+ { 142307070926946L, "1", null, null, null, false, "涓�绾�", 100, 0, 142307070926942L, null, null, null, "涓�绾�" },
+ { 142307070926947L, "2", null, null, null, false, "浜岀骇", 100, 0, 142307070926942L, null, null, null, "浜岀骇" },
+ { 142307070926948L, "3", null, null, null, false, "涓夌骇", 100, 0, 142307070926942L, null, null, null, "涓夌骇" },
+ { 142307070926949L, "4", null, null, null, false, "鍥涚骇", 100, 0, 142307070926942L, null, null, null, "鍥涚骇" },
+ { 285605336563781L, "DefaultFormType", null, null, null, false, "榛樿琛ㄥ崟鍒嗙被", 100, 0, 285605149831237L, null, null, null, "榛樿琛ㄥ崟鍒嗙被" },
+ { 285641495289925L, "DefaultGroup", null, null, null, false, "榛樿鍒嗙被", 100, 0, 285641358889029L, null, null, null, "榛樿鍒嗙被" },
+ { 355697634480197L, "0", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "鍏朵粬" },
+ { 355697634480198L, "0", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "閫氱敤" },
+ { 355697676427333L, "1", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "鏈ㄨ川" },
+ { 355697676427399L, "1", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "鍗卞寲鍝�" },
+ { 355697726726200L, "2", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "娑蹭綋" },
+ { 355697726726213L, "2", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "閲戝睘" },
+ { 355697755361301L, "3", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "璐甸噸鍝�" },
+ { 355697755361302L, "4", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "姘斾綋" },
+ { 355697755361303L, "5", null, null, null, false, "", 100, 0, 355697881423942L, null, null, null, "浣庢俯" },
+ { 355697755361349L, "3", null, null, null, false, "", 100, 0, 355694205325381L, null, null, null, "濉戞枡" },
+ { 355697944657989L, "0", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "绂佺敤" },
+ { 355697974415429L, "1", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "绌洪棽" },
+ { 355698005966917L, "2", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "缁勭洏" },
+ { 355698032828485L, "3", null, null, null, false, "", 100, 0, 355697881423941L, null, null, null, "搴撲綅" },
+ { 355698270015557L, "0", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鍏朵粬" },
+ { 355698303508549L, "1", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "绔嬩綋搴�" },
+ { 355698328531013L, "2", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鏅�氬簱" },
+ { 355698362712133L, "3", null, null, null, false, "", 100, 0, 355698224758853L, null, null, null, "鍏叡搴�" },
+ { 355698476777541L, "1", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "绌洪棽" },
+ { 355698510786629L, "2", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "寰呭叆" },
+ { 355698549424197L, "3", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "瀛樿揣" },
+ { 355698576941125L, "4", null, null, null, false, "", 100, 0, 355698441912389L, null, null, null, "寰呭嚭" },
+ { 355698694561861L, "1", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "浣�" },
+ { 355698716401733L, "2", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "涓�" },
+ { 355698740326469L, "3", null, null, null, false, "", 100, 0, 355698661130309L, null, null, null, "楂�" },
+ { 355698898735173L, "1", null, null, null, false, "", 100, 0, 355698855280709L, null, null, null, "鍏嶆" },
+ { 355698924970053L, "2", null, null, null, false, "", 100, 0, 355698855280709L, null, null, null, "鎶芥" },
+ { 355699041800261L, "1", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鍘熸潗鏂�" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_data",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 355699063255109L, "2", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鍗婃垚鍝�" },
+ { 355699088330821L, "3", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "鎴愬搧" },
+ { 355699113156677L, "4", null, null, null, false, "", 100, 0, 355699003580485L, null, null, null, "绌烘墭" },
+ { 355699219353669L, "1", null, null, null, false, "", 100, 0, 355699189051461L, null, null, null, "闀垮害" },
+ { 355699243540549L, "2", null, null, null, false, "", 100, 0, 355699189051461L, null, null, null, "閲嶉噺" },
+ { 355699345645637L, "1", null, null, null, false, "", 100, 0, 355699314061381L, null, null, null, "cm" },
+ { 355699367575621L, "2", null, null, null, false, "", 100, 0, 355699314061381L, null, null, null, "t" },
+ { 355699479236677L, "1", null, null, null, false, "", 100, 0, 355699447029829L, null, null, null, "鎵嬪姩" },
+ { 355699505229893L, "2", null, null, null, false, "", 100, 0, 355699447029829L, null, null, null, "鑷姩" },
+ { 355699615133765L, "1", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "鍏ュ簱" },
+ { 355699638476869L, "2", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "鍑哄簱" },
+ { 355699661889605L, "3", null, null, null, false, "", 100, 0, 355699576467525L, null, null, null, "绉诲簱" },
+ { 355699760455749L, "1", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "鏈墽琛�" },
+ { 355699760455798L, "1", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鏈墽琛�" },
+ { 355699784736837L, "2", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "鎵ц涓�" },
+ { 355699784736899L, "2", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-AGV" },
+ { 355699813859300L, "3", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-杈撻�佺嚎" },
+ { 355699813859301L, "4", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "鎵ц涓�-鍫嗗灈鏈�" },
+ { 355699813859302L, "5", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "绛夊緟" },
+ { 355699813859303L, "6", null, null, null, false, "", 100, 0, 355699731099718L, null, null, null, "瀹屾垚" },
+ { 355699813859397L, "3", null, null, null, false, "", 100, 0, 355699731099717L, null, null, null, "瀹屾垚" },
+ { 383290784104517L, "1", null, null, null, false, "", 100, 0, 383290718294085L, null, null, null, "娉℃搏鍒囧壊" },
+ { 383290816860229L, "2", null, null, null, false, "", 100, 0, 383290718294085L, null, null, null, "瑁呴厤杞﹂棿" },
+ { 383317608218693L, "0", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "鏈紑濮�" },
+ { 383317718302789L, "1", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "杩愰�佷腑" },
+ { 383317751234629L, "2", null, null, null, false, "", 100, 0, 383317542490181L, null, null, null, "瀹屾垚" },
+ { 384394737053765L, "1", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "AGV" },
+ { 384394851618885L, "2", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "鍫嗗灈鏈�" },
+ { 384394877870149L, "3", null, null, null, false, "", 100, 0, 384394636988485L, null, null, null, "RGV" },
+ { 385412179521605L, "1", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "鍒囧壊" },
+ { 385412217618501L, "2", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "鍘嬪悎" },
+ { 385412280418373L, "3", null, null, null, false, "", 100, 0, 385412129075269L, null, null, null, "CNC" },
+ { 386523049214021L, "1", null, null, null, false, "", 100, 0, 386522984120389L, null, null, null, "鍏ュ簱鍙�" },
+ { 386523049214022L, "1", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场涓�绾�" },
+ { 386523049214025L, "1", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "鏈紑濮�" },
+ { 386523049214029L, "1", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "鍏ュ簱" },
+ { 386523049214033L, "1", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鏈笅鍙�" },
+ { 386523049214038L, "1", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浜х嚎閫�搴�" },
+ { 386523071475723L, "2", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场浜岀嚎" },
+ { 386523071475724L, "3", null, null, null, false, "", 100, 0, 386522984120390L, null, null, null, "鍙戞场涓夌嚎" },
+ { 386523071475726L, "2", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "杩涜涓�" },
+ { 386523071475727L, "3", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "瀹屾垚" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_dict_data",
+ columns: new[] { "Id", "Code", "CreatedTime", "CreatedUserId", "CreatedUserName", "IsDeleted", "Remark", "Sort", "Status", "TypeId", "UpdatedTime", "UpdatedUserId", "UpdatedUserName", "Value" },
+ values: new object[,]
+ {
+ { 386523071475728L, "4", null, null, null, false, "", 100, 0, 386522984120391L, null, null, null, "鎾ゅ洖" },
+ { 386523071475730L, "2", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "鍑哄簱" },
+ { 386523071475731L, "3", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "璋冩嫧" },
+ { 386523071475732L, "4", null, null, null, false, "", 100, 0, 386522984120392L, null, null, null, "瓒婂簱" },
+ { 386523071475734L, "2", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "宸蹭笅鍙�" },
+ { 386523071475735L, "3", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鎵ц涓�" },
+ { 386523071475736L, "4", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "瀹屾垚" },
+ { 386523071475737L, "5", null, null, null, false, "", 100, 0, 386522984120393L, null, null, null, "鎾ゅ洖" },
+ { 386523071475739L, "2", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鐢熶骇鍏ュ簱" },
+ { 386523071475740L, "3", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浣欐枡鍥炲簱" },
+ { 386523071475741L, "4", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "閲囪喘鍏ュ簱" },
+ { 386523071475742L, "5", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍏朵粬" },
+ { 386523071475743L, "6", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍙戣揣鍗�" },
+ { 386523071475744L, "7", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鐢熶骇棰嗘枡" },
+ { 386523071475745L, "8", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "閿�鍞嚭搴�" },
+ { 386523071475746L, "9", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "渚涘簲鍟嗛��搴�" },
+ { 386523071475747L, "10", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "娉℃搏鍑哄簱" },
+ { 386523071475748L, "11", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "鍑哄簱鍏朵粬" },
+ { 386523071475749L, "12", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "浠撳簱璋冩嫧" },
+ { 386523071475750L, "13", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "搴撳尯璋冩嫧" },
+ { 386523071475751L, "14", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "搴撲綅璋冩嫧" },
+ { 386523071475752L, "15", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "椤圭洰璋冩嫧" },
+ { 386523071475753L, "16", null, null, null, false, "", 100, 0, 386522984120394L, null, null, null, "璋冩嫧鍏朵粬" },
+ { 386523071475754L, "1", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "涓嶄娇鐢�" },
+ { 386523071475755L, "2", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "鏈鏍�" },
+ { 386523071475756L, "3", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "绛炬牳涓�" },
+ { 386523071475757L, "4", null, null, null, false, "", 100, 0, 386522984120395L, null, null, null, "宸茬鏍�" },
+ { 386523071475758L, "datetimepicker", null, null, null, false, "鏃ユ湡鏃堕棿閫夋嫨", 100, 0, 142307070922827L, null, null, null, "鏃ユ湡鏃堕棿閫夋嫨" },
+ { 386523071475759L, "between", null, null, null, false, "浠嬩簬", 9, 0, 142307070922828L, null, null, null, "浠嬩簬" },
+ { 386523071475781L, "2", null, null, null, false, "", 100, 0, 386522984120389L, null, null, null, "鍑哄簱鍙�" }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_emp_ext_org_pos",
+ columns: new[] { "SysEmpId", "SysOrgId", "SysPosId" },
+ values: new object[,]
+ {
+ { 142307070910551L, 142307070910539L, 142307070910547L },
+ { 142307070910551L, 142307070910540L, 142307070910548L },
+ { 142307070910551L, 142307070910541L, 142307070910549L },
+ { 142307070910551L, 142307070910542L, 142307070910550L },
+ { 142307070910553L, 142307070910542L, 142307070910547L }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_emp_pos",
+ columns: new[] { "SysEmpId", "SysPosId" },
+ values: new object[,]
+ {
+ { 142307070910551L, 142307070910547L },
+ { 142307070910551L, 142307070910548L },
+ { 142307070910552L, 142307070910549L },
+ { 142307070910553L, 142307070910547L },
+ { 358533464608837L, 142307070910550L },
+ { 358536045723717L, 142307070910550L }
+ });
+
+ migrationBuilder.InsertData(
+ table: "sys_user_data_scope",
+ columns: new[] { "SysOrgId", "SysUserId" },
+ values: new object[] { 142307070910540L, 142307070910551L });
+
+ migrationBuilder.InsertData(
+ table: "sys_user_role",
+ columns: new[] { "SysRoleId", "SysUserId" },
+ values: new object[] { 142307070910554L, 142307070910552L });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_les_entrance_AreaId",
+ table: "les_entrance",
+ column: "AreaId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_dict_data_TypeId",
+ table: "sys_dict_data",
+ column: "TypeId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_emp_ext_org_pos_SysOrgId",
+ table: "sys_emp_ext_org_pos",
+ column: "SysOrgId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_emp_ext_org_pos_SysPosId",
+ table: "sys_emp_ext_org_pos",
+ column: "SysPosId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_emp_pos_SysPosId",
+ table: "sys_emp_pos",
+ column: "SysPosId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_low_code_module_database_SysLowCodeId",
+ table: "sys_low_code_module_database",
+ column: "SysLowCodeId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_role_data_scope_SysOrgId",
+ table: "sys_role_data_scope",
+ column: "SysOrgId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_role_menu_SysMenuId",
+ table: "sys_role_menu",
+ column: "SysMenuId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_user_data_scope_SysOrgId",
+ table: "sys_user_data_scope",
+ column: "SysOrgId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_sys_user_role_SysRoleId",
+ table: "sys_user_role",
+ column: "SysRoleId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_dumporder_details_OrderId",
+ table: "wms_dumporder_details",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_goodsreturnorder_details_OrderId",
+ table: "wms_goodsreturnorder_details",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_history_materialcontainer_MaterialId",
+ table: "wms_history_materialcontainer",
+ column: "MaterialId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_materialcontainer_MaterialId",
+ table: "wms_materialcontainer",
+ column: "MaterialId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_materialcontainer_WmsContainerId",
+ table: "wms_materialcontainer",
+ column: "WmsContainerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_order_details_OrderId",
+ table: "wms_order_details",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_place_AreaId",
+ table: "wms_place",
+ column: "AreaId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_receiptorder_details_OrderId",
+ table: "wms_receiptorder_details",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_role_pdamenu_PdaMenuId",
+ table: "wms_role_pdamenu",
+ column: "PdaMenuId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_stockreturn_order_details_OrderId",
+ table: "wms_stockreturn_order_details",
+ column: "OrderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_wms_takematerial_orderdetail_OrderId",
+ table: "wms_takematerial_orderdetail",
+ column: "OrderId");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "les_agv_task");
+
+ migrationBuilder.DropTable(
+ name: "les_agv_waring");
+
+ migrationBuilder.DropTable(
+ name: "les_devicewaring");
+
+ migrationBuilder.DropTable(
+ name: "les_entrance");
+
+ migrationBuilder.DropTable(
+ name: "les_packwarehouse");
+
+ migrationBuilder.DropTable(
+ name: "les_serial_rule_detail");
+
+ migrationBuilder.DropTable(
+ name: "les_station");
+
+ migrationBuilder.DropTable(
+ name: "sys_app");
+
+ migrationBuilder.DropTable(
+ name: "sys_code_gen");
+
+ migrationBuilder.DropTable(
+ name: "sys_code_gen_config");
+
+ migrationBuilder.DropTable(
+ name: "sys_code_modular");
+
+ migrationBuilder.DropTable(
+ name: "sys_config");
+
+ migrationBuilder.DropTable(
+ name: "sys_dict_data");
+
+ migrationBuilder.DropTable(
+ name: "sys_emp_ext_org_pos");
+
+ migrationBuilder.DropTable(
+ name: "sys_emp_pos");
+
+ migrationBuilder.DropTable(
+ name: "sys_excel_template");
+
+ migrationBuilder.DropTable(
+ name: "sys_file");
+
+ migrationBuilder.DropTable(
+ name: "sys_forms");
+
+ migrationBuilder.DropTable(
+ name: "sys_log_audit");
+
+ migrationBuilder.DropTable(
+ name: "sys_log_ex");
+
+ migrationBuilder.DropTable(
+ name: "sys_log_op");
+
+ migrationBuilder.DropTable(
+ name: "sys_log_vis");
+
+ migrationBuilder.DropTable(
+ name: "sys_low_code_module_database");
+
+ migrationBuilder.DropTable(
+ name: "sys_notice");
+
+ migrationBuilder.DropTable(
+ name: "sys_notice_user");
+
+ migrationBuilder.DropTable(
+ name: "sys_role_data_scope");
+
+ migrationBuilder.DropTable(
+ name: "sys_role_menu");
+
+ migrationBuilder.DropTable(
+ name: "sys_timer");
+
+ migrationBuilder.DropTable(
+ name: "sys_user_data_scope");
+
+ migrationBuilder.DropTable(
+ name: "sys_user_role");
+
+ migrationBuilder.DropTable(
+ name: "test_students");
+
+ migrationBuilder.DropTable(
+ name: "test_students2");
+
+ migrationBuilder.DropTable(
+ name: "test_students3");
+
+ migrationBuilder.DropTable(
+ name: "wms_containerplace");
+
+ migrationBuilder.DropTable(
+ name: "wms_dumporder_details");
+
+ migrationBuilder.DropTable(
+ name: "wms_goodsreturnorder_details");
+
+ migrationBuilder.DropTable(
+ name: "wms_history_materialcontainer");
+
+ migrationBuilder.DropTable(
+ name: "wms_materialcontainer");
+
+ migrationBuilder.DropTable(
+ name: "wms_materialstock");
+
+ migrationBuilder.DropTable(
+ name: "wms_merchantinfo");
+
+ migrationBuilder.DropTable(
+ name: "wms_order_details");
+
+ migrationBuilder.DropTable(
+ name: "wms_order_type");
+
+ migrationBuilder.DropTable(
+ name: "wms_place");
+
+ migrationBuilder.DropTable(
+ name: "wms_receiptorder_details");
+
+ migrationBuilder.DropTable(
+ name: "wms_role_pdamenu");
+
+ migrationBuilder.DropTable(
+ name: "wms_sortorder");
+
+ migrationBuilder.DropTable(
+ name: "wms_stockreturn_order_details");
+
+ migrationBuilder.DropTable(
+ name: "wms_takematerial_orderdetail");
+
+ migrationBuilder.DropTable(
+ name: "wms_task");
+
+ migrationBuilder.DropTable(
+ name: "wms_warehouse_entrance");
+
+ migrationBuilder.DropTable(
+ name: "wms_warehouse_manage");
+
+ migrationBuilder.DropTable(
+ name: "sys_dict_type");
+
+ migrationBuilder.DropTable(
+ name: "sys_emp");
+
+ migrationBuilder.DropTable(
+ name: "sys_pos");
+
+ migrationBuilder.DropTable(
+ name: "sys_low_code_module");
+
+ migrationBuilder.DropTable(
+ name: "sys_menu");
+
+ migrationBuilder.DropTable(
+ name: "sys_org");
+
+ migrationBuilder.DropTable(
+ name: "sys_user");
+
+ migrationBuilder.DropTable(
+ name: "wms_dumporder");
+
+ migrationBuilder.DropTable(
+ name: "wms_goodsreturnorder");
+
+ migrationBuilder.DropTable(
+ name: "wms_container");
+
+ migrationBuilder.DropTable(
+ name: "wms_material");
+
+ migrationBuilder.DropTable(
+ name: "wms_order");
+
+ migrationBuilder.DropTable(
+ name: "wms_area");
+
+ migrationBuilder.DropTable(
+ name: "wms_receiptorder");
+
+ migrationBuilder.DropTable(
+ name: "sys_role");
+
+ migrationBuilder.DropTable(
+ name: "wms_pdapower");
+
+ migrationBuilder.DropTable(
+ name: "wms_stockreturn_order");
+
+ migrationBuilder.DropTable(
+ name: "wms_takematerialorder");
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
new file mode 100644
index 0000000..ed5d221
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -0,0 +1,13178 @@
+锘�// <auto-generated />
+using System;
+using Admin.NET.EntityFramework.Core;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace Admin.NET.Database.Migrations.Migrations
+{
+ [DbContext(typeof(DefaultDbContext))]
+ partial class DefaultDbContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "6.0.9")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
+
+ modelBuilder.Entity("Admin.NET.Core.AgvTask", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvState")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹瑰櫒缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("EndName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缁撴潫鍚嶇О");
+
+ b.Property<string>("EndPlace")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缁撴潫浣嶇疆");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("Agv鐖禝d");
+
+ b.Property<string>("SourcePlaceName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰搴撲綅鍚嶇О");
+
+ b.Property<string>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰鍚嶇О");
+
+ b.Property<string>("StartPlace")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰浣嶇疆");
+
+ b.Property<string>("TaskNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("涓讳换鍔″彿");
+
+ b.Property<string>("TaskType")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("浠诲姟绫诲瀷-鍏ュ簱;鍑哄簱");
+
+ b.Property<string>("TransportOrder")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("褰撳墠鎵ц鐨勪换鍔�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_agv_task");
+
+ b.HasComment("Agv浠诲姟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.AgvWaring", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvCarCode")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("agv灏忚溅缂栧彿");
+
+ b.Property<string>("Code")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鍞竴缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FaultText")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏁呴殰鍐呭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsRead")
+ .HasColumnType("bit")
+ .HasComment("WCS鏄惁鍙互璇诲彇");
+
+ b.Property<DateTimeOffset?>("StartTime")
+ .HasMaxLength(50)
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏁呴殰鏃堕棿");
+
+ b.Property<string>("TransportOrder")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("浠诲姟鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<int>("YesOrNot")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("鏄惁瑙e喅");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_agv_waring");
+
+ b.HasComment("Agv鎶ヨ");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.VAccessDetails", b =>
+ {
+ b.Property<string>("Batch")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("ContainerCode")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<string>("Description")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("High")
+ .HasColumnType("int");
+
+ b.Property<long?>("Id")
+ .HasColumnType("bigint");
+
+ b.Property<int>("Long")
+ .HasColumnType("int");
+
+ b.Property<string>("MaterialDensity")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("MaterialNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<string>("SourcePlace")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("TaskCreatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<int>("TaskLevel")
+ .HasColumnType("int");
+
+ b.Property<int>("TaskModel")
+ .HasColumnType("int");
+
+ b.Property<string>("TaskNo")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<int>("TaskStatus")
+ .HasColumnType("int");
+
+ b.Property<int>("TaskType")
+ .HasColumnType("int");
+
+ b.Property<DateTimeOffset?>("TaskUpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<string>("ToPlace")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int");
+
+ b.ToView("View_AccessDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("PdaMenuId")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟Id");
+
+ b.HasKey("SysRoleId", "PdaMenuId");
+
+ b.HasIndex("PdaMenuId");
+
+ b.ToTable("wms_role_pdamenu");
+
+ b.HasComment("瑙掕壊鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsWarehouseManage", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_warehouse_manage");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesDeviceWaring", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeviceName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁惧鍚嶇О");
+
+ b.Property<DateTimeOffset?>("EndTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("缁撴潫鏃堕棿");
+
+ b.Property<string>("FaultName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏁呴殰鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("RunningTime")
+ .HasColumnType("int")
+ .HasComment("鎸佺画鏃堕棿");
+
+ b.Property<DateTimeOffset?>("StartTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍙戠敓鏃堕棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WcsId")
+ .HasColumnType("int")
+ .HasComment("WcsId");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_devicewaring");
+
+ b.HasComment("璁惧鎶ヨ");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("搴撳尯Id");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳彛缂栫爜");
+
+ b.Property<int>("CommenStatus")
+ .HasColumnType("int")
+ .HasComment("搴撳彛鐘舵��");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("EntranceType")
+ .HasColumnType("int")
+ .HasComment("搴撳彛绫诲瀷");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳彛鍚嶇О");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AreaId");
+
+ b.ToTable("les_entrance");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesPackWarehouse", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("High")
+ .HasColumnType("int")
+ .HasComment("楂�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesPackState")
+ .HasColumnType("int")
+ .HasComment("鎵撳寘鐘舵��");
+
+ b.Property<int>("Long")
+ .HasColumnType("int")
+ .HasComment("闀�");
+
+ b.Property<string>("MaterialNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鐮�");
+
+ b.Property<string>("OrderNo")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍗曟嵁鍙�");
+
+ b.Property<string>("OutputEntrance")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍑哄簱鍙�");
+
+ b.Property<string>("PackCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏍囩鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int")
+ .HasComment("瀹�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_packwarehouse");
+
+ b.HasComment("鎵撳寘琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesSerialRuleDetail", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DecimalType")
+ .HasColumnType("int")
+ .HasComment("杩涗綅绫诲瀷");
+
+ b.Property<string>("Description")
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)")
+ .HasComment("璇存槑");
+
+ b.Property<int>("GetData")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("鎾峰彇");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("ItemNo")
+ .HasColumnType("int")
+ .HasComment("椤规");
+
+ b.Property<int>("PadLeft")
+ .HasColumnType("int")
+ .HasComment("鑷姩琛ラ浂");
+
+ b.Property<int>("SearchStart")
+ .HasColumnType("int")
+ .HasComment("鎾峰彇鐮佹暟(璧�)");
+
+ b.Property<int>("SerialCodeFlag")
+ .HasColumnType("int")
+ .HasComment("搴忓彿缂栫爜");
+
+ b.Property<int>("SerialLength")
+ .HasColumnType("int")
+ .HasComment("闀垮害");
+
+ b.Property<string>("SerialType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴忓彿绫诲埆");
+
+ b.Property<string>("SerialTypeNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴忓彿绫诲埆缂栧彿");
+
+ b.Property<string>("SourceType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璧勬枡鏉ユ簮");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("UserDefine")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浣跨敤鑰呰嚜瀹氫箟");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_serial_rule_detail");
+
+ b.HasComment("缂栧彿瑙勫垯");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesStation", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("宸ヤ綅缂栫爜");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("宸ヤ綅鍚嶇О");
+
+ b.Property<decimal>("PlaceSpec")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅瑙勬牸");
+
+ b.Property<long>("ProductionlineId")
+ .HasColumnType("bigint")
+ .HasComment("浜х嚎Id");
+
+ b.Property<int>("StataionStatus")
+ .HasColumnType("int")
+ .HasComment("杩愯鐘舵��");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("宸ヤ綅鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("les_station");
+
+ b.HasComment("宸ヤ綅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysApp", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Active")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁榛樿婵�娲�");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_app");
+
+ b.HasComment("绯荤粺搴旂敤琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070898245L,
+ Active = "Y",
+ Code = "system",
+ IsDeleted = false,
+ Name = "寮�鍙戠鐞�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070902341L,
+ Active = "N",
+ Code = "manage",
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊",
+ Sort = 300,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922869L,
+ Active = "N",
+ Code = "busiapp",
+ IsDeleted = false,
+ Name = "涓氬姟搴旂敤",
+ Sort = 400,
+ Status = 0
+ },
+ new
+ {
+ Id = 355686432948293L,
+ Active = "N",
+ Code = "warejob",
+ IsDeleted = false,
+ Name = "浠撳簱浣滀笟",
+ Sort = 500,
+ Status = 0
+ },
+ new
+ {
+ Id = 355686518018117L,
+ Active = "N",
+ Code = "warecount",
+ IsDeleted = false,
+ Name = "缁熻鏌ヨ",
+ Sort = 600,
+ Status = 0
+ },
+ new
+ {
+ Id = 383337192390725L,
+ Active = "N",
+ Code = "xbjl",
+ IsDeleted = false,
+ Name = "绾胯竟鍙枡",
+ Sort = 550,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysCodeGen", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FrontProName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍓嶇椤圭洰鍚�");
+
+ b.Property<string>("GenerateType")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢熸垚鏂瑰紡");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long?>("LowCodeId")
+ .HasColumnType("bigint");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("ModuleName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("妯″潡璺緞");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撹〃鍚�");
+
+ b.Property<string>("TablePrefix")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁绉婚櫎琛ㄥ墠缂�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_gen");
+
+ b.HasComment("浠g爜鐢熸垚琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysCodeGenConfig", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("CodeGenId")
+ .HasColumnType("bigint")
+ .HasComment("浠g爜鐢熸垚涓昏〃ID");
+
+ b.Property<string>("ColumnComment")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛楁鎻忚堪");
+
+ b.Property<string>("ColumnKey")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("涓婚敭");
+
+ b.Property<string>("ColumnName")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳瓧娈靛悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DataType")
+ .HasMaxLength(128)
+ .HasColumnType("nvarchar(128)")
+ .HasComment("鏁版嵁搴撲腑绫诲瀷");
+
+ b.Property<string>("DictTypeCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀛楀吀Code");
+
+ b.Property<string>("DtoNetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment(".NET鏁版嵁绫诲瀷(鎺ュ彛浼犲叆)");
+
+ b.Property<string>("EffectType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浣滅敤绫诲瀷");
+
+ b.Property<string>("FkColumnName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭鏄剧ず瀛楁");
+
+ b.Property<string>("FkColumnNetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭鏄剧ず瀛楁.NET绫诲瀷");
+
+ b.Property<string>("FkEntityName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("澶栭敭瀹炰綋鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NetType")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment(".NET鏁版嵁绫诲瀷");
+
+ b.Property<string>("QueryType")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鏌ヨ鏂瑰紡");
+
+ b.Property<string>("QueryWhether")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鏄煡璇㈡潯浠�");
+
+ b.Property<string>("ShowTitleMinWidth")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("椤甸潰鍒楁樉绀烘渶灏忓搴�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WhetherAddUpdate")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("澧炴敼");
+
+ b.Property<string>("WhetherCommon")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁閫氱敤瀛楁");
+
+ b.Property<string>("WhetherOrderBy")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄惁鎺掑簭");
+
+ b.Property<string>("WhetherRequired")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁蹇呭~");
+
+ b.Property<string>("WhetherRetract")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄惁缂╄繘");
+
+ b.Property<string>("WhetherTable")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鍒楄〃鏄剧ず");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_gen_config");
+
+ b.HasComment("浠g爜鐢熸垚瀛楁閰嶇疆琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysConfig", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("GroupCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("甯搁噺鎵�灞炲垎绫荤殑缂栫爜");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("SysFlag")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鏄郴缁熷弬鏁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Value")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("灞炴�у��");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_config");
+
+ b.HasComment("鍙傛暟閰嶇疆琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070902342L,
+ Code = "DILON_JWT_SECRET",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "jwt瀵嗛挜",
+ Remark = "锛堥噸瑕侊級jwt瀵嗛挜锛岄粯璁や负绌猴紝鑷璁剧疆",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "weiben"
+ },
+ new
+ {
+ Id = 142307070902343L,
+ Code = "DILON_DEFAULT_PASSWORD",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "榛樿瀵嗙爜",
+ Remark = "榛樿瀵嗙爜",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "123456"
+ },
+ new
+ {
+ Id = 142307070902344L,
+ Code = "DILON_TOKEN_EXPIRE",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "token杩囨湡鏃堕棿",
+ Remark = "token杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "86400"
+ },
+ new
+ {
+ Id = 142307070902345L,
+ Code = "DILON_SESSION_EXPIRE",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "session浼氳瘽杩囨湡鏃堕棿",
+ Remark = "session浼氳瘽杩囨湡鏃堕棿锛堝崟浣嶏細绉掞級",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "7200"
+ },
+ new
+ {
+ Id = 142307070902361L,
+ Code = "DILON_FILE_UPLOAD_PATH_FOR_WINDOWS",
+ GroupCode = "FILE_PATH",
+ IsDeleted = false,
+ Name = "Win鏈湴涓婁紶鏂囦欢璺緞",
+ Remark = "Win鏈湴涓婁紶鏂囦欢璺緞",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "D:/tmp"
+ },
+ new
+ {
+ Id = 142307070902363L,
+ Code = "DILON_UN_XSS_FILTER_URL",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鏀惧紑XSS杩囨护鐨勬帴鍙�",
+ Remark = "澶氫釜url鍙互鐢ㄨ嫳鏂囬�楀彿闅斿紑",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "/demo/xssfilter,/demo/unxss"
+ },
+ new
+ {
+ Id = 142307070902364L,
+ Code = "DILON_ENABLE_SINGLE_LOGIN",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鍗曠敤鎴风櫥闄嗙殑寮�鍏�",
+ Remark = "true-鎵撳紑锛宖alse-鍏抽棴锛屽鏋滀竴涓汉鐧诲綍涓ゆ锛屽氨浼氬皢涓婁竴娆$櫥闄嗘尋涓嬪幓",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "false"
+ },
+ new
+ {
+ Id = 142307070902365L,
+ Code = "DILON_CAPTCHA_OPEN",
+ GroupCode = "DEFAULT",
+ IsDeleted = false,
+ Name = "鐧诲綍楠岃瘉鐮佺殑寮�鍏�",
+ Remark = "true-鎵撳紑锛宖alse-鍏抽棴",
+ Status = 0,
+ SysFlag = "Y",
+ Value = "true"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<long>("TypeId")
+ .HasColumnType("bigint")
+ .HasComment("瀛楀吀绫诲瀷Id");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Value")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍊�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("sys_dict_data");
+
+ b.HasComment("瀛楀吀鍊艰〃");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070902375L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鐢锋��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "鐢�"
+ },
+ new
+ {
+ Id = 142307070902376L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "濂虫��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "濂�"
+ },
+ new
+ {
+ Id = 142307070902377L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鏈煡鎬у埆",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906484L,
+ Value = "鏈煡"
+ },
+ new
+ {
+ Id = 142307070902384L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "姝e父",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "姝e父"
+ },
+ new
+ {
+ Id = 142307070902385L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍋滅敤",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "鍋滅敤"
+ },
+ new
+ {
+ Id = 142307070902386L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906483L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070902387L,
+ Code = "N",
+ IsDeleted = false,
+ Remark = "鍚�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906486L,
+ Value = "鍚�"
+ },
+ new
+ {
+ Id = 142307070902388L,
+ Code = "Y",
+ IsDeleted = false,
+ Remark = "鏄�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906486L,
+ Value = "鏄�"
+ },
+ new
+ {
+ Id = 142307070902389L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鐧诲綍",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906487L,
+ Value = "鐧诲綍"
+ },
+ new
+ {
+ Id = 142307070902390L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鐧诲嚭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906487L,
+ Value = "鐧诲嚭"
+ },
+ new
+ {
+ Id = 142307070902391L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鐩綍",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鐩綍"
+ },
+ new
+ {
+ Id = 142307070902392L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鑿滃崟",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鑿滃崟"
+ },
+ new
+ {
+ Id = 142307070902393L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鎸夐挳",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906488L,
+ Value = "鎸夐挳"
+ },
+ new
+ {
+ Id = 142307070902394L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鏈彂閫�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鏈彂閫�"
+ },
+ new
+ {
+ Id = 142307070902395L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍙戦�佹垚鍔�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鍙戦�佹垚鍔�"
+ },
+ new
+ {
+ Id = 142307070902396L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍙戦�佸け璐�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "鍙戦�佸け璐�"
+ },
+ new
+ {
+ Id = 142307070902397L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "澶辨晥",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906489L,
+ Value = "澶辨晥"
+ },
+ new
+ {
+ Id = 142307070902398L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鏃�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "鏃�"
+ },
+ new
+ {
+ Id = 142307070902399L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "缁勪欢",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "缁勪欢"
+ },
+ new
+ {
+ Id = 142307070906437L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍐呴摼",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "鍐呴摼"
+ },
+ new
+ {
+ Id = 142307070906438L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "澶栭摼",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906490L,
+ Value = "澶栭摼"
+ },
+ new
+ {
+ Id = 142307070906439L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "绯荤粺鏉冮噸",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906491L,
+ Value = "绯荤粺鏉冮噸"
+ },
+ new
+ {
+ Id = 142307070906440L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "涓氬姟鏉冮噸",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906491L,
+ Value = "涓氬姟鏉冮噸"
+ },
+ new
+ {
+ Id = 142307070906441L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍏ㄩ儴鏁版嵁",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鍏ㄩ儴鏁版嵁"
+ },
+ new
+ {
+ Id = 142307070906442L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鏈儴闂ㄥ強浠ヤ笅鏁版嵁"
+ },
+ new
+ {
+ Id = 142307070906443L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鏈儴闂ㄦ暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鏈儴闂ㄦ暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906444L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "浠呮湰浜烘暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "浠呮湰浜烘暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906445L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "鑷畾涔夋暟鎹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906492L,
+ Value = "鑷畾涔夋暟鎹�"
+ },
+ new
+ {
+ Id = 142307070906449L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鍏跺畠",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鍏跺畠"
+ },
+ new
+ {
+ Id = 142307070906450L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "澧炲姞",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "澧炲姞"
+ },
+ new
+ {
+ Id = 142307070906451L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070906452L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "缂栬緫",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "缂栬緫"
+ },
+ new
+ {
+ Id = 142307070906453L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鏇存柊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏇存柊"
+ },
+ new
+ {
+ Id = 142307070906454L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "鏌ヨ",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏌ヨ"
+ },
+ new
+ {
+ Id = 142307070906455L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "璇︽儏",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "璇︽儏"
+ },
+ new
+ {
+ Id = 142307070906456L,
+ Code = "7",
+ IsDeleted = false,
+ Remark = "鏍�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鏍�"
+ },
+ new
+ {
+ Id = 142307070906457L,
+ Code = "8",
+ IsDeleted = false,
+ Remark = "瀵煎叆",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "瀵煎叆"
+ },
+ new
+ {
+ Id = 142307070906458L,
+ Code = "9",
+ IsDeleted = false,
+ Remark = "瀵煎嚭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "瀵煎嚭"
+ },
+ new
+ {
+ Id = 142307070906459L,
+ Code = "10",
+ IsDeleted = false,
+ Remark = "鎺堟潈",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "鎺堟潈"
+ },
+ new
+ {
+ Id = 142307070906460L,
+ Code = "11",
+ IsDeleted = false,
+ Remark = "寮洪��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "寮洪��"
+ },
+ new
+ {
+ Id = 142307070906461L,
+ Code = "12",
+ IsDeleted = false,
+ Remark = "娓呯┖",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "娓呯┖"
+ },
+ new
+ {
+ Id = 142307070906462L,
+ Code = "13",
+ IsDeleted = false,
+ Remark = "淇敼鐘舵��",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906494L,
+ Value = "淇敼鐘舵��"
+ },
+ new
+ {
+ Id = 142307070906463L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "闃块噷浜�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "闃块噷浜�"
+ },
+ new
+ {
+ Id = 142307070906464L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鑵捐浜�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "鑵捐浜�"
+ },
+ new
+ {
+ Id = 142307070906465L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "minio",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "minio"
+ },
+ new
+ {
+ Id = 142307070906466L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鏈湴",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070906495L,
+ Value = "鏈湴"
+ },
+ new
+ {
+ Id = 142307070906467L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "杩愯",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910533L,
+ Value = "杩愯"
+ },
+ new
+ {
+ Id = 142307070906468L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍋滄",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910533L,
+ Value = "鍋滄"
+ },
+ new
+ {
+ Id = 142307070906469L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "閫氱煡",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910534L,
+ Value = "閫氱煡"
+ },
+ new
+ {
+ Id = 142307070906470L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鍏憡",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910534L,
+ Value = "鍏憡"
+ },
+ new
+ {
+ Id = 142307070906471L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "鑽夌",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鑽夌"
+ },
+ new
+ {
+ Id = 142307070906472L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍙戝竷",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鍙戝竷"
+ },
+ new
+ {
+ Id = 142307070906473L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鎾ゅ洖",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 142307070906474L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "鍒犻櫎",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910535L,
+ Value = "鍒犻櫎"
+ },
+ new
+ {
+ Id = 142307070906475L,
+ Code = "true",
+ IsDeleted = false,
+ Remark = "鏄�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910536L,
+ Value = "鏄�"
+ },
+ new
+ {
+ Id = 142307070906476L,
+ Code = "false",
+ IsDeleted = false,
+ Remark = "鍚�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910536L,
+ Value = "鍚�"
+ },
+ new
+ {
+ Id = 142307070906477L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "涓嬭浇鍘嬬缉鍖�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910537L,
+ Value = "涓嬭浇鍘嬬缉鍖�"
+ },
+ new
+ {
+ Id = 142307070906478L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "鐢熸垚鍒版湰椤圭洰",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910537L,
+ Value = "鐢熸垚鍒版湰椤圭洰"
+ },
+ new
+ {
+ Id = 142307070906479L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "GET",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "GET"
+ },
+ new
+ {
+ Id = 142307070906480L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "POST",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "POST"
+ },
+ new
+ {
+ Id = 142307070906481L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "PUT",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "PUT"
+ },
+ new
+ {
+ Id = 142307070906482L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "DELETE",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070910538L,
+ Value = "DELETE"
+ },
+ new
+ {
+ Id = 142307070922829L,
+ Code = "fk",
+ IsDeleted = false,
+ Remark = "澶栭敭",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "澶栭敭"
+ },
+ new
+ {
+ Id = 142307070922830L,
+ Code = "input",
+ IsDeleted = false,
+ Remark = "杈撳叆妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "杈撳叆妗�"
+ },
+ new
+ {
+ Id = 142307070922831L,
+ Code = "datepicker",
+ IsDeleted = false,
+ Remark = "鏃ユ湡閫夋嫨",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏃ユ湡閫夋嫨"
+ },
+ new
+ {
+ Id = 386523071475758L,
+ Code = "datetimepicker",
+ IsDeleted = false,
+ Remark = "鏃ユ湡鏃堕棿閫夋嫨",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏃ユ湡鏃堕棿閫夋嫨"
+ },
+ new
+ {
+ Id = 142307070922832L,
+ Code = "select",
+ IsDeleted = false,
+ Remark = "涓嬫媺妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "涓嬫媺妗�"
+ },
+ new
+ {
+ Id = 142307070922833L,
+ Code = "radio",
+ IsDeleted = false,
+ Remark = "鍗曢�夋",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鍗曢�夋"
+ },
+ new
+ {
+ Id = 142307070922834L,
+ Code = "switch",
+ IsDeleted = false,
+ Remark = "寮�鍏�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "寮�鍏�"
+ },
+ new
+ {
+ Id = 142307070922835L,
+ Code = "checkbox",
+ IsDeleted = false,
+ Remark = "澶氶�夋",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "澶氶�夋"
+ },
+ new
+ {
+ Id = 142307070922836L,
+ Code = "inputnumber",
+ IsDeleted = false,
+ Remark = "鏁板瓧杈撳叆妗�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏁板瓧杈撳叆妗�"
+ },
+ new
+ {
+ Id = 142307070922837L,
+ Code = "textarea",
+ IsDeleted = false,
+ Remark = "鏂囨湰鍩�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922827L,
+ Value = "鏂囨湰鍩�"
+ },
+ new
+ {
+ Id = 142307070922838L,
+ Code = "==",
+ IsDeleted = false,
+ Remark = "绛変簬",
+ Sort = 1,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "绛変簬"
+ },
+ new
+ {
+ Id = 142307070922839L,
+ Code = "like",
+ IsDeleted = false,
+ Remark = "妯$硦",
+ Sort = 2,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "妯$硦"
+ },
+ new
+ {
+ Id = 142307070922840L,
+ Code = ">",
+ IsDeleted = false,
+ Remark = "澶т簬",
+ Sort = 3,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "澶т簬"
+ },
+ new
+ {
+ Id = 142307070922841L,
+ Code = "<",
+ IsDeleted = false,
+ Remark = "灏忎簬",
+ Sort = 4,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "灏忎簬"
+ },
+ new
+ {
+ Id = 142307070922842L,
+ Code = "!=",
+ IsDeleted = false,
+ Remark = "涓嶇瓑浜�",
+ Sort = 5,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "涓嶇瓑浜�"
+ },
+ new
+ {
+ Id = 142307070922843L,
+ Code = ">=",
+ IsDeleted = false,
+ Remark = "澶т簬绛変簬",
+ Sort = 6,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "澶т簬绛変簬"
+ },
+ new
+ {
+ Id = 142307070922844L,
+ Code = "<=",
+ IsDeleted = false,
+ Remark = "灏忎簬绛変簬",
+ Sort = 7,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "灏忎簬绛変簬"
+ },
+ new
+ {
+ Id = 142307070922845L,
+ Code = "isNotNull",
+ IsDeleted = false,
+ Remark = "涓嶄负绌�",
+ Sort = 8,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "涓嶄负绌�"
+ },
+ new
+ {
+ Id = 386523071475759L,
+ Code = "between",
+ IsDeleted = false,
+ Remark = "浠嬩簬",
+ Sort = 9,
+ Status = 0,
+ TypeId = 142307070922828L,
+ Value = "浠嬩簬"
+ },
+ new
+ {
+ Id = 142307070922851L,
+ Code = "int",
+ IsDeleted = false,
+ Remark = "int",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "int"
+ },
+ new
+ {
+ Id = 142307070922846L,
+ Code = "long",
+ IsDeleted = false,
+ Remark = "long",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "long"
+ },
+ new
+ {
+ Id = 142307070922847L,
+ Code = "string",
+ IsDeleted = false,
+ Remark = "string",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "string"
+ },
+ new
+ {
+ Id = 142307070922850L,
+ Code = "bool",
+ IsDeleted = false,
+ Remark = "bool",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "bool"
+ },
+ new
+ {
+ Id = 142307070922852L,
+ Code = "double",
+ IsDeleted = false,
+ Remark = "double",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "double"
+ },
+ new
+ {
+ Id = 142307070922848L,
+ Code = "DateTime",
+ IsDeleted = false,
+ Remark = "DateTime",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "DateTime"
+ },
+ new
+ {
+ Id = 142307070922861L,
+ Code = "float",
+ IsDeleted = false,
+ Remark = "float",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "float"
+ },
+ new
+ {
+ Id = 142307070922862L,
+ Code = "decimal",
+ IsDeleted = false,
+ Remark = "decimal",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "decimal"
+ },
+ new
+ {
+ Id = 142307070922863L,
+ Code = "Guid",
+ IsDeleted = false,
+ Remark = "Guid",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "Guid"
+ },
+ new
+ {
+ Id = 142307070922864L,
+ Code = "DateTimeOffset",
+ IsDeleted = false,
+ Remark = "DateTimeOffset",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070922829L,
+ Value = "DateTimeOffset"
+ },
+ new
+ {
+ Id = 142307070926943L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "闆嗗洟瑙掕壊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "闆嗗洟瑙掕壊"
+ },
+ new
+ {
+ Id = 142307070926944L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "鍔犵洘鍟嗚鑹�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "鍔犵洘鍟嗚鑹�"
+ },
+ new
+ {
+ Id = 142307070926945L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "闂ㄥ簵瑙掕壊",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926941L,
+ Value = "闂ㄥ簵瑙掕壊"
+ },
+ new
+ {
+ Id = 142307070926946L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "涓�绾�",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "涓�绾�"
+ },
+ new
+ {
+ Id = 142307070926947L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "浜岀骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "浜岀骇"
+ },
+ new
+ {
+ Id = 142307070926948L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "涓夌骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "涓夌骇"
+ },
+ new
+ {
+ Id = 142307070926949L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "鍥涚骇",
+ Sort = 100,
+ Status = 0,
+ TypeId = 142307070926942L,
+ Value = "鍥涚骇"
+ },
+ new
+ {
+ Id = 285605336563781L,
+ Code = "DefaultFormType",
+ IsDeleted = false,
+ Remark = "榛樿琛ㄥ崟鍒嗙被",
+ Sort = 100,
+ Status = 0,
+ TypeId = 285605149831237L,
+ Value = "榛樿琛ㄥ崟鍒嗙被"
+ },
+ new
+ {
+ Id = 285641495289925L,
+ Code = "DefaultGroup",
+ IsDeleted = false,
+ Remark = "榛樿鍒嗙被",
+ Sort = 100,
+ Status = 0,
+ TypeId = 285641358889029L,
+ Value = "榛樿鍒嗙被"
+ },
+ new
+ {
+ Id = 355697634480197L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 355697676427333L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "鏈ㄨ川"
+ },
+ new
+ {
+ Id = 355697726726213L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "閲戝睘"
+ },
+ new
+ {
+ Id = 355697755361349L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355694205325381L,
+ Value = "濉戞枡"
+ },
+ new
+ {
+ Id = 355697944657989L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "绂佺敤"
+ },
+ new
+ {
+ Id = 355697974415429L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "绌洪棽"
+ },
+ new
+ {
+ Id = 355698005966917L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "缁勭洏"
+ },
+ new
+ {
+ Id = 355698032828485L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423941L,
+ Value = "搴撲綅"
+ },
+ new
+ {
+ Id = 355697634480198L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "閫氱敤"
+ },
+ new
+ {
+ Id = 355697676427399L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "鍗卞寲鍝�"
+ },
+ new
+ {
+ Id = 355697726726200L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "娑蹭綋"
+ },
+ new
+ {
+ Id = 355697755361301L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "璐甸噸鍝�"
+ },
+ new
+ {
+ Id = 355697755361302L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "姘斾綋"
+ },
+ new
+ {
+ Id = 355697755361303L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355697881423942L,
+ Value = "浣庢俯"
+ },
+ new
+ {
+ Id = 355698270015557L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 355698303508549L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "绔嬩綋搴�"
+ },
+ new
+ {
+ Id = 355698328531013L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鏅�氬簱"
+ },
+ new
+ {
+ Id = 355698362712133L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698224758853L,
+ Value = "鍏叡搴�"
+ },
+ new
+ {
+ Id = 355698476777541L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "绌洪棽"
+ },
+ new
+ {
+ Id = 355698510786629L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "寰呭叆"
+ },
+ new
+ {
+ Id = 355698549424197L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "瀛樿揣"
+ },
+ new
+ {
+ Id = 355698576941125L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698441912389L,
+ Value = "寰呭嚭"
+ },
+ new
+ {
+ Id = 355698694561861L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "浣�"
+ },
+ new
+ {
+ Id = 355698716401733L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "涓�"
+ },
+ new
+ {
+ Id = 355698740326469L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698661130309L,
+ Value = "楂�"
+ },
+ new
+ {
+ Id = 355698898735173L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698855280709L,
+ Value = "鍏嶆"
+ },
+ new
+ {
+ Id = 355698924970053L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355698855280709L,
+ Value = "鎶芥"
+ },
+ new
+ {
+ Id = 355699041800261L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鍘熸潗鏂�"
+ },
+ new
+ {
+ Id = 355699063255109L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鍗婃垚鍝�"
+ },
+ new
+ {
+ Id = 355699088330821L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "鎴愬搧"
+ },
+ new
+ {
+ Id = 355699113156677L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699003580485L,
+ Value = "绌烘墭"
+ },
+ new
+ {
+ Id = 355699219353669L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699189051461L,
+ Value = "闀垮害"
+ },
+ new
+ {
+ Id = 355699243540549L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699189051461L,
+ Value = "閲嶉噺"
+ },
+ new
+ {
+ Id = 355699345645637L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699314061381L,
+ Value = "cm"
+ },
+ new
+ {
+ Id = 355699367575621L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699314061381L,
+ Value = "t"
+ },
+ new
+ {
+ Id = 355699479236677L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699447029829L,
+ Value = "鎵嬪姩"
+ },
+ new
+ {
+ Id = 355699505229893L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699447029829L,
+ Value = "鑷姩"
+ },
+ new
+ {
+ Id = 355699615133765L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "鍏ュ簱"
+ },
+ new
+ {
+ Id = 355699638476869L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "鍑哄簱"
+ },
+ new
+ {
+ Id = 355699661889605L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699576467525L,
+ Value = "绉诲簱"
+ },
+ new
+ {
+ Id = 355699760455749L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "鏈墽琛�"
+ },
+ new
+ {
+ Id = 355699784736837L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "鎵ц涓�"
+ },
+ new
+ {
+ Id = 355699813859397L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099717L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 355699760455798L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鏈墽琛�"
+ },
+ new
+ {
+ Id = 355699784736899L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-AGV"
+ },
+ new
+ {
+ Id = 355699813859300L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-杈撻�佺嚎"
+ },
+ new
+ {
+ Id = 355699813859301L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "鎵ц涓�-鍫嗗灈鏈�"
+ },
+ new
+ {
+ Id = 355699813859302L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "绛夊緟"
+ },
+ new
+ {
+ Id = 355699813859303L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 355699731099718L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 383290784104517L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383290718294085L,
+ Value = "娉℃搏鍒囧壊"
+ },
+ new
+ {
+ Id = 383290816860229L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383290718294085L,
+ Value = "瑁呴厤杞﹂棿"
+ },
+ new
+ {
+ Id = 383317608218693L,
+ Code = "0",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "鏈紑濮�"
+ },
+ new
+ {
+ Id = 383317718302789L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "杩愰�佷腑"
+ },
+ new
+ {
+ Id = 383317751234629L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 383317542490181L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 384394737053765L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "AGV"
+ },
+ new
+ {
+ Id = 384394851618885L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "鍫嗗灈鏈�"
+ },
+ new
+ {
+ Id = 384394877870149L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 384394636988485L,
+ Value = "RGV"
+ },
+ new
+ {
+ Id = 385412179521605L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "鍒囧壊"
+ },
+ new
+ {
+ Id = 385412217618501L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "鍘嬪悎"
+ },
+ new
+ {
+ Id = 385412280418373L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 385412129075269L,
+ Value = "CNC"
+ },
+ new
+ {
+ Id = 386523049214021L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120389L,
+ Value = "鍏ュ簱鍙�"
+ },
+ new
+ {
+ Id = 386523071475781L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120389L,
+ Value = "鍑哄簱鍙�"
+ },
+ new
+ {
+ Id = 386523049214022L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场涓�绾�"
+ },
+ new
+ {
+ Id = 386523071475723L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场浜岀嚎"
+ },
+ new
+ {
+ Id = 386523071475724L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120390L,
+ Value = "鍙戞场涓夌嚎"
+ },
+ new
+ {
+ Id = 386523049214025L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "鏈紑濮�"
+ },
+ new
+ {
+ Id = 386523071475726L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "杩涜涓�"
+ },
+ new
+ {
+ Id = 386523071475727L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 386523071475728L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120391L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 386523049214029L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475730L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "鍑哄簱"
+ },
+ new
+ {
+ Id = 386523071475731L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475732L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120392L,
+ Value = "瓒婂簱"
+ },
+ new
+ {
+ Id = 386523049214033L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鏈笅鍙�"
+ },
+ new
+ {
+ Id = 386523071475734L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "宸蹭笅鍙�"
+ },
+ new
+ {
+ Id = 386523071475735L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鎵ц涓�"
+ },
+ new
+ {
+ Id = 386523071475736L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "瀹屾垚"
+ },
+ new
+ {
+ Id = 386523071475737L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120393L,
+ Value = "鎾ゅ洖"
+ },
+ new
+ {
+ Id = 386523049214038L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浜х嚎閫�搴�"
+ },
+ new
+ {
+ Id = 386523071475739L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鐢熶骇鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475740L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浣欐枡鍥炲簱"
+ },
+ new
+ {
+ Id = 386523071475741L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "閲囪喘鍏ュ簱"
+ },
+ new
+ {
+ Id = 386523071475742L,
+ Code = "5",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475743L,
+ Code = "6",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍙戣揣鍗�"
+ },
+ new
+ {
+ Id = 386523071475744L,
+ Code = "7",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鐢熶骇棰嗘枡"
+ },
+ new
+ {
+ Id = 386523071475745L,
+ Code = "8",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "閿�鍞嚭搴�"
+ },
+ new
+ {
+ Id = 386523071475746L,
+ Code = "9",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "渚涘簲鍟嗛��搴�"
+ },
+ new
+ {
+ Id = 386523071475747L,
+ Code = "10",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "娉℃搏鍑哄簱"
+ },
+ new
+ {
+ Id = 386523071475748L,
+ Code = "11",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "鍑哄簱鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475749L,
+ Code = "12",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "浠撳簱璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475750L,
+ Code = "13",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "搴撳尯璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475751L,
+ Code = "14",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "搴撲綅璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475752L,
+ Code = "15",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "椤圭洰璋冩嫧"
+ },
+ new
+ {
+ Id = 386523071475753L,
+ Code = "16",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120394L,
+ Value = "璋冩嫧鍏朵粬"
+ },
+ new
+ {
+ Id = 386523071475754L,
+ Code = "1",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "涓嶄娇鐢�"
+ },
+ new
+ {
+ Id = 386523071475755L,
+ Code = "2",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "鏈鏍�"
+ },
+ new
+ {
+ Id = 386523071475756L,
+ Code = "3",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "绛炬牳涓�"
+ },
+ new
+ {
+ Id = 386523071475757L,
+ Code = "4",
+ IsDeleted = false,
+ Remark = "",
+ Sort = 100,
+ Status = 0,
+ TypeId = 386522984120395L,
+ Value = "宸茬鏍�"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("EnumClassName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("瀵瑰簲鏋氫妇");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_dict_type");
+
+ b.HasComment("瀛楀吀绫诲瀷琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070906483L,
+ Code = "common_status",
+ IsDeleted = false,
+ Name = "閫氱敤鐘舵��",
+ Remark = "閫氱敤鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906484L,
+ Code = "sex",
+ IsDeleted = false,
+ Name = "鎬у埆",
+ Remark = "鎬у埆瀛楀吀",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906485L,
+ Code = "consts_type",
+ IsDeleted = false,
+ Name = "甯搁噺鐨勫垎绫�",
+ Remark = "甯搁噺鐨勫垎绫伙紝鐢ㄤ簬鍖哄埆涓�缁勯厤缃�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906486L,
+ Code = "yes_or_no",
+ IsDeleted = false,
+ Name = "鏄惁",
+ Remark = "鏄惁",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906487L,
+ Code = "vis_type",
+ IsDeleted = false,
+ Name = "璁块棶绫诲瀷",
+ Remark = "璁块棶绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906488L,
+ Code = "menu_type",
+ IsDeleted = false,
+ Name = "鑿滃崟绫诲瀷",
+ Remark = "鑿滃崟绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906489L,
+ Code = "send_type",
+ IsDeleted = false,
+ Name = "鍙戦�佺被鍨�",
+ Remark = "鍙戦�佺被鍨�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906490L,
+ Code = "open_type",
+ IsDeleted = false,
+ Name = "鎵撳紑鏂瑰紡",
+ Remark = "鎵撳紑鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906491L,
+ Code = "menu_weight",
+ IsDeleted = false,
+ Name = "鑿滃崟鏉冮噸",
+ Remark = "鑿滃崟鏉冮噸",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906492L,
+ Code = "data_scope_type",
+ IsDeleted = false,
+ Name = "鏁版嵁鑼冨洿绫诲瀷",
+ Remark = "鏁版嵁鑼冨洿绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906494L,
+ Code = "op_type",
+ IsDeleted = false,
+ Name = "鎿嶄綔绫诲瀷",
+ Remark = "鎿嶄綔绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070906495L,
+ Code = "file_storage_location",
+ IsDeleted = false,
+ Name = "鏂囦欢瀛樺偍浣嶇疆",
+ Remark = "鏂囦欢瀛樺偍浣嶇疆",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910533L,
+ Code = "run_status",
+ IsDeleted = false,
+ Name = "杩愯鐘舵��",
+ Remark = "瀹氭椂浠诲姟杩愯鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910534L,
+ Code = "notice_type",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡绫诲瀷",
+ Remark = "閫氱煡鍏憡绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910535L,
+ Code = "notice_status",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡鐘舵��",
+ Remark = "閫氱煡鍏憡鐘舵��",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910536L,
+ Code = "yes_true_false",
+ IsDeleted = false,
+ Name = "鏄惁boolean",
+ Remark = "鏄惁boolean",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910537L,
+ Code = "code_gen_create_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚鏂瑰紡",
+ Remark = "浠g爜鐢熸垚鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910538L,
+ Code = "request_type",
+ IsDeleted = false,
+ Name = "璇锋眰鏂瑰紡",
+ Remark = "璇锋眰鏂瑰紡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922827L,
+ Code = "code_gen_effect_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+ Remark = "浠g爜鐢熸垚浣滅敤绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922828L,
+ Code = "code_gen_query_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+ Remark = "浠g爜鐢熸垚鏌ヨ绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070922829L,
+ Code = "code_gen_net_type",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚.NET绫诲瀷",
+ Remark = "浠g爜鐢熸垚.NET绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070926941L,
+ Code = "role_type",
+ IsDeleted = false,
+ Name = "瑙掕壊绫诲瀷",
+ Remark = "瑙掕壊绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070926942L,
+ Code = "org_type",
+ IsDeleted = false,
+ Name = "鏈烘瀯绫诲瀷",
+ Remark = "鏈烘瀯绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 285605149831237L,
+ Code = "form_type",
+ IsDeleted = false,
+ Name = "琛ㄥ崟绫诲瀷",
+ Remark = "琛ㄥ崟绫诲瀷",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 285641358889029L,
+ Code = "workflow_group",
+ IsDeleted = false,
+ Name = "娴佺▼鍒嗙被",
+ Remark = "娴佺▼鍒嗙被",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355694205325381L,
+ Code = "container_type",
+ IsDeleted = false,
+ Name = "鎵樼洏绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355697881423941L,
+ Code = "container_status",
+ IsDeleted = false,
+ Name = "鎵樼洏鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355697881423942L,
+ Code = "container_category",
+ IsDeleted = false,
+ Name = "鎵樼洏鍒嗙被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698224758853L,
+ Code = "area_type",
+ IsDeleted = false,
+ Name = "搴撳尯绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698441912389L,
+ Code = "place_status",
+ IsDeleted = false,
+ Name = "搴撲綅鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698661130309L,
+ Code = "height_level",
+ IsDeleted = false,
+ Name = "搴撲綅楂樺害",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355698855280709L,
+ Code = "material_inspection",
+ IsDeleted = false,
+ Name = "鐗╂枡妫�楠�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699003580485L,
+ Code = "material_type",
+ IsDeleted = false,
+ Name = "鐗╂枡绫诲埆",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699189051461L,
+ Code = "unit_type",
+ IsDeleted = false,
+ Name = "鍗曚綅绫诲埆",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699314061381L,
+ Code = "unitno_type",
+ IsDeleted = false,
+ Name = "鍗曚綅缂栧彿",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699447029829L,
+ Code = "task_model",
+ IsDeleted = false,
+ Name = "浠诲姟鏂瑰紡",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699576467525L,
+ Code = "task_type",
+ IsDeleted = false,
+ Name = "浠诲姟绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699731099717L,
+ Code = "task_status",
+ IsDeleted = false,
+ Name = "浠诲姟鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 355699731099718L,
+ Code = "taskdodevice_statusenum",
+ IsDeleted = false,
+ Name = "浠诲姟璁惧鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 383290718294085L,
+ Code = "les_workshop_type",
+ IsDeleted = false,
+ Name = "鎵�灞炶溅闂�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 383317542490181L,
+ Code = "les_takematerials_status",
+ IsDeleted = false,
+ Name = "鍙枡鍗曠姸鎬�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 384394636988485L,
+ Code = "dodevice_type",
+ IsDeleted = false,
+ Name = "璁惧绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 385412129075269L,
+ Code = "lesworkshop_section",
+ IsDeleted = false,
+ Name = "宸ユ",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120389L,
+ Code = "les_entrance_type",
+ IsDeleted = false,
+ Name = "搴撳彛绫诲瀷",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120390L,
+ Code = "blankingproductionLine_enum",
+ IsDeleted = false,
+ Name = "涓嬫枡浜х嚎",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120391L,
+ Code = "orderdetails_statusenum",
+ IsDeleted = false,
+ Name = "鍗曟嵁鏄庣粏琛ㄧ姸鎬�",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120392L,
+ Code = "orderlargecategory_Enum",
+ IsDeleted = false,
+ Name = "鍗曟嵁澶х被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120393L,
+ Code = "order_statusenum",
+ IsDeleted = false,
+ Name = "鍗曟嵁涓昏〃鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120394L,
+ Code = "ordersubclass_enum",
+ IsDeleted = false,
+ Name = "鍗曟嵁灏忕被",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 386522984120395L,
+ Code = "issue_state",
+ IsDeleted = false,
+ Name = "绛炬牳鐘舵��",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<string>("JobNum")
+ .HasMaxLength(30)
+ .HasColumnType("nvarchar(30)")
+ .HasComment("宸ュ彿");
+
+ b.Property<long>("OrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.Property<string>("OrgName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏈烘瀯鍚嶇О");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_emp");
+
+ b.HasComment("鍛樺伐琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910551L,
+ JobNum = "D1001",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910552L,
+ JobNum = "D1002",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910553L,
+ JobNum = "D1003",
+ OrgId = 142307070910539L,
+ OrgName = "绉熸埛3鍏徃"
+ },
+ new
+ {
+ Id = 142307070910554L,
+ JobNum = "D1001",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910555L,
+ JobNum = "D1002",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910556L,
+ JobNum = "D1003",
+ OrgId = 142307070910547L,
+ OrgName = "绉熸埛1鍏徃"
+ },
+ new
+ {
+ Id = 142307070910557L,
+ JobNum = "D1001",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 142307070910558L,
+ JobNum = "D1002",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 142307070910559L,
+ JobNum = "D1003",
+ OrgId = 142307070910548L,
+ OrgName = "绉熸埛2鍏徃"
+ },
+ new
+ {
+ Id = 358533464608837L,
+ JobNum = "",
+ OrgId = 142307070910539L,
+ OrgName = "浼熸湰鑲′唤鏈夐檺鍏徃"
+ },
+ new
+ {
+ Id = 358536045723717L,
+ JobNum = "",
+ OrgId = 142307070910542L,
+ OrgName = "鐮斿彂閮�"
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+ {
+ b.Property<long>("SysEmpId")
+ .HasColumnType("bigint")
+ .HasComment("鍛樺伐Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.Property<long>("SysPosId")
+ .HasColumnType("bigint")
+ .HasComment("鑱屼綅Id");
+
+ b.HasKey("SysEmpId", "SysOrgId", "SysPosId");
+
+ b.HasIndex("SysOrgId");
+
+ b.HasIndex("SysPosId");
+
+ b.ToTable("sys_emp_ext_org_pos");
+
+ b.HasComment("鍛樺伐闄勫睘鏈烘瀯鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910539L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910540L,
+ SysPosId = 142307070910548L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910541L,
+ SysPosId = 142307070910549L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysOrgId = 142307070910542L,
+ SysPosId = 142307070910550L
+ },
+ new
+ {
+ SysEmpId = 142307070910553L,
+ SysOrgId = 142307070910542L,
+ SysPosId = 142307070910547L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+ {
+ b.Property<long>("SysEmpId")
+ .HasColumnType("bigint")
+ .HasComment("鍛樺伐Id");
+
+ b.Property<long>("SysPosId")
+ .HasColumnType("bigint")
+ .HasComment("鑱屼綅Id");
+
+ b.HasKey("SysEmpId", "SysPosId");
+
+ b.HasIndex("SysPosId");
+
+ b.ToTable("sys_emp_pos");
+
+ b.HasComment("鍛樺伐鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 142307070910551L,
+ SysPosId = 142307070910548L
+ },
+ new
+ {
+ SysEmpId = 142307070910552L,
+ SysPosId = 142307070910549L
+ },
+ new
+ {
+ SysEmpId = 142307070910553L,
+ SysPosId = 142307070910547L
+ },
+ new
+ {
+ SysEmpId = 358533464608837L,
+ SysPosId = 142307070910550L
+ },
+ new
+ {
+ SysEmpId = 358536045723717L,
+ SysPosId = 142307070910550L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysExcelTemplate", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AppName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鎵�灞炲簲鐢�");
+
+ b.Property<string>("ClassName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("绫诲悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DataStartLine")
+ .HasColumnType("int")
+ .HasComment("鏁版嵁寮�濮嬭");
+
+ b.Property<int>("HeadStartLine")
+ .HasColumnType("int")
+ .HasComment("琛ㄥご寮�濮嬭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("妯℃澘鍚嶇О");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("TemplateFileName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("妯℃澘鏂囦欢鍚嶇О");
+
+ b.Property<string>("UnionUniqueFields")
+ .IsRequired()
+ .HasMaxLength(300)
+ .HasColumnType("nvarchar(300)")
+ .HasComment("鍞竴瀛楁闆�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Version")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐗堟湰");
+
+ b.HasKey("Id");
+
+ b.HasAlternateKey("ClassName", "Version", "AppName");
+
+ b.ToTable("sys_excel_template");
+
+ b.HasComment("Excel妯℃澘");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysFile", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FileBucket")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂囦欢浠撳簱");
+
+ b.Property<int>("FileLocation")
+ .HasColumnType("int")
+ .HasComment("鏂囦欢瀛樺偍浣嶇疆");
+
+ b.Property<string>("FileObjectName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛樺偍鍒癰ucket鐨勫悕绉�");
+
+ b.Property<string>("FileOriginName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂囦欢鍚嶇О");
+
+ b.Property<string>("FilePath")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("瀛樺偍璺緞");
+
+ b.Property<string>("FileSizeInfo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏂囦欢澶у皬淇℃伅");
+
+ b.Property<string>("FileSizeKb")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("鏂囦欢澶у皬kb");
+
+ b.Property<string>("FileSuffix")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏂囦欢鍚庣紑");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_file");
+
+ b.HasComment("鏂囦欢淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysForm", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FormJson")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("form琛ㄥ崟Json");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("Publish")
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍙戝竷");
+
+ b.Property<string>("Title")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏍囬");
+
+ b.Property<long>("TypeId")
+ .HasColumnType("bigint")
+ .HasComment("琛ㄥ崟绫诲瀷ID");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Version")
+ .HasColumnType("int")
+ .HasComment("鐗堟湰");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_forms");
+
+ b.HasComment("琛ㄥ崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogAudit", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("ColumnName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒楀悕");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎿嶄綔鏃堕棿");
+
+ b.Property<string>("NewValue")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏂板��");
+
+ b.Property<string>("OldValue")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏃у��");
+
+ b.Property<int>("Operate")
+ .HasColumnType("int")
+ .HasComment("鎿嶄綔鏂瑰紡");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("琛ㄥ悕");
+
+ b.Property<long>("UserId")
+ .HasColumnType("bigint")
+ .HasComment("鎿嶄綔浜篒d");
+
+ b.Property<string>("UserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜哄悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_audit");
+
+ b.HasComment("瀹¤鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogEx", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜�");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("绫诲悕");
+
+ b.Property<string>("ExceptionMsg")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父淇℃伅");
+
+ b.Property<string>("ExceptionName")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父鍚嶇О");
+
+ b.Property<string>("ExceptionSource")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("寮傚父婧�");
+
+ b.Property<DateTimeOffset?>("ExceptionTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("寮傚父鏃堕棿");
+
+ b.Property<string>("MethodName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂规硶鍚�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("ParamsObj")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍙傛暟瀵硅薄");
+
+ b.Property<string>("StackTrace")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍫嗘爤淇℃伅");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_ex");
+
+ b.HasComment("寮傚父鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogOp", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎿嶄綔浜�");
+
+ b.Property<string>("Browser")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("娴忚鍣�");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("绫诲悕绉�");
+
+ b.Property<long>("ElapsedTime")
+ .HasColumnType("bigint")
+ .HasComment("鑰楁椂");
+
+ b.Property<string>("Ip")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("IP");
+
+ b.Property<string>("Location")
+ .HasMaxLength(1024)
+ .HasColumnType("nvarchar(1024)")
+ .HasComment("鍦板潃");
+
+ b.Property<string>("Message")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍏蜂綋娑堟伅");
+
+ b.Property<string>("MethodName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏂规硶鍚嶇О");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<DateTimeOffset?>("OpTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎿嶄綔鏃堕棿");
+
+ b.Property<string>("Os")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鎿嶄綔绯荤粺");
+
+ b.Property<string>("Param")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璇锋眰鍙傛暟");
+
+ b.Property<string>("ReqMethod")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("璇锋眰鏂瑰紡");
+
+ b.Property<string>("Result")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("杩斿洖缁撴灉");
+
+ b.Property<int>("Success")
+ .HasColumnType("int")
+ .HasComment("鏄惁鎵ц鎴愬姛");
+
+ b.Property<string>("Url")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("璇锋眰鍦板潃");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_op");
+
+ b.HasComment("鎿嶄綔鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysLogVis", b =>
+ {
+ b.Property<int>("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
+
+ b.Property<string>("Account")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁块棶浜�");
+
+ b.Property<string>("Browser")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("娴忚鍣�");
+
+ b.Property<string>("Ip")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("IP");
+
+ b.Property<string>("Location")
+ .HasMaxLength(1024)
+ .HasColumnType("nvarchar(1024)")
+ .HasComment("鍦板潃");
+
+ b.Property<string>("Message")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍏蜂綋娑堟伅");
+
+ b.Property<string>("Name")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Os")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鎿嶄綔绯荤粺");
+
+ b.Property<int>("Success")
+ .HasColumnType("int")
+ .HasComment("鏄惁鎵ц鎴愬姛");
+
+ b.Property<DateTimeOffset?>("VisTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("璁块棶鏃堕棿");
+
+ b.Property<int>("VisType")
+ .HasColumnType("int")
+ .HasComment("璁块棶绫诲瀷");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_log_vis");
+
+ b.HasComment("璁块棶鏃ュ織琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Application")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴旂敤鍒嗙被");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<string>("Component")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("缁勪欢鍦板潃");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Icon")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍥炬爣");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Link")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍐呴摼鍦板潃");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("OpenType")
+ .HasColumnType("int")
+ .HasComment("鎵撳紑鏂瑰紡");
+
+ b.Property<string>("Permission")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏉冮檺鏍囪瘑");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Redirect")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("閲嶅畾鍚戝湴鍧�");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<string>("Router")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("璺敱鍦板潃");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("鑿滃崟绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Visible")
+ .HasMaxLength(5)
+ .HasColumnType("nvarchar(5)")
+ .HasComment("鏄惁鍙");
+
+ b.Property<int>("Weight")
+ .HasColumnType("int")
+ .HasComment("鏉冮噸");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_menu");
+
+ b.HasComment("鑿滃崟琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307000914633L,
+ Application = "manage",
+ Code = "sys_mgr",
+ Component = "PageView",
+ Icon = "team",
+ IsDeleted = false,
+ Name = "缁勭粐鏋舵瀯",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/sys",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910581L,
+ Application = "manage",
+ Code = "sys_org_mgr",
+ Component = "system/org/index",
+ IsDeleted = false,
+ Name = "鏈烘瀯绠$悊",
+ OpenType = 1,
+ Pid = 142307000914633L,
+ Pids = "[0],[142307000914633],",
+ Router = "/org",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910582L,
+ Application = "manage",
+ Code = "sys_org_mgr_page",
+ IsDeleted = false,
+ Name = "鏈烘瀯鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOrg:page",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910583L,
+ Application = "manage",
+ Code = "sys_org_mgr_list",
+ IsDeleted = false,
+ Name = "鏈烘瀯鍒楄〃",
+ OpenType = 0,
+ Permission = "sysOrg:list",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910584L,
+ Application = "manage",
+ Code = "sys_org_mgr_add",
+ IsDeleted = false,
+ Name = "鏈烘瀯澧炲姞",
+ OpenType = 0,
+ Permission = "sysOrg:add",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910585L,
+ Application = "manage",
+ Code = "sys_org_mgr_edit",
+ IsDeleted = false,
+ Name = "鏈烘瀯缂栬緫",
+ OpenType = 0,
+ Permission = "sysOrg:edit",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910586L,
+ Application = "manage",
+ Code = "sys_org_mgr_delete",
+ IsDeleted = false,
+ Name = "鏈烘瀯鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysOrg:delete",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910587L,
+ Application = "manage",
+ Code = "sys_org_mgr_detail",
+ IsDeleted = false,
+ Name = "鏈烘瀯璇︽儏",
+ OpenType = 0,
+ Permission = "sysOrg:detail",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910588L,
+ Application = "manage",
+ Code = "sys_org_mgr_tree",
+ IsDeleted = false,
+ Name = "鏈烘瀯鏍�",
+ OpenType = 0,
+ Permission = "sysOrg:tree",
+ Pid = 142307070910581L,
+ Pids = "[0],[142307000914633],[142307070910581],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910589L,
+ Application = "manage",
+ Code = "sys_pos_mgr",
+ Component = "system/pos/index",
+ IsDeleted = false,
+ Name = "鑱屼綅绠$悊",
+ OpenType = 1,
+ Pid = 142307000914633L,
+ Pids = "[0],[142307000914633],",
+ Router = "/pos",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910590L,
+ Application = "manage",
+ Code = "sys_pos_mgr_page",
+ IsDeleted = false,
+ Name = "鑱屼綅鏌ヨ",
+ OpenType = 0,
+ Permission = "sysPos:page",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910591L,
+ Application = "manage",
+ Code = "sys_pos_mgr_list",
+ IsDeleted = false,
+ Name = "鑱屼綅鍒楄〃",
+ OpenType = 0,
+ Permission = "sysPos:list",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914629L,
+ Application = "manage",
+ Code = "sys_pos_mgr_add",
+ IsDeleted = false,
+ Name = "鑱屼綅澧炲姞",
+ OpenType = 0,
+ Permission = "sysPos:add",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914630L,
+ Application = "manage",
+ Code = "sys_pos_mgr_edit",
+ IsDeleted = false,
+ Name = "鑱屼綅缂栬緫",
+ OpenType = 0,
+ Permission = "sysPos:edit",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914631L,
+ Application = "manage",
+ Code = "sys_pos_mgr_delete",
+ IsDeleted = false,
+ Name = "鑱屼綅鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysPos:delete",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914632L,
+ Application = "manage",
+ Code = "sys_pos_mgr_detail",
+ IsDeleted = false,
+ Name = "鑱屼綅璇︽儏",
+ OpenType = 0,
+ Permission = "sysPos:detail",
+ Pid = 142307070910589L,
+ Pids = "[0],[142307000914633],[142307070910589],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910563L,
+ Application = "manage",
+ Code = "auth_manager",
+ Component = "PageView",
+ Icon = "safety-certificate",
+ IsDeleted = false,
+ Name = "鏉冮檺绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/auth",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910564L,
+ Application = "manage",
+ Code = "sys_user_mgr",
+ Component = "system/user/index",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛绠$悊",
+ OpenType = 1,
+ Pid = 142307070910563L,
+ Pids = "[0],[142307070910563],",
+ Router = "/mgr_user",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910565L,
+ Application = "manage",
+ Code = "sys_user_mgr_page",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鏌ヨ",
+ OpenType = 0,
+ Permission = "sysUser:page",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910566L,
+ Application = "manage",
+ Code = "sys_user_mgr_edit",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛缂栬緫",
+ OpenType = 0,
+ Permission = "sysUser:edit",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910567L,
+ Application = "manage",
+ Code = "sys_user_mgr_add",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛澧炲姞",
+ OpenType = 0,
+ Permission = "sysUser:add",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910568L,
+ Application = "manage",
+ Code = "sys_user_mgr_delete",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysUser:delete",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910569L,
+ Application = "manage",
+ Code = "sys_user_mgr_detail",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛璇︽儏",
+ OpenType = 0,
+ Permission = "sysUser:detail",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910570L,
+ Application = "manage",
+ Code = "sys_user_mgr_export",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛瀵煎嚭",
+ OpenType = 0,
+ Permission = "sysUser:export",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910571L,
+ Application = "manage",
+ Code = "sys_user_mgr_selector",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛閫夋嫨鍣�",
+ OpenType = 0,
+ Permission = "sysUser:selector",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910572L,
+ Application = "manage",
+ Code = "sys_user_mgr_grant_role",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎺堟潈瑙掕壊",
+ OpenType = 0,
+ Permission = "sysUser:grantRole",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910573L,
+ Application = "manage",
+ Code = "sys_user_mgr_own_role",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎷ユ湁瑙掕壊",
+ OpenType = 0,
+ Permission = "sysUser:ownRole",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910574L,
+ Application = "manage",
+ Code = "sys_user_mgr_grant_data",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎺堟潈鏁版嵁",
+ OpenType = 0,
+ Permission = "sysUser:grantData",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910575L,
+ Application = "manage",
+ Code = "sys_user_mgr_own_data",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鎷ユ湁鏁版嵁",
+ OpenType = 0,
+ Permission = "sysUser:ownData",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910576L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_info",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鏇存柊淇℃伅",
+ OpenType = 0,
+ Permission = "sysUser:updateInfo",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910577L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_pwd",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼瀵嗙爜",
+ OpenType = 0,
+ Permission = "sysUser:updatePwd",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910578L,
+ Application = "manage",
+ Code = "sys_user_mgr_change_status",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysUser:changeStatus",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910579L,
+ Application = "manage",
+ Code = "sys_user_mgr_update_avatar",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛淇敼澶村儚",
+ OpenType = 0,
+ Permission = "sysUser:updateAvatar",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070910580L,
+ Application = "manage",
+ Code = "sys_user_mgr_reset_pwd",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛閲嶇疆瀵嗙爜",
+ OpenType = 0,
+ Permission = "sysUser:resetPwd",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918777L,
+ Application = "manage",
+ Code = "sys_user_mgr_login",
+ IsDeleted = false,
+ Name = "鐢ㄦ埛鐧诲綍淇℃伅",
+ OpenType = 0,
+ Permission = "getLoginUser",
+ Pid = 142307070910564L,
+ Pids = "[0],[142307070910563],[142307070910564],",
+ Sort = 100,
+ Status = 1,
+ Type = 2,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914651L,
+ Application = "manage",
+ Code = "sys_role_mgr",
+ Component = "system/role/index",
+ IsDeleted = false,
+ Name = "瑙掕壊绠$悊",
+ OpenType = 1,
+ Pid = 142307070910563L,
+ Pids = "[0],[142307070910563],",
+ Router = "/role",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914652L,
+ Application = "manage",
+ Code = "sys_role_mgr_page",
+ IsDeleted = false,
+ Name = "瑙掕壊鏌ヨ",
+ OpenType = 0,
+ Permission = "sysRole:page",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914653L,
+ Application = "manage",
+ Code = "sys_role_mgr_add",
+ IsDeleted = false,
+ Name = "瑙掕壊澧炲姞",
+ OpenType = 0,
+ Permission = "sysRole:add",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914654L,
+ Application = "manage",
+ Code = "sys_role_mgr_edit",
+ IsDeleted = false,
+ Name = "瑙掕壊缂栬緫",
+ OpenType = 0,
+ Permission = "sysRole:edit",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914655L,
+ Application = "manage",
+ Code = "sys_role_mgr_delete",
+ IsDeleted = false,
+ Name = "瑙掕壊鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysRole:delete",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914656L,
+ Application = "manage",
+ Code = "sys_role_mgr_detail",
+ IsDeleted = false,
+ Name = "瑙掕壊璇︽儏",
+ OpenType = 0,
+ Permission = "sysRole:detail",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914657L,
+ Application = "manage",
+ Code = "sys_role_mgr_drop_down",
+ IsDeleted = false,
+ Name = "瑙掕壊涓嬫媺",
+ OpenType = 0,
+ Permission = "sysRole:dropDown",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914658L,
+ Application = "manage",
+ Code = "sys_role_mgr_grant_menu",
+ IsDeleted = false,
+ Name = "瑙掕壊鎺堟潈鑿滃崟",
+ OpenType = 0,
+ Permission = "sysRole:grantMenu",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914659L,
+ Application = "manage",
+ Code = "sys_role_mgr_own_menu",
+ IsDeleted = false,
+ Name = "瑙掕壊鎷ユ湁鑿滃崟",
+ OpenType = 0,
+ Permission = "sysRole:ownMenu",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914660L,
+ Application = "manage",
+ Code = "sys_role_mgr_grant_data",
+ IsDeleted = false,
+ Name = "瑙掕壊鎺堟潈鏁版嵁",
+ OpenType = 0,
+ Permission = "sysRole:grantData",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914661L,
+ Application = "manage",
+ Code = "sys_role_mgr_own_data",
+ IsDeleted = false,
+ Name = "瑙掕壊鎷ユ湁鏁版嵁",
+ OpenType = 0,
+ Permission = "sysRole:ownData",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914648L,
+ Application = "manage",
+ Code = "sys_menu_mgr_grant_tree",
+ IsDeleted = false,
+ Name = "鑿滃崟鎺堟潈鏍�",
+ OpenType = 0,
+ Permission = "sysMenu:treeForGrant",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914649L,
+ Application = "manage",
+ Code = "sys_menu_mgr_tree",
+ IsDeleted = false,
+ Name = "鑿滃崟鏍�",
+ OpenType = 0,
+ Permission = "sysMenu:tree",
+ Pid = 142307070914651L,
+ Pids = "[0],[142307070910563],[142307070914651],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914633L,
+ Application = "system",
+ Code = "sys_platform",
+ Component = "PageView",
+ Icon = "safety-certificate",
+ IsDeleted = false,
+ Name = "骞冲彴绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/platform",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914634L,
+ Application = "system",
+ Code = "sys_app_mgr",
+ Component = "system/app/index",
+ IsDeleted = false,
+ Name = "搴旂敤绠$悊",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/app",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914635L,
+ Application = "system",
+ Code = "sys_app_mgr_page",
+ IsDeleted = false,
+ Name = "搴旂敤鏌ヨ",
+ OpenType = 0,
+ Permission = "sysApp:page",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914636L,
+ Application = "system",
+ Code = "sys_app_mgr_list",
+ IsDeleted = false,
+ Name = "搴旂敤鍒楄〃",
+ OpenType = 0,
+ Permission = "sysApp:list",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914637L,
+ Application = "system",
+ Code = "sys_app_mgr_add",
+ IsDeleted = false,
+ Name = "搴旂敤澧炲姞",
+ OpenType = 0,
+ Permission = "sysApp:add",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914638L,
+ Application = "system",
+ Code = "sys_app_mgr_edit",
+ IsDeleted = false,
+ Name = "搴旂敤缂栬緫",
+ OpenType = 0,
+ Permission = "sysApp:edit",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914639L,
+ Application = "system",
+ Code = "sys_app_mgr_delete",
+ IsDeleted = false,
+ Name = "搴旂敤鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysApp:delete",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914640L,
+ Application = "system",
+ Code = "sys_app_mgr_detail",
+ IsDeleted = false,
+ Name = "搴旂敤璇︽儏",
+ OpenType = 0,
+ Permission = "sysApp:detail",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914641L,
+ Application = "system",
+ Code = "sys_app_mgr_set_as_default",
+ IsDeleted = false,
+ Name = "璁句负榛樿搴旂敤",
+ OpenType = 0,
+ Permission = "sysApp:setAsDefault",
+ Pid = 142307070914634L,
+ Pids = "[0],[142307070914633],[142307070914634],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914642L,
+ Application = "system",
+ Code = "sys_menu_mgr",
+ Component = "system/menu/index",
+ IsDeleted = false,
+ Name = "鑿滃崟绠$悊",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/menu",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914643L,
+ Application = "system",
+ Code = "sys_menu_mgr_list",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒楄〃",
+ OpenType = 0,
+ Permission = "sysMenu:list",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914644L,
+ Application = "system",
+ Code = "sys_menu_mgr_add",
+ IsDeleted = false,
+ Name = "鑿滃崟澧炲姞",
+ OpenType = 0,
+ Permission = "sysMenu:add",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914645L,
+ Application = "system",
+ Code = "sys_menu_mgr_edit",
+ IsDeleted = false,
+ Name = "鑿滃崟缂栬緫",
+ OpenType = 0,
+ Permission = "sysMenu:edit",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914646L,
+ Application = "system",
+ Code = "sys_menu_mgr_delete",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysMenu:delete",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914647L,
+ Application = "system",
+ Code = "sys_menu_mgr_detail",
+ IsDeleted = false,
+ Name = "鑿滃崟璇︽儏",
+ OpenType = 0,
+ Permission = "sysMenu:detail",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914650L,
+ Application = "system",
+ Code = "sys_menu_mgr_change",
+ IsDeleted = false,
+ Name = "鑿滃崟鍒囨崲",
+ OpenType = 0,
+ Permission = "sysMenu:change",
+ Pid = 142307070914642L,
+ Pids = "[0],[142307070914633],[142307070914642],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 494834310545477L,
+ Application = "system",
+ Code = "sys_wmspdapower_mgr",
+ Component = "main/WmsPdaPower/index",
+ IsDeleted = false,
+ Name = "Pda鑿滃崟",
+ OpenType = 1,
+ Pid = 142307070914633L,
+ Pids = "[0],[142307070914633],",
+ Router = "/WmsPdaPower",
+ Sort = 101,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914662L,
+ Application = "system",
+ Code = "system_tools",
+ Component = "PageView",
+ Icon = "euro",
+ IsDeleted = false,
+ Name = "寮�鍙戠鐞�",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/tools",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914663L,
+ Application = "system",
+ Code = "system_tools_config",
+ Component = "system/config/index",
+ IsDeleted = false,
+ Name = "绯荤粺閰嶇疆",
+ OpenType = 1,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/config",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914664L,
+ Application = "system",
+ Code = "system_tools_config_page",
+ IsDeleted = false,
+ Name = "閰嶇疆鏌ヨ",
+ OpenType = 0,
+ Permission = "sysConfig:page",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914665L,
+ Application = "system",
+ Code = "system_tools_config_list",
+ IsDeleted = false,
+ Name = "閰嶇疆鍒楄〃",
+ OpenType = 0,
+ Permission = "sysConfig:list",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914666L,
+ Application = "system",
+ Code = "system_tools_config_add",
+ IsDeleted = false,
+ Name = "閰嶇疆澧炲姞",
+ OpenType = 0,
+ Permission = "sysConfig:add",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914667L,
+ Application = "system",
+ Code = "system_tools_config_edit",
+ IsDeleted = false,
+ Name = "閰嶇疆缂栬緫",
+ OpenType = 0,
+ Permission = "sysConfig:edit",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914668L,
+ Application = "system",
+ Code = "system_tools_config_delete",
+ IsDeleted = false,
+ Name = "閰嶇疆鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysConfig:delete",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914669L,
+ Application = "system",
+ Code = "system_tools_config_detail",
+ IsDeleted = false,
+ Name = "閰嶇疆璇︽儏",
+ OpenType = 0,
+ Permission = "sysConfig:detail",
+ Pid = 142307070914663L,
+ Pids = "[0],[142307070914662],[142307070914663],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914678L,
+ Application = "system",
+ Code = "sys_dict_mgr",
+ Component = "system/dict/index",
+ IsDeleted = false,
+ Name = "瀛楀吀绠$悊",
+ OpenType = 1,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/dict",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914679L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_page",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鏌ヨ",
+ OpenType = 0,
+ Permission = "sysDictType:page",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914680L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_list",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鍒楄〃",
+ OpenType = 0,
+ Permission = "sysDictType:list",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914681L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_add",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷澧炲姞",
+ OpenType = 0,
+ Permission = "sysDictType:add",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914682L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_delete",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysDictType:delete",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914683L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_edit",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷缂栬緫",
+ OpenType = 0,
+ Permission = "sysDictType:edit",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914684L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_detail",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷璇︽儏",
+ OpenType = 0,
+ Permission = "sysDictType:detail",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914685L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_drop_down",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷涓嬫媺",
+ OpenType = 0,
+ Permission = "sysDictType:dropDown",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914686L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_type_change_status",
+ IsDeleted = false,
+ Name = "瀛楀吀绫诲瀷淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysDictType:changeStatus",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070914687L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_page",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊兼煡璇�",
+ OpenType = 0,
+ Permission = "sysDictData:page",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918725L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_list",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎垪琛�",
+ OpenType = 0,
+ Permission = "sysDictData:list",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918726L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_add",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎鍔�",
+ OpenType = 0,
+ Permission = "sysDictData:add",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918727L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_delete",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊煎垹闄�",
+ OpenType = 0,
+ Permission = "sysDictData:delete",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918728L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_edit",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊肩紪杈�",
+ OpenType = 0,
+ Permission = "sysDictData:edit",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918729L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_detail",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊艰鎯�",
+ OpenType = 0,
+ Permission = "sysDictData:detail",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918730L,
+ Application = "system",
+ Code = "sys_dict_mgr_dict_change_status",
+ IsDeleted = false,
+ Name = "瀛楀吀鍊间慨鏀圭姸鎬�",
+ OpenType = 0,
+ Permission = "sysDictData:changeStatus",
+ Pid = 142307070914678L,
+ Pids = "[0],[142307070914662],[142307070914678],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918731L,
+ Application = "system",
+ Code = "sys_swagger_mgr",
+ Component = "Iframe",
+ IsDeleted = false,
+ Link = "http://localhost:6677/swagger/",
+ Name = "鎺ュ彛鏂囨。",
+ OpenType = 2,
+ Pid = 142307070914662L,
+ Pids = "[0],[142307070914662],",
+ Router = "/swagger",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918732L,
+ Application = "manage",
+ Code = "sys_log_mgr",
+ Component = "PageView",
+ Icon = "read",
+ IsDeleted = false,
+ Name = "鏃ュ織绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/log",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918733L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log",
+ Component = "system/log/vislog/index",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/vislog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918734L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log_page",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysVisLog:page",
+ Pid = 142307070918733L,
+ Pids = "[0],[142307070918732],[142307070918733],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918735L,
+ Application = "manage",
+ Code = "sys_log_mgr_vis_log_delete",
+ IsDeleted = false,
+ Name = "璁块棶鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysVisLog:delete",
+ Pid = 142307070918733L,
+ Pids = "[0],[142307070918732],[142307070918733],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918736L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log",
+ Component = "system/log/oplog/index",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/oplog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918737L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log_page",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOpLog:page",
+ Pid = 142307070918736L,
+ Pids = "[0],[142307070918732],[142307070918736],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918738L,
+ Application = "manage",
+ Code = "sys_log_mgr_op_log_delete",
+ IsDeleted = false,
+ Name = "鎿嶄綔鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysOpLog:delete",
+ Pid = 142307070918736L,
+ Pids = "[0],[142307070918732],[142307070918736],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911739L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log",
+ Component = "system/log/exlog/index",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織",
+ OpenType = 1,
+ Pid = 142307070918732L,
+ Pids = "[0],[142307070918732],",
+ Router = "/exlog",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911740L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log_page",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織鏌ヨ",
+ OpenType = 0,
+ Permission = "sysExLog:page",
+ Pid = 142307070911739L,
+ Pids = "[0],[142307070918732],[142307070911739],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070911741L,
+ Application = "manage",
+ Code = "sys_log_mgr_ex_log_delete",
+ IsDeleted = false,
+ Name = "寮傚父鏃ュ織娓呯┖",
+ OpenType = 0,
+ Permission = "sysExLog:delete",
+ Pid = 142307070911739L,
+ Pids = "[0],[142307070918732],[142307070911739],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918739L,
+ Application = "system",
+ Code = "sys_monitor_mgr",
+ Component = "PageView",
+ Icon = "deployment-unit",
+ IsDeleted = false,
+ Name = "绯荤粺鐩戞帶",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/monitor",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918740L,
+ Application = "system",
+ Code = "sys_monitor_mgr_machine_monitor",
+ Component = "system/machine/index",
+ IsDeleted = false,
+ Name = "鏈嶅姟鐩戞帶",
+ OpenType = 1,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/machine",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918741L,
+ Application = "system",
+ Code = "sys_monitor_mgr_machine_monitor_query",
+ IsDeleted = false,
+ Name = "鏈嶅姟鐩戞帶鏌ヨ",
+ OpenType = 0,
+ Permission = "sysMachine:query",
+ Pid = 142307070918740L,
+ Pids = "[0],[142307070918739],[142307070918740],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918742L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user",
+ Component = "system/onlineUser/index",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛",
+ OpenType = 1,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/onlineUser",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918743L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user_page",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛鏌ヨ",
+ OpenType = 0,
+ Permission = "sysOnlineUser:page",
+ Pid = 142307070918742L,
+ Pids = "[0],[142307070918739],[142307070918742],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918744L,
+ Application = "system",
+ Code = "sys_monitor_mgr_online_user_force_exist",
+ IsDeleted = false,
+ Name = "鍦ㄧ嚎鐢ㄦ埛寮洪��",
+ OpenType = 0,
+ Permission = "sysOnlineUser:forceExist",
+ Pid = 142307070918742L,
+ Pids = "[0],[142307070918739],[142307070918742],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918745L,
+ Application = "system",
+ Code = "sys_monitor_mgr_druid",
+ Component = "Iframe",
+ IsDeleted = false,
+ Link = "http://localhost:82/druid/login.html",
+ Name = "鏁版嵁鐩戞帶",
+ OpenType = 2,
+ Pid = 142307070918739L,
+ Pids = "[0],[142307070918739],",
+ Router = "/druid",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918746L,
+ Application = "manage",
+ Code = "sys_notice",
+ Component = "PageView",
+ Icon = "sound",
+ IsDeleted = false,
+ Name = "閫氱煡鍏憡",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/notice",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918747L,
+ Application = "manage",
+ Code = "sys_notice_mgr",
+ Component = "system/notice/index",
+ IsDeleted = false,
+ Name = "鍏憡绠$悊",
+ OpenType = 1,
+ Pid = 142307070918746L,
+ Pids = "[0],[142307070918746],",
+ Router = "/notice",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918748L,
+ Application = "manage",
+ Code = "sys_notice_mgr_page",
+ IsDeleted = false,
+ Name = "鍏憡鏌ヨ",
+ OpenType = 0,
+ Permission = "sysNotice:page",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918749L,
+ Application = "manage",
+ Code = "sys_notice_mgr_add",
+ IsDeleted = false,
+ Name = "鍏憡澧炲姞",
+ OpenType = 0,
+ Permission = "sysNotice:add",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918750L,
+ Application = "manage",
+ Code = "sys_notice_mgr_edit",
+ IsDeleted = false,
+ Name = "鍏憡缂栬緫",
+ OpenType = 0,
+ Permission = "sysNotice:edit",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918751L,
+ Application = "manage",
+ Code = "sys_notice_mgr_delete",
+ IsDeleted = false,
+ Name = "鍏憡鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysNotice:delete",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918752L,
+ Application = "manage",
+ Code = "sys_notice_mgr_detail",
+ IsDeleted = false,
+ Name = "鍏憡鏌ョ湅",
+ OpenType = 0,
+ Permission = "sysNotice:detail",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918753L,
+ Application = "manage",
+ Code = "sys_notice_mgr_changeStatus",
+ IsDeleted = false,
+ Name = "鍏憡淇敼鐘舵��",
+ OpenType = 0,
+ Permission = "sysNotice:changeStatus",
+ Pid = 142307070918747L,
+ Pids = "[0],[142307070918746],[142307070918747],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918754L,
+ Application = "manage",
+ Code = "sys_notice_mgr_received",
+ Component = "system/noticeReceived/index",
+ IsDeleted = false,
+ Name = "宸叉敹鍏憡",
+ OpenType = 1,
+ Pid = 142307070918746L,
+ Pids = "[0],[142307070918746],",
+ Router = "/noticeReceived",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918755L,
+ Application = "manage",
+ Code = "sys_notice_mgr_received_page",
+ IsDeleted = false,
+ Name = "宸叉敹鍏憡鏌ヨ",
+ OpenType = 0,
+ Permission = "sysNotice:received",
+ Pid = 142307070918754L,
+ Pids = "[0],[142307070918746],[142307070918754],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918756L,
+ Application = "manage",
+ Code = "sys_file_mgr",
+ Component = "PageView",
+ Icon = "file",
+ IsDeleted = false,
+ Name = "鏂囦欢绠$悊",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/file",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918757L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file",
+ Component = "system/file/index",
+ IsDeleted = false,
+ Name = "绯荤粺鏂囦欢",
+ OpenType = 1,
+ Pid = 142307070918756L,
+ Pids = "[0],[142307070918756],",
+ Router = "/file",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918758L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_page",
+ IsDeleted = false,
+ Name = "鏂囦欢鏌ヨ",
+ OpenType = 0,
+ Permission = "sysFileInfo:page",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918759L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_list",
+ IsDeleted = false,
+ Name = "鏂囦欢鍒楄〃",
+ OpenType = 0,
+ Permission = "sysFileInfo:list",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918760L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_delete",
+ IsDeleted = false,
+ Name = "鏂囦欢鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysFileInfo:delete",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918761L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_detail",
+ IsDeleted = false,
+ Name = "鏂囦欢璇︽儏",
+ OpenType = 0,
+ Permission = "sysFileInfo:detail",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918762L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload",
+ IsDeleted = false,
+ Name = "鏂囦欢涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:upload",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918763L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_download",
+ IsDeleted = false,
+ Name = "鏂囦欢涓嬭浇",
+ OpenType = 0,
+ Permission = "sysFileInfo:download",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918764L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_preview",
+ IsDeleted = false,
+ Name = "鍥剧墖棰勮",
+ OpenType = 0,
+ Permission = "sysFileInfo:preview",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922874L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_avatar",
+ IsDeleted = false,
+ Name = "澶村儚涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadAvatar",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922875L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_document",
+ IsDeleted = false,
+ Name = "鏂囨。涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadDocument",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922876L,
+ Application = "manage",
+ Code = "sys_file_mgr_sys_file_upload_shop",
+ IsDeleted = false,
+ Name = "鍟嗗煄涓婁紶",
+ OpenType = 0,
+ Permission = "sysFileInfo:uploadShop",
+ Pid = 142307070918757L,
+ Pids = "[0],[142307070918756],[142307070918757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918765L,
+ Application = "system",
+ Code = "sys_timers",
+ Component = "PageView",
+ Icon = "dashboard",
+ IsDeleted = false,
+ Name = "浠诲姟璋冨害",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/timers",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918766L,
+ Application = "system",
+ Code = "sys_timers_mgr",
+ Component = "system/timers/index",
+ IsDeleted = false,
+ Name = "浠诲姟绠$悊",
+ OpenType = 1,
+ Pid = 142307070918765L,
+ Pids = "[0],[142307070918765],",
+ Router = "/timers",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918767L,
+ Application = "system",
+ Code = "sys_timers_mgr_page",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鏌ヨ",
+ OpenType = 0,
+ Permission = "sysTimers:page",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918768L,
+ Application = "system",
+ Code = "sys_timers_mgr_list",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍒楄〃",
+ OpenType = 0,
+ Permission = "sysTimers:list",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918769L,
+ Application = "system",
+ Code = "sys_timers_mgr_detail",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟璇︽儏",
+ OpenType = 0,
+ Permission = "sysTimers:detail",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918770L,
+ Application = "system",
+ Code = "sys_timers_mgr_add",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟澧炲姞",
+ OpenType = 0,
+ Permission = "sysTimers:add",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918771L,
+ Application = "system",
+ Code = "sys_timers_mgr_delete",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍒犻櫎",
+ OpenType = 0,
+ Permission = "sysTimers:delete",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918772L,
+ Application = "system",
+ Code = "sys_timers_mgr_edit",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟缂栬緫",
+ OpenType = 0,
+ Permission = "sysTimers:edit",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918773L,
+ Application = "system",
+ Code = "sys_timers_mgr_get_action_classes",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍙墽琛屽垪琛�",
+ OpenType = 0,
+ Permission = "sysTimers:getActionClasses",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918774L,
+ Application = "system",
+ Code = "sys_timers_mgr_start",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍚姩",
+ OpenType = 0,
+ Permission = "sysTimers:start",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918775L,
+ Application = "system",
+ Code = "sys_timers_mgr_stop",
+ IsDeleted = false,
+ Name = "瀹氭椂浠诲姟鍏抽棴",
+ OpenType = 0,
+ Permission = "sysTimers:stop",
+ Pid = 142307070918766L,
+ Pids = "[0],[142307070918765],[142307070918766],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918776L,
+ Application = "system",
+ Code = "code_gen",
+ Component = "PageView",
+ Icon = "thunderbolt",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚",
+ OpenType = 0,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/codeGenerate",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918778L,
+ Application = "system",
+ Code = "low_code",
+ Component = "gen/lowCode/index",
+ IsDeleted = false,
+ Name = "琛ㄥ崟璁捐",
+ OpenType = 0,
+ Pid = 142307070918776L,
+ Pids = "[0],[142307070918776],",
+ Router = "/lowCode/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070918779L,
+ Application = "system",
+ Code = "code_gen_gen",
+ Component = "gen/codeGenerate/index",
+ IsDeleted = false,
+ Name = "浠g爜鐢熸垚",
+ OpenType = 0,
+ Pid = 142307070918776L,
+ Pids = "[0],[142307070918776],",
+ Router = "/codeGenerate/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 142307070922870L,
+ Application = "system",
+ Code = "form_design",
+ Component = "system/formDesign/index",
+ IsDeleted = false,
+ Name = "琛ㄥ崟璁捐",
+ OpenType = 0,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/index",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285599875018821L,
+ Application = "system",
+ Code = "sys_formDesign",
+ Component = "PageView",
+ Icon = "snippets",
+ IsDeleted = false,
+ Name = "琛ㄥ崟绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/formDesign",
+ Sort = 100,
+ Status = 0,
+ Type = 0,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285599875018823L,
+ Application = "system",
+ Code = "sys_formDesign_list",
+ Component = "system/formDesign/list",
+ IsDeleted = false,
+ Name = "琛ㄥ崟鍒楄〃",
+ OpenType = 1,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/list",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285635743518789L,
+ Application = "system",
+ Code = "sys_formDesign_edit",
+ Component = "system/formDesign/edit",
+ IsDeleted = false,
+ Name = "淇敼琛ㄥ崟",
+ OpenType = 1,
+ Pid = 285599875018821L,
+ Pids = "[0],[285599875018821],",
+ Router = "/formDesign/edit",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "N",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640475689029L,
+ Application = "system",
+ Code = "btn_formDesign_edit",
+ Component = "",
+ IsDeleted = false,
+ Name = "淇敼琛ㄥ崟",
+ OpenType = 0,
+ Permission = "formmanager:edit",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640599859269L,
+ Application = "system",
+ Code = "btn_formDesign_delete",
+ Component = "",
+ IsDeleted = false,
+ Name = "鍒犻櫎琛ㄥ崟",
+ OpenType = 0,
+ Permission = "formmanager:delete",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 285640740945989L,
+ Application = "system",
+ Code = "btn_formDesign_page",
+ Component = "",
+ IsDeleted = false,
+ Name = "琛ㄥ崟鍒楄〃",
+ OpenType = 0,
+ Permission = "formmanager:page",
+ Pid = 285599875018823L,
+ Pids = "[0],[285599875018821],[285599875018823],",
+ Router = "",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 1
+ },
+ new
+ {
+ Id = 355687925174341L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr",
+ Component = "main/WmsContainer/index",
+ Icon = "border",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmscontainer",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178437L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_page",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsContainer:page",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178438L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_detail",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsContainer:detail",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925178439L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_add",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsContainer:add",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925182533L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_delete",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsContainer:delete",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355687925182534L,
+ Application = "busiapp",
+ Code = "Maste_wmscontainer_mgr_edit",
+ IsDeleted = false,
+ Name = "鎵樼洏淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsContainer:edit",
+ Pid = 355687925174341L,
+ Pids = "[0],[355687924998213],[355687925174341],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792178757L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr",
+ Component = "main/WmsArea/index",
+ Icon = "appstore",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsarea",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792182853L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_page",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsArea:page",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792182854L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsArea:detail",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186949L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_add",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsArea:add",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186950L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsArea:delete",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355688792186951L,
+ Application = "busiapp",
+ Code = "Maste_wmsarea_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撳尯淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsArea:edit",
+ Pid = 355688792178757L,
+ Pids = "[0],[355688792162373],[355688792178757],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496985669L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr",
+ Component = "main/WmsPlace/index",
+ Icon = "table",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsplace",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496989765L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_page",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsPlace:page",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993861L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsPlace:detail",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993862L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_add",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsPlace:add",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993863L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsPlace:delete",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355689496993864L,
+ Application = "busiapp",
+ Code = "Maste_wmsplace_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撲綅淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsPlace:edit",
+ Pid = 355689496985669L,
+ Pids = "[0],[355689496977477],[355689496985669],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042511429L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr",
+ Component = "main/WmsMaterial/index",
+ Icon = "barcode",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsmaterial",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042515525L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_page",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsMaterial:page",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519621L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_detail",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "WmsMaterial:detail",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519622L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_add",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "WmsMaterial:add",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519623L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_delete",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsMaterial:delete",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690042519624L,
+ Application = "busiapp",
+ Code = "Maste_wmsmaterial_mgr_edit",
+ IsDeleted = false,
+ Name = "鐗╂枡淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "WmsMaterial:edit",
+ Pid = 355690042511429L,
+ Pids = "[0],[355690042499141],[355690042511429],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355690923847749L,
+ Application = "warejob",
+ Code = "BindEntrance",
+ Component = "main/BindEntrance/index",
+ Icon = "logout",
+ IsDeleted = false,
+ Name = "缁勭洏鍏ュ簱",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/BindEntrance",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355691450822725L,
+ Application = "warejob",
+ Code = "ExWarehouse",
+ Component = "main/ExWarehouse/index",
+ Icon = "login",
+ IsDeleted = false,
+ Name = "鍑哄簱绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/ExWarehouse",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355691891650629L,
+ Application = "warejob",
+ Code = "WmsTask",
+ Component = "main/WmsTask/index",
+ Icon = "hourglass",
+ IsDeleted = false,
+ Name = "浠诲姟绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/WmsTask",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355692253458501L,
+ Application = "warecount",
+ Code = "LocationView",
+ Component = "main/LocationView/index",
+ Icon = "hdd",
+ IsDeleted = false,
+ Name = "搴撲綅瑙嗗浘",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/LocationView",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 355692487622725L,
+ Application = "warecount",
+ Code = "View_AccessDetails",
+ Component = "main/View_AccessDetails/index",
+ Icon = "laptop",
+ IsDeleted = false,
+ Name = "鍑哄叆搴撹褰�",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/View_AccessDetails",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310358700101L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr",
+ Component = "main/LesProductionline/index",
+ Icon = "gateway",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lesproductionline",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359138373L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_page",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "LesProductionline:page",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359146565L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_detail",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "LesProductionline:detail",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359146566L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_add",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "LesProductionline:add",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359150661L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_delete",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesProductionline:delete",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383310359154757L,
+ Application = "busiapp",
+ Code = "Maste_lesproductionline_mgr_edit",
+ IsDeleted = false,
+ Name = "浜х嚎淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "LesProductionlinel:edit",
+ Pid = 383310358700101L,
+ Pids = "[0],[383310357848133],[383310358700101],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866703941L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr",
+ Component = "main/LesStation/index",
+ Icon = "team",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lesstation",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866744901L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_page",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅鏌ヨ",
+ OpenType = 0,
+ Permission = "LesStation:page",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866748997L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_detail",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅璇︽儏",
+ OpenType = 0,
+ Permission = "LesStation:detail",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753093L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_add",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅澧炲姞",
+ OpenType = 0,
+ Permission = "LesStation:add",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753094L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_delete",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesStation:delete",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383311866753095L,
+ Application = "busiapp",
+ Code = "Maste_lesstation_mgr_edit",
+ IsDeleted = false,
+ Name = "宸ヤ綅淇℃伅缂栬緫",
+ OpenType = 0,
+ Permission = "LesStation:edit",
+ Pid = 383311866703941L,
+ Pids = "[0],[383311866441797],[383311866703941],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166334533L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr",
+ Component = "main/LesTakematerials/index",
+ Icon = "deployment-unit",
+ IsDeleted = false,
+ Name = "鍙枡绠$悊",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/lestakematerials",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166449221L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_page",
+ IsDeleted = false,
+ Name = "鍙枡鏌ヨ",
+ OpenType = 0,
+ Permission = "LesTakematerials:page",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166457413L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_detail",
+ IsDeleted = false,
+ Name = "鍙枡璇︽儏",
+ OpenType = 0,
+ Permission = "LesTakematerials:detail",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461509L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_add",
+ IsDeleted = false,
+ Name = "鍙枡澧炲姞",
+ OpenType = 0,
+ Permission = "LesTakematerials:add",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461510L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_delete",
+ IsDeleted = false,
+ Name = "鍙枡鍒犻櫎",
+ OpenType = 0,
+ Permission = "LesTakematerials:delete",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 383328166461511L,
+ Application = "xbjl",
+ Code = "Maste_lestakematerials_mgr_edit",
+ IsDeleted = false,
+ Name = "鍙枡缂栬緫",
+ OpenType = 0,
+ Permission = "LesTakematerials:edit",
+ Pid = 383328166334533L,
+ Pids = "[0],[383328165556293],[383328166334533],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902500933L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr",
+ Component = "main/WmsMaterialStock/index",
+ Icon = "vertical-left",
+ IsDeleted = false,
+ Name = "搴撳瓨淇℃伅",
+ OpenType = 1,
+ Pid = 0L,
+ Pids = "[0],",
+ Router = "/wmsmaterialstock",
+ Sort = 100,
+ Status = 0,
+ Type = 1,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902545989L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_page",
+ IsDeleted = false,
+ Name = "搴撳瓨鏌ヨ",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:page",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902550085L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_detail",
+ IsDeleted = false,
+ Name = "搴撳瓨璇︽儏",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:detail",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902554181L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_add",
+ IsDeleted = false,
+ Name = "搴撳瓨澧炲姞",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:add",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902558277L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_delete",
+ IsDeleted = false,
+ Name = "搴撳瓨鍒犻櫎",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:delete",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ },
+ new
+ {
+ Id = 386851902558278L,
+ Application = "warecount",
+ Code = "Maste_wmsmaterialstock_mgr_edit",
+ IsDeleted = false,
+ Name = "搴撳瓨缂栬緫",
+ OpenType = 0,
+ Permission = "WmsMaterialStock:edit",
+ Pid = 386851902500933L,
+ Pids = "[0],[386851902124101],[386851902500933],",
+ Sort = 100,
+ Status = 0,
+ Type = 2,
+ Visible = "Y",
+ Weight = 2
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysNotice", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CancelTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鎾ゅ洖鏃堕棿");
+
+ b.Property<string>("Content")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍐呭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("PublicOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鍙戝竷鏈烘瀯Id");
+
+ b.Property<string>("PublicOrgName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍙戝竷鏈烘瀯鍚嶇О");
+
+ b.Property<DateTimeOffset?>("PublicTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍙戝竷鏃堕棿");
+
+ b.Property<long>("PublicUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍙戝竷浜篒d");
+
+ b.Property<string>("PublicUserName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍙戝竷浜哄鍚�");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("Title")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏍囬");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_notice");
+
+ b.HasComment("閫氱煡鍏憡琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysNoticeUser", b =>
+ {
+ b.Property<long>("NoticeId")
+ .HasColumnType("bigint")
+ .HasComment("閫氱煡鍏憡Id");
+
+ b.Property<long>("UserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<int>("ReadStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("ReadTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("闃呰鏃堕棿");
+
+ b.HasKey("NoticeId", "UserId");
+
+ b.ToTable("sys_notice_user");
+
+ b.HasComment("閫氱煡鍏憡鐢ㄦ埛琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<string>("Contacts")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鑱旂郴浜�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("OrgType")
+ .HasColumnType("nvarchar(max)");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<string>("Tel")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢佃瘽");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_org");
+
+ b.HasComment("缁勭粐鏈烘瀯琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910539L,
+ Code = "wbgf",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃",
+ Pid = 0L,
+ Pids = "[0],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910540L,
+ Code = "wbgf_sh",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃(涓婃捣)",
+ Pid = 142307070910539L,
+ Pids = "[0],[142307070910539],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-涓婃捣",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910541L,
+ Code = "wbgf_cq",
+ IsDeleted = false,
+ Name = "浼熸湰鑲′唤鏈夐檺鍏徃(閲嶅簡)",
+ Pid = 142307070910539L,
+ Pids = "[0],[142307070910539],",
+ Remark = "浼熸湰鑲′唤鏈夐檺鍏徃-閲嶅簡",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910542L,
+ Code = "wbgf_sh_yfb",
+ IsDeleted = false,
+ Name = "鐮斿彂閮�",
+ Pid = 142307070910540L,
+ Pids = "[0],[142307070910539],[142307070910540],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910543L,
+ Code = "wbgf_sh_qhb",
+ IsDeleted = false,
+ Name = "浼佸垝閮�",
+ Pid = 142307070910540L,
+ Pids = "[0],[142307070910539],[142307070910540],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910544L,
+ Code = "wbgf_cq_scb",
+ IsDeleted = false,
+ Name = "甯傚満閮�",
+ Pid = 142307070910541L,
+ Pids = "[0],[142307070910539],[142307070910541],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910545L,
+ Code = "wbgf_cq_cwb",
+ IsDeleted = false,
+ Name = "璐㈠姟閮�",
+ Pid = 142307070910541L,
+ Pids = "[0],[142307070910539],[142307070910541],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910546L,
+ Code = "wbgf_cq_scb",
+ IsDeleted = false,
+ Name = "甯傚満閮ㄤ簩閮�",
+ Pid = 142307070910544L,
+ Pids = "[0],[142307070910539],[142307070910541],[142307070910544],",
+ Remark = "",
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_pos");
+
+ b.HasComment("鑱屼綅琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910547L,
+ Code = "zjl",
+ IsDeleted = false,
+ Name = "鎬荤粡鐞�",
+ Remark = "鎬荤粡鐞�",
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910548L,
+ Code = "fzjl",
+ IsDeleted = false,
+ Name = "鍓�荤粡鐞�",
+ Remark = "鍓�荤粡鐞�",
+ Sort = 101,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910549L,
+ Code = "bmjl",
+ IsDeleted = false,
+ Name = "閮ㄩ棬缁忕悊",
+ Remark = "閮ㄩ棬缁忕悊",
+ Sort = 102,
+ Status = 0
+ },
+ new
+ {
+ Id = 142307070910550L,
+ Code = "gzry",
+ IsDeleted = false,
+ Name = "宸ヤ綔浜哄憳",
+ Remark = "宸ヤ綔浜哄憳",
+ Sort = 103,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DataScopeType")
+ .HasColumnType("int")
+ .HasComment("鏁版嵁鑼冨洿绫诲瀷");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("RoleType")
+ .HasColumnType("int")
+ .HasComment("瑙掕壊绫诲瀷-闆嗗洟瑙掕壊_0銆佸姞鐩熷晢瑙掕壊_1銆侀棬搴楄鑹瞋2");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_role");
+
+ b.HasComment("瑙掕壊琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910554L,
+ Code = "sys_manager_role",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊鍛�",
+ Remark = "绯荤粺绠$悊鍛�",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 356094617575493L,
+ Code = "admin",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "绠$悊鍛�",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 358509609758789L,
+ Code = "ware",
+ DataScopeType = 1,
+ IsDeleted = false,
+ Name = "浠撳簱鐢ㄦ埛",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ },
+ new
+ {
+ Id = 358536344862789L,
+ Code = "iWare",
+ DataScopeType = 5,
+ IsDeleted = false,
+ Name = "鐮斿彂鐢ㄦ埛",
+ Remark = "",
+ RoleType = 0,
+ Sort = 100,
+ Status = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.HasKey("SysRoleId", "SysOrgId");
+
+ b.HasIndex("SysOrgId");
+
+ b.ToTable("sys_role_data_scope");
+
+ b.HasComment("瑙掕壊鏁版嵁鑼冨洿琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+ {
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.Property<long>("SysMenuId")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟Id");
+
+ b.HasKey("SysRoleId", "SysMenuId");
+
+ b.HasIndex("SysMenuId");
+
+ b.ToTable("sys_role_menu");
+
+ b.HasComment("瑙掕壊鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysTimer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Cron")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("Cron琛ㄨ揪寮�");
+
+ b.Property<bool>("DoOnce")
+ .HasColumnType("bit")
+ .HasComment("鍙墽琛屼竴娆�");
+
+ b.Property<int>("ExecuteType")
+ .HasColumnType("int")
+ .HasComment("鎵ц绫诲瀷");
+
+ b.Property<string>("Headers")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("Headers");
+
+ b.Property<int?>("Interval")
+ .HasColumnType("int")
+ .HasComment("闂撮殧鏃堕棿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("JobName")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浠诲姟鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<string>("RequestParameters")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("璇锋眰鍙傛暟");
+
+ b.Property<int>("RequestType")
+ .HasColumnType("int")
+ .HasComment("璇锋眰绫诲瀷");
+
+ b.Property<string>("RequestUrl")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("璇锋眰url");
+
+ b.Property<bool>("StartNow")
+ .HasColumnType("bit")
+ .HasComment("绔嬪嵆鎵ц");
+
+ b.Property<int>("TimerType")
+ .HasColumnType("int")
+ .HasComment("瀹氭椂鍣ㄧ被鍨�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_timer");
+
+ b.HasComment("瀹氭椂浠诲姟琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910556L,
+ DoOnce = false,
+ ExecuteType = 1,
+ Interval = 5,
+ IsDeleted = false,
+ JobName = "鐧惧害api",
+ Remark = "鎺ュ彛API",
+ RequestType = 2,
+ RequestUrl = "https://www.baidu.com",
+ StartNow = false,
+ TimerType = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Account")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璐﹀彿");
+
+ b.Property<int>("AdminType")
+ .HasColumnType("int")
+ .HasComment("绠$悊鍛樼被鍨�-瓒呯骇绠$悊鍛榑1銆佺鐞嗗憳_2銆佹櫘閫氳处鍙穇3");
+
+ b.Property<string>("Avatar")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("澶村儚");
+
+ b.Property<DateTimeOffset?>("Birthday")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鐢熸棩");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Email")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("閭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("LastLoginIp")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏈�鍚庣櫥褰旾P");
+
+ b.Property<DateTimeOffset?>("LastLoginTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏈�鍚庣櫥褰曟椂闂�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("濮撳悕");
+
+ b.Property<string>("NickName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鏄电О");
+
+ b.Property<string>("Password")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀵嗙爜");
+
+ b.Property<string>("Phone")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鎵嬫満");
+
+ b.Property<long>("ProductionlineId")
+ .HasColumnType("bigint");
+
+ b.Property<int>("Sex")
+ .HasColumnType("int")
+ .HasComment("鎬у埆-鐢穇1銆佸コ_2");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��-姝e父_0銆佸仠鐢╛1銆佸垹闄2");
+
+ b.Property<string>("Tel")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢佃瘽");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_user");
+
+ b.HasComment("鐢ㄦ埛琛�");
+
+ b.HasData(
+ new
+ {
+ Id = 142307070910551L,
+ Account = "superAdmin",
+ AdminType = 1,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "瓒呯骇绠$悊鍛�",
+ NickName = "superAdmin",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "18020030720",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 142307070910552L,
+ Account = "admin",
+ AdminType = 2,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "绯荤粺绠$悊鍛�",
+ NickName = "admin",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "18020030720",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 358533464608837L,
+ Account = "warehouse",
+ AdminType = 3,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "浠撳簱鐢ㄦ埛",
+ NickName = "warehouse",
+ Password = "e10adc3949ba59abbe56e057f20f883e",
+ Phone = "13869156666",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ },
+ new
+ {
+ Id = 358536045723717L,
+ Account = "admin1",
+ AdminType = 3,
+ Birthday = new DateTimeOffset(new DateTime(1986, 7, 26, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)),
+ IsDeleted = false,
+ Name = "鐮斿彂閮�",
+ NickName = "admin1",
+ Password = "f379eaf3c831b04de153469d1bec345e",
+ Phone = "13869156666",
+ ProductionlineId = 0L,
+ Sex = 1,
+ Status = 0,
+ WorkShopType = 0
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+ {
+ b.Property<long>("SysUserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<long>("SysOrgId")
+ .HasColumnType("bigint")
+ .HasComment("鏈烘瀯Id");
+
+ b.HasKey("SysUserId", "SysOrgId");
+
+ b.HasIndex("SysOrgId");
+
+ b.ToTable("sys_user_data_scope");
+
+ b.HasComment("鐢ㄦ埛鏁版嵁鑼冨洿琛�");
+
+ b.HasData(
+ new
+ {
+ SysUserId = 142307070910551L,
+ SysOrgId = 142307070910540L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+ {
+ b.Property<long>("SysUserId")
+ .HasColumnType("bigint")
+ .HasComment("鐢ㄦ埛Id");
+
+ b.Property<long>("SysRoleId")
+ .HasColumnType("bigint")
+ .HasComment("瑙掕壊Id");
+
+ b.HasKey("SysUserId", "SysRoleId");
+
+ b.HasIndex("SysRoleId");
+
+ b.ToTable("sys_user_role");
+
+ b.HasComment("鐢ㄦ埛瑙掕壊琛�");
+
+ b.HasData(
+ new
+ {
+ SysUserId = 142307070910552L,
+ SysRoleId = 142307070910554L
+ });
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent2", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<decimal>("HasMoney")
+ .HasColumnType("decimal(10,3)")
+ .HasColumnName("HasMoney")
+ .HasComment("闆惰姳閽�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students2");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.TestStudent3", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Age")
+ .HasColumnType("int")
+ .HasComment("瀛︾敓骞撮緞");
+
+ b.Property<DateTime>("BrithDate")
+ .HasColumnType("datetime2")
+ .HasComment("鍑虹敓鏃ユ湡");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("Gender")
+ .HasColumnType("int")
+ .HasComment("鎬у埆");
+
+ b.Property<decimal>("HasMoney")
+ .HasColumnType("decimal(10,3)")
+ .HasColumnName("HasMoney")
+ .HasComment("闆惰姳閽�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .HasMaxLength(10)
+ .HasColumnType("nvarchar(10)")
+ .HasComment("瀛︾敓濮撳悕");
+
+ b.Property<bool>("StartName")
+ .HasMaxLength(50)
+ .HasColumnType("bit")
+ .HasComment("鏄惁鍦ㄦ牎");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("test_students3");
+
+ b.HasComment("瀛︾敓淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AreaDesc")
+ .HasMaxLength(250)
+ .HasColumnType("nvarchar(250)")
+ .HasComment("鎻忚堪");
+
+ b.Property<string>("AreaName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍚嶇О");
+
+ b.Property<int>("AreaStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<int>("AreaType")
+ .HasColumnType("int")
+ .HasComment("鍒嗙被");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsSteel")
+ .HasColumnType("bit")
+ .HasComment("鏄惁涓洪挗骞冲彴");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_area");
+
+ b.HasComment("搴撳尯琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AssetNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧勪骇缂栧彿");
+
+ b.Property<int>("ContainerCategory")
+ .HasColumnType("int")
+ .HasComment("鎵樼洏鍒嗙被");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栧彿");
+
+ b.Property<int>("ContainerStatus")
+ .HasColumnType("int")
+ .HasComment("鎵樼洏鐘舵��");
+
+ b.Property<int>("ContainerType")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("ErpNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("Erp鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("IsVirtually")
+ .HasColumnType("int")
+ .HasComment("鏄惁铏氭嫙");
+
+ b.Property<decimal>("LimitHeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愰珮");
+
+ b.Property<decimal>("LimitLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愰暱");
+
+ b.Property<decimal>("LimitWidth")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闄愬");
+
+ b.Property<decimal>("MaxWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("杞介噸涓婇檺");
+
+ b.Property<long>("ParentContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鐖舵墭鐩業d");
+
+ b.Property<decimal>("SpecHeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("楂樺害");
+
+ b.Property<decimal>("SpecLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闀垮害");
+
+ b.Property<decimal>("SpecWidth")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹藉害");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_container");
+
+ b.HasComment("鎵樼洏淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsContainerPlace", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<int>("ContainerPlaceStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<long>("PlaceId")
+ .HasColumnType("bigint")
+ .HasComment("搴撲綅Id");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_containerplace");
+
+ b.HasComment("鎵樼洏搴撲綅鍏崇郴琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Creator")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒涘缓浜�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_dumporder");
+
+ b.HasComment("杞偍鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("闀垮害");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("搴撳瓨椤圭洰缂栫爜");
+
+ b.Property<string>("Projectcode_To")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂板簱瀛橀」鐩紪鐮�");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_dumporder_details");
+
+ b.HasComment("杞偍鍗曟槑缁�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("GoodsReturnStatus")
+ .HasColumnType("int")
+ .HasComment("閫�璐х姸鎬�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_goodsreturnorder");
+
+ b.HasComment("閫�璐у崟");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_WMS")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎵规鍙�");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("閫�璐х姸鎬�");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_goodsreturnorder_details");
+
+ b.HasComment("閫�璐у崟鎹槑缁嗚〃");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("BindQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("缁勭洏鏁伴噺");
+
+ b.Property<int>("BindStatus")
+ .HasColumnType("int")
+ .HasComment("缁勭洏鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<long>("MaterialId")
+ .HasColumnType("bigint")
+ .HasComment("鐗╂枡Id");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍗曞彿");
+
+ b.Property<decimal>("SampleQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶芥鏁伴噺");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaterialId");
+
+ b.ToTable("wms_history_materialcontainer");
+
+ b.HasComment("鐗╂枡鎵樼洏鍘嗗彶琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AreaIds")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("搴撳尯Ids");
+
+ b.Property<string>("AreaNameParameter")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("搴撳尯鍙傛暟");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Description")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("鎻忚堪");
+
+ b.Property<int>("InspectionMethod")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡妫�楠�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<int>("MaterialType")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡绫诲埆");
+
+ b.Property<string>("MaterialUnit")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍗曚綅");
+
+ b.Property<decimal>("MaxImumqty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶у瓨閲�");
+
+ b.Property<decimal>("MaxstorageAge")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶у簱榫�");
+
+ b.Property<decimal>("MinstorageAge")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�灏忓簱榫�");
+
+ b.Property<decimal>("Safeqty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹夊叏瀛橀噺");
+
+ b.Property<string>("StationIds")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("宸ヤ綔鍖篒ds");
+
+ b.Property<string>("StationNameParameter")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("宸ヤ綔鍖哄弬鏁�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_material");
+
+ b.HasComment("鐗╂枡淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("BindQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("缁勭洏鏁伴噺");
+
+ b.Property<int>("BindStatus")
+ .HasColumnType("int")
+ .HasComment("缁勭洏鐘舵��");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<long>("MaterialId")
+ .HasColumnType("bigint")
+ .HasComment("鐗╂枡Id");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<long>("OrderDetailsId")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁鏄庣粏Id");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍗曞彿");
+
+ b.Property<decimal>("SampleQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶芥鏁伴噺");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<long?>("WmsContainerId")
+ .HasColumnType("bigint");
+
+ b.HasKey("Id");
+
+ b.HasIndex("MaterialId");
+
+ b.HasIndex("WmsContainerId");
+
+ b.ToTable("wms_materialcontainer");
+
+ b.HasComment("鐗╂枡鎵樼洏鍏崇郴琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialStock", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("搴撳尯Id");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<long>("ContainerId")
+ .HasColumnType("bigint")
+ .HasComment("鎵樼洏Id");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("High")
+ .HasColumnType("int")
+ .HasComment("楂�");
+
+ b.Property<int>("InspectionMethod")
+ .HasColumnType("int")
+ .HasComment("妫�楠屾柟寮�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("Long")
+ .HasColumnType("int")
+ .HasComment("闀�");
+
+ b.Property<string>("MaterialBatch")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鎵规");
+
+ b.Property<string>("MaterialDensity")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瀵嗗害");
+
+ b.Property<string>("MaterialName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<string>("MaterialNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("MaterialSpec")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐗╂枡瑙勬牸");
+
+ b.Property<int>("MaterialType")
+ .HasColumnType("int")
+ .HasComment("鐗╂枡绫诲埆");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("QuantityOfBill")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("璐﹂潰鏁伴噺");
+
+ b.Property<int>("Source")
+ .HasColumnType("int")
+ .HasComment("鍏ュ簱鏉ユ簮");
+
+ b.Property<decimal>("StockNumber")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹炵墿搴撳瓨鏁�");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<int>("UnitNo")
+ .HasColumnType("int")
+ .HasComment("鍗曚綅缂栧彿");
+
+ b.Property<int>("UnitType")
+ .HasColumnType("int")
+ .HasComment("鍗曚綅绫诲埆");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("Wide")
+ .HasColumnType("int")
+ .HasComment("瀹�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_materialstock");
+
+ b.HasComment("搴撳瓨琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMerchantinfo", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MerchantAddress")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鍦板潃");
+
+ b.Property<string>("MerchantAttribute")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢灞炴��");
+
+ b.Property<string>("MerchantContact")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鑱旂郴浜�");
+
+ b.Property<string>("MerchantEmail")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢閭");
+
+ b.Property<string>("MerchantFax")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢浼犵湡");
+
+ b.Property<int>("MerchantGrade")
+ .HasColumnType("int")
+ .HasComment("瀹㈠晢绛夌骇");
+
+ b.Property<string>("MerchantName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鍚嶇О");
+
+ b.Property<string>("MerchantNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢缂栧彿");
+
+ b.Property<string>("MerchantPhone")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢鐢佃瘽");
+
+ b.Property<string>("MerchantShort")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢绠�绉�");
+
+ b.Property<string>("MerchantTmt")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹㈠晢琛屼笟");
+
+ b.Property<int>("MerchantType")
+ .HasColumnType("int")
+ .HasComment("瀹㈠晢鍒嗙被");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_merchantinfo");
+
+ b.HasComment("瀹㈠晢淇℃伅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Majorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("涓撲笟");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<string>("SourceBillNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<int>("TradeMode")
+ .HasColumnType("int")
+ .HasComment("璐告槗鏂瑰紡");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_order");
+
+ b.HasComment("鍗曟嵁琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<int>("InspectionResults")
+ .HasColumnType("int")
+ .HasComment("妫�楠岀粨鏋�");
+
+ b.Property<decimal>("InventoryQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍏ュ簱鏁伴噺");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("SpecialNeeds")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗规畩瑕佹眰");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_order_details");
+
+ b.HasComment("鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderType", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesWorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<long>("Pid")
+ .HasColumnType("bigint")
+ .HasComment("鐖禝d");
+
+ b.Property<string>("Pids")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鐖禝ds");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Sort")
+ .HasColumnType("int")
+ .HasComment("鎺掑簭");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_order_type");
+
+ b.HasComment("鍗曟嵁绫诲瀷缁存姢琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Clolor")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("棰滆壊");
+
+ b.Property<string>("Code")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Icon")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍥炬爣");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍚嶇О");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<int>("WorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_pdapower");
+
+ b.HasComment("PDA鑿滃崟琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AgvCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅瀵瑰簲AGV缂栫爜");
+
+ b.Property<int>("Aisle")
+ .HasColumnType("int")
+ .HasComment("宸烽亾");
+
+ b.Property<long>("AreaId")
+ .HasColumnType("bigint")
+ .HasComment("鎵�鍦ㄥ簱鍖�");
+
+ b.Property<int>("ColumnNo")
+ .HasColumnType("int")
+ .HasComment("鍒�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<int>("DeepcellNo")
+ .HasColumnType("int")
+ .HasComment("杩涙繁鍙�");
+
+ b.Property<int>("EmptyContainer")
+ .HasColumnType("int")
+ .HasComment("鏄惁绌烘墭");
+
+ b.Property<decimal>("Height")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅楂樺害");
+
+ b.Property<int>("HeightLevel")
+ .HasColumnType("int")
+ .HasComment("搴撲綅楂樺害灞炴��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("Islock")
+ .HasColumnType("int")
+ .HasComment("鏄惁閿佸畾");
+
+ b.Property<int>("LayerNo")
+ .HasColumnType("int")
+ .HasComment("灞�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅闀垮害");
+
+ b.Property<int>("Line")
+ .HasColumnType("int")
+ .HasComment("绾垮彿");
+
+ b.Property<int>("LogicalName")
+ .HasColumnType("int")
+ .HasComment("閫昏緫鍖哄煙");
+
+ b.Property<decimal>("MaxWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏈�澶ф壙閲�");
+
+ b.Property<string>("PlaceCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<int>("PlaceStatus")
+ .HasColumnType("int")
+ .HasComment("搴撲綅鐘舵��");
+
+ b.Property<string>("PositionnoForSrm")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍫嗗灈鏈哄唴閮ㄧ殑浣嶇疆");
+
+ b.Property<int>("Priority")
+ .HasColumnType("int")
+ .HasComment("浼樺厛绾�");
+
+ b.Property<int>("RowNo")
+ .HasColumnType("int")
+ .HasComment("鎺�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<decimal>("Width")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("搴撲綅瀹藉害");
+
+ b.Property<string>("Xzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅X鍧愭爣");
+
+ b.Property<string>("Yzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅Y鍧愭爣");
+
+ b.Property<string>("Zzb")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅Z鍧愭爣");
+
+ b.HasKey("Id");
+
+ b.HasIndex("AreaId");
+
+ b.ToTable("wms_place");
+
+ b.HasComment("搴撲綅琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃ユ湡");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃鍚嶇О");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DeclarationCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曞彿");
+
+ b.Property<int>("InspectionStatus")
+ .HasColumnType("int")
+ .HasComment("鎶ユ鐘舵��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Majorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("涓撲笟");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("鏀惰揣鐘舵��");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<string>("SourceBillNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("閫佽揣閫氱煡鍗曞彿");
+
+ b.Property<string>("StoreRoomname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撻棿");
+
+ b.Property<int>("TradeMode")
+ .HasColumnType("int")
+ .HasComment("璐告槗鏂瑰紡");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("Vendorcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗙紪鐮�");
+
+ b.Property<string>("Vendorname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("渚涘簲鍟嗗悕绉�");
+
+ b.Property<string>("WMSNO")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鏀惰揣鍗曞彿");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.Property<string>("WarehouseKeepername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撶鍛�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_receiptorder");
+
+ b.HasComment("鏀惰揣鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<string>("ContractCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍚堝悓缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("CustomsNum")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧鏁伴噺");
+
+ b.Property<decimal>("CustomsPrices")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎶ュ叧閲戦");
+
+ b.Property<string>("CustomsUnitName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍗曚綅");
+
+ b.Property<decimal>("DeliveryQty")
+ .HasMaxLength(50)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("閫佽揣鏁伴噺");
+
+ b.Property<int>("InspectionResultsEnum")
+ .HasColumnType("int")
+ .HasComment("鎶ユ缁撴灉");
+
+ b.Property<int>("InspectionStatus")
+ .HasColumnType("int")
+ .HasComment("鎶ユ鐘舵��");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("ItemNo")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧椤瑰彿");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<decimal>("Price")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嶅惈绋庡崟浠�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("ReceivedQty")
+ .HasMaxLength(50)
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏀惰揣鏁伴噺");
+
+ b.Property<int>("ReceivingStatus")
+ .HasColumnType("int")
+ .HasComment("鏀惰揣鐘舵��");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("SpecialNeeds")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗规畩瑕佹眰");
+
+ b.Property<decimal>("SumPrice")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鎴愭湰閲戦");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<decimal>("TheoreticalWeight")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鐞嗚閲嶉噺");
+
+ b.Property<string>("TradeName")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鎶ュ叧鍝佸悕");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_receiptorder_details");
+
+ b.HasComment("鏀惰揣鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsSortOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<decimal>("ActualQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("瀹為檯鍒嗘嫞鏁�");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("瀹瑰櫒缂栧彿");
+
+ b.Property<string>("ContainerOrderNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒嗘嫞缁勭洏鍗曞彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<long>("OrderDetailID")
+ .HasColumnType("bigint");
+
+ b.Property<string>("OrderNo")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鏉ユ簮鍗曞彿");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<string>("Remarks")
+ .HasMaxLength(500)
+ .HasColumnType("nvarchar(500)")
+ .HasComment("澶囨敞");
+
+ b.Property<decimal>("SortQuantity")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍒嗘嫞鏁�");
+
+ b.Property<int>("SortStatus")
+ .HasColumnType("int")
+ .HasComment("鐘舵��-鏈垎鎷1銆佸垎鎷e畬鎴恄2");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_sortorder");
+
+ b.HasComment("鍒嗘嫞琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("BenefitingDepartcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("閫�鏂欑敵璇锋棩鏈�");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<string>("ConstructionTeamID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂藉伐闃�");
+
+ b.Property<string>("CostCenterID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏀剁泭閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FI_Client_Analysis_H")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("瀹㈡埛");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("MoveType")
+ .HasColumnType("int")
+ .HasComment("浜嬪姟绫诲瀷");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("PickerID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗗彇浜�");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WBSElementcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗙敤椤圭洰鍙�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_stockreturn_order");
+
+ b.HasComment("閫�鏂欏叆搴撳崟");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<decimal>("Length")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<decimal>("Number")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("浠舵暟");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鏄庣粏鍞竴璇嗗埆鐮�");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_stockreturn_order_details");
+
+ b.HasComment("閫�鏂欏叆搴撳崟璇︽儏");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("BenefitingDepartcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("Billdate")
+ .HasColumnType("datetimeoffset")
+ .HasComment("棰嗘枡鍗曠敵璇锋棩鏈�");
+
+ b.Property<string>("Companyname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍏徃");
+
+ b.Property<string>("ConstructionTeamID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鏂藉伐闃�");
+
+ b.Property<string>("CostCenterID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍙楃泭閮ㄩ棬");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("FI_Client_Analysis_H")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("瀹㈡埛");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<long>("IsInnerCompany")
+ .HasColumnType("bigint")
+ .HasComment("鏄惁鍏徃闂翠氦鏄�");
+
+ b.Property<string>("MoveType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("浜嬪姟绫诲瀷");
+
+ b.Property<string>("NO")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍗曟嵁缂栧彿");
+
+ b.Property<long>("OrderLargeCategory")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁澶х被");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<long>("OrderSubclass")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁灏忕被");
+
+ b.Property<string>("PickerID")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗘枡浜�");
+
+ b.Property<long>("SOID")
+ .HasColumnType("bigint")
+ .HasComment("涓婁綅绯荤粺鍗曟嵁鍞竴璇嗗埆鐮�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<string>("WBSElementcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("棰嗙敤椤圭洰鍙�");
+
+ b.Property<string>("WarehouseCentername")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("浠撳偍涓績");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_takematerialorder");
+
+ b.HasComment("棰嗘枡鍗�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("Batchno_SCM")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("SCM鎵规鍙�");
+
+ b.Property<string>("Batchno_WMS")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("WMS鎵规鍙�");
+
+ b.Property<string>("ContainerCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<decimal>("DistributeQty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("涓嬪彂鏁伴噺");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("Materialcode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡缂栧彿");
+
+ b.Property<string>("Materialname")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鐗╂枡鍚嶇О");
+
+ b.Property<decimal>("Number")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("浠舵暟");
+
+ b.Property<long>("OID")
+ .HasColumnType("bigint")
+ .HasComment("SCM棰嗘枡鐢宠鍗曟槑缁嗚鍞竴鏍囪瘑");
+
+ b.Property<long>("OrderId")
+ .HasMaxLength(50)
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁Id");
+
+ b.Property<int>("OrderStatus")
+ .HasColumnType("int")
+ .HasComment("鍗曟嵁鐘舵��");
+
+ b.Property<string>("PartCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍒嗘鍙�");
+
+ b.Property<string>("PlaceCode")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撲綅缂栫爜");
+
+ b.Property<string>("ProjectCode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("椤圭洰缂栧彿");
+
+ b.Property<decimal>("Qty")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鏁伴噺");
+
+ b.Property<decimal>("SingleLength")
+ .HasColumnType("decimal(18,2)")
+ .HasComment("鍗曟牴闀垮害");
+
+ b.Property<string>("TACode")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("TA鍙�");
+
+ b.Property<string>("Unit")
+ .HasMaxLength(255)
+ .HasColumnType("nvarchar(255)")
+ .HasComment("鍩烘湰鍗曚綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrderId");
+
+ b.ToTable("wms_takematerial_orderdetail");
+
+ b.HasComment("鍗曟嵁鏄庣粏琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTask", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("Aisle")
+ .HasColumnType("int")
+ .HasComment("宸烽亾");
+
+ b.Property<string>("AreaName")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("搴撳尯鍚嶇О");
+
+ b.Property<string>("ContainerCode")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鎵樼洏缂栧彿");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("Description")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍏ュ簱鏉ユ簮");
+
+ b.Property<int>("DodeviceId")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鎵ц鍫嗗灈鏈篒d");
+
+ b.Property<string>("DodevicenodeId")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璁惧鎵ц鑺傜偣Id");
+
+ b.Property<int>("Dodevicetype")
+ .HasMaxLength(50)
+ .HasColumnType("int")
+ .HasComment("璁惧绫诲瀷");
+
+ b.Property<int>("EmptyContainer")
+ .HasColumnType("int")
+ .HasComment("鏄惁绌烘墭");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool>("IsRead")
+ .HasColumnType("bit")
+ .HasComment("WCS鏄惁鍙互璇诲彇");
+
+ b.Property<long>("OrderDetailsId")
+ .HasColumnType("bigint")
+ .HasComment("鍗曟嵁鏄庣粏Id");
+
+ b.Property<string>("OrderNo")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)")
+ .HasComment("缁勭洏璁板綍鍗曟嵁鍙�");
+
+ b.Property<int>("SendTimes")
+ .HasColumnType("int")
+ .HasComment("鍙戦�佹鏁�");
+
+ b.Property<string>("SourcePlace")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("璧峰搴撲綅");
+
+ b.Property<int>("TaskDodeviceStatus")
+ .HasColumnType("int")
+ .HasComment("浠诲姟璁惧鐘舵��");
+
+ b.Property<int>("TaskLevel")
+ .HasColumnType("int")
+ .HasComment("浠诲姟绾у埆");
+
+ b.Property<int>("TaskModel")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鏂瑰紡");
+
+ b.Property<string>("TaskNo")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("浠诲姟鍙�");
+
+ b.Property<int>("TaskStatus")
+ .HasColumnType("int")
+ .HasComment("浠诲姟鐘舵��");
+
+ b.Property<int>("TaskType")
+ .HasColumnType("int")
+ .HasComment("浠诲姟绫诲瀷");
+
+ b.Property<string>("ToPlace")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鐩爣搴撲綅");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_task");
+
+ b.HasComment("浠诲姟绠$悊琛�");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsWarehouseEntrance", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<int>("AffiliatedRoadway")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炲贩閬�");
+
+ b.Property<string>("Code")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("缂栫爜");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<int>("LesWorkShopType")
+ .HasColumnType("int")
+ .HasComment("鎵�灞炶溅闂�");
+
+ b.Property<string>("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍚嶇О");
+
+ b.Property<string>("Remark")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("澶囨敞");
+
+ b.Property<int>("Status")
+ .HasColumnType("int")
+ .HasComment("鐘舵��");
+
+ b.Property<int>("Type")
+ .HasColumnType("int")
+ .HasComment("绫诲瀷-1.鍏ュ簱鍙2.鍑哄簱鍙�");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("wms_warehouse_entrance");
+
+ b.HasComment("搴撳彛琛�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FormDesign")
+ .HasColumnType("text")
+ .HasComment("鍔ㄦ�佽〃鍗�");
+
+ b.Property<int>("FormDesignType")
+ .HasColumnType("int")
+ .HasComment("鍔ㄦ�佽〃鍗曠被鍨�");
+
+ b.Property<string>("GenerateType")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("鐢熸垚鏂瑰紡");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("ModuleName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("妯″潡鍚�,鐢ㄤ簬鐢熸垚鐨勬枃浠跺す鐩綍");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_low_code_module");
+
+ b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+ {
+ b.Property<Guid>("Id")
+ .HasColumnType("uniqueidentifier")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("ClassName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("绫诲悕");
+
+ b.Property<string>("Control_Key")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢Key");
+
+ b.Property<string>("Control_Label")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢鍚嶇О");
+
+ b.Property<string>("Control_Model")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢瀛楁");
+
+ b.Property<string>("Control_Type")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("缁勪欢瀛楁");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DbParam")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("鏁版嵁绫诲瀷琛ュ厖鍙傛暟");
+
+ b.Property<string>("DbTypeName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("鏁版嵁绫诲瀷");
+
+ b.Property<string>("DtoTypeName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("浼犲叆鏁版嵁绫诲瀷");
+
+ b.Property<string>("FieldName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("瀛楁鍚嶇О");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<bool?>("IsRequired")
+ .HasColumnType("bit")
+ .HasComment("鏄惁蹇呭~");
+
+ b.Property<string>("QueryType")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鏌ヨ鏂瑰紡");
+
+ b.Property<bool?>("QueryWhether")
+ .HasColumnType("bit")
+ .HasComment("鏄惁鏄煡璇�");
+
+ b.Property<long>("SysLowCodeId")
+ .HasColumnType("bigint");
+
+ b.Property<string>("TableDesc")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("琛ㄦ弿杩�");
+
+ b.Property<string>("TableName")
+ .HasMaxLength(200)
+ .HasColumnType("nvarchar(200)")
+ .HasComment("琛ㄥ悕");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.Property<bool?>("WhetherAddUpdate")
+ .HasColumnType("bit")
+ .HasComment("澧炴敼");
+
+ b.Property<bool?>("WhetherOrderBy")
+ .HasColumnType("bit")
+ .HasComment("鎺掑簭");
+
+ b.Property<bool?>("WhetherTable")
+ .HasColumnType("bit")
+ .HasComment("鍒楄〃鏄剧ず");
+
+ b.HasKey("Id");
+
+ b.HasIndex("SysLowCodeId");
+
+ b.ToTable("sys_low_code_module_database");
+
+ b.HasComment("浣庝唬鐮佹ā鍧楃鐞�");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.SysCodeModular", b =>
+ {
+ b.Property<long>("Id")
+ .HasColumnType("bigint")
+ .HasComment("Id涓婚敭");
+
+ b.Property<string>("AuthorName")
+ .HasMaxLength(20)
+ .HasColumnType("nvarchar(20)")
+ .HasComment("浣滆�呭鍚�");
+
+ b.Property<string>("BusName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("涓氬姟鍚�");
+
+ b.Property<DateTimeOffset?>("CreatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鍒涘缓鏃堕棿");
+
+ b.Property<long?>("CreatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("鍒涘缓鑰匢d");
+
+ b.Property<string>("CreatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鍒涘缓鑰呭悕绉�");
+
+ b.Property<string>("DatabaseName")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鏁版嵁搴撳悕");
+
+ b.Property<string>("FormDesignJson")
+ .HasColumnType("nvarchar(max)")
+ .HasComment("鍔ㄦ�佽〃鍗�");
+
+ b.Property<bool>("IsDeleted")
+ .HasColumnType("bit")
+ .HasComment("杞垹闄ゆ爣璁�");
+
+ b.Property<string>("MenuApplication")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("鑿滃崟搴旂敤鍒嗙被");
+
+ b.Property<long>("MenuPid")
+ .HasColumnType("bigint")
+ .HasComment("鑿滃崟缂栫爜");
+
+ b.Property<string>("NameSpace")
+ .HasMaxLength(100)
+ .HasColumnType("nvarchar(100)")
+ .HasComment("鍛藉悕绌洪棿");
+
+ b.Property<DateTimeOffset?>("UpdatedTime")
+ .HasColumnType("datetimeoffset")
+ .HasComment("鏇存柊鏃堕棿");
+
+ b.Property<long?>("UpdatedUserId")
+ .HasColumnType("bigint")
+ .HasComment("淇敼鑰匢d");
+
+ b.Property<string>("UpdatedUserName")
+ .HasMaxLength(50)
+ .HasColumnType("nvarchar(50)")
+ .HasComment("淇敼鑰呭悕绉�");
+
+ b.HasKey("Id");
+
+ b.ToTable("sys_code_modular");
+
+ b.HasComment("鍔ㄦ�佺敓鎴愭ā鍧楃鐞嗚〃");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.Entity.WmsBase.WmsRolePdaMenu", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsPdaPower", "WmsPdaPower")
+ .WithMany("WmsRolePdaMenus")
+ .HasForeignKey("PdaMenuId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("WmsRolePdaMenus")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysRole");
+
+ b.Navigation("WmsPdaPower");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.LesEntrance", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+ .WithMany("LesEntrance")
+ .HasForeignKey("AreaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsArea");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictData", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysDictType", "SysDictType")
+ .WithMany("SysDictDatas")
+ .HasForeignKey("TypeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysDictType");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpExtOrgPos", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+ .WithMany()
+ .HasForeignKey("SysEmpId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany()
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+ .WithMany()
+ .HasForeignKey("SysPosId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysEmp");
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmpPos", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysEmp", "SysEmp")
+ .WithMany("SysEmpPos")
+ .HasForeignKey("SysEmpId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysPos", "SysPos")
+ .WithMany("SysEmpPos")
+ .HasForeignKey("SysPosId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysEmp");
+
+ b.Navigation("SysPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleDataScope", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany("SysRoleDataScopes")
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysRoleDataScopes")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysRole");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRoleMenu", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysMenu", "SysMenu")
+ .WithMany("SysRoleMenus")
+ .HasForeignKey("SysMenuId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysRoleMenus")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysMenu");
+
+ b.Navigation("SysRole");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserDataScope", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysOrg", "SysOrg")
+ .WithMany("SysUserDataScopes")
+ .HasForeignKey("SysOrgId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+ .WithMany("SysUserDataScopes")
+ .HasForeignKey("SysUserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysOrg");
+
+ b.Navigation("SysUser");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUserRole", b =>
+ {
+ b.HasOne("Admin.NET.Core.SysRole", "SysRole")
+ .WithMany("SysUserRoles")
+ .HasForeignKey("SysRoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("Admin.NET.Core.SysUser", "SysUser")
+ .WithMany("SysUserRoles")
+ .HasForeignKey("SysUserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysRole");
+
+ b.Navigation("SysUser");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsDumpOrder", "WmsDumpOrder")
+ .WithMany("WmsDumpOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsDumpOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsGoodsReturnOrder", "WmsGoodsReturnOrder")
+ .WithMany("WmsGoodsReturnOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsGoodsReturnOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsHistoryMaterialContainer", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+ .WithMany("WmsFoamingHistoryMaterialContainer")
+ .HasForeignKey("MaterialId");
+
+ b.Navigation("WmsMaterial");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterialContainer", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsMaterial", "WmsMaterial")
+ .WithMany("WmsFoamingMaterialContainer")
+ .HasForeignKey("MaterialId");
+
+ b.HasOne("Admin.NET.Core.WmsContainer", "WmsContainer")
+ .WithMany()
+ .HasForeignKey("WmsContainerId");
+
+ b.Navigation("WmsContainer");
+
+ b.Navigation("WmsMaterial");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsOrder", "WareOrder")
+ .WithMany("WareOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WareOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPlace", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsArea", "WmsArea")
+ .WithMany("WmsPlaces")
+ .HasForeignKey("AreaId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsArea");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsReceiptOrder", "WmsReceiptOrder")
+ .WithMany("WmsReceiptOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsReceiptOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrderDetails", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsStockReturnOrder", "WmsStockReturnOrder")
+ .WithMany("WmsStockReturnOrderDetails")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsStockReturnOrder");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrderDetail", b =>
+ {
+ b.HasOne("Admin.NET.Core.WmsTakeMaterialOrder", "WmsTakeMaterialOrder")
+ .WithMany("WmsTakeMaterialOrderDetail")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("WmsTakeMaterialOrder");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCodeDataBase", b =>
+ {
+ b.HasOne("Furion.Extras.Admin.NET.Entity.SysLowCode", "SysLowCode")
+ .WithMany("Databases")
+ .HasForeignKey("SysLowCodeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("SysLowCode");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysDictType", b =>
+ {
+ b.Navigation("SysDictDatas");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysEmp", b =>
+ {
+ b.Navigation("SysEmpPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysMenu", b =>
+ {
+ b.Navigation("SysRoleMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysOrg", b =>
+ {
+ b.Navigation("SysRoleDataScopes");
+
+ b.Navigation("SysUserDataScopes");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysPos", b =>
+ {
+ b.Navigation("SysEmpPos");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysRole", b =>
+ {
+ b.Navigation("SysRoleDataScopes");
+
+ b.Navigation("SysRoleMenus");
+
+ b.Navigation("SysUserRoles");
+
+ b.Navigation("WmsRolePdaMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.SysUser", b =>
+ {
+ b.Navigation("SysUserDataScopes");
+
+ b.Navigation("SysUserRoles");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsArea", b =>
+ {
+ b.Navigation("LesEntrance");
+
+ b.Navigation("WmsPlaces");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsDumpOrder", b =>
+ {
+ b.Navigation("WmsDumpOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsGoodsReturnOrder", b =>
+ {
+ b.Navigation("WmsGoodsReturnOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsMaterial", b =>
+ {
+ b.Navigation("WmsFoamingHistoryMaterialContainer");
+
+ b.Navigation("WmsFoamingMaterialContainer");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsOrder", b =>
+ {
+ b.Navigation("WareOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsPdaPower", b =>
+ {
+ b.Navigation("WmsRolePdaMenus");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsReceiptOrder", b =>
+ {
+ b.Navigation("WmsReceiptOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsStockReturnOrder", b =>
+ {
+ b.Navigation("WmsStockReturnOrderDetails");
+ });
+
+ modelBuilder.Entity("Admin.NET.Core.WmsTakeMaterialOrder", b =>
+ {
+ b.Navigation("WmsTakeMaterialOrderDetail");
+ });
+
+ modelBuilder.Entity("Furion.Extras.Admin.NET.Entity.SysLowCode", b =>
+ {
+ b.Navigation("Databases");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt
new file mode 100644
index 0000000..b8bab23
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Database.Migrations/note/note.txt
@@ -0,0 +1,16 @@
+锘緼dd-Migration v1.0.0 -Context MultiTenantDbContext
+update-database v1.0.0 -Context MultiTenantDbContext
+
+
+Add-Migration v1.0.1 -Context DefaultDbContext
+update-database v1.0.1 -Context DefaultDbContext
+
+
+Add-Migration v1.0.0 -Context SecondDbContext
+update-database v1.0.0 -Context SecondDbContext
+
+Update-Database -Migration:0 -Context DefaultDbContext
+Remove-Migration -Context DefaultDbContext
+
+Scaffold-DbContext "Server=localhost;Database=yoke_test;User=sa;Password=123abc.com;MultipleActiveResultSets=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2 -ContextDir Context2 -Context TestDbContext -Force
+Scaffold-DbContext "Server=localhost;Database=yoke_la21010;User=sa;Password=123abc.com;MultipleActiveResultSets=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models2 -ContextDir Models2 -Context TestDbContext -Force
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj
new file mode 100644
index 0000000..143d7bc
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Admin.NET.EntityFramework.Core.csproj
@@ -0,0 +1,39 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>disable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <None Remove="dbsettings.Development-166.json" />
+ <None Remove="dbsettings.Development-鏈満.json" />
+ </ItemGroup>
+
+
+ <ItemGroup>
+ <Content Include="dbsettings.Development-鏈満.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dbsettings.Development-166.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dbsettings.Development.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dbsettings.json">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.9" />
+ <PackageReference Include="Zack.EFCore.Batch.MSSQL_NET6" Version="6.1.3" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Admin.NET.Core\Admin.NET.Core.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs
new file mode 100644
index 0000000..71bd224
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/DefaultDbContext.cs
@@ -0,0 +1,307 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Entity;
+using Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using System.Linq.Expressions;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.EntityFramework.Core
+{
+ [AppDbContext("DefaultConnection", DbProvider.SqlServer)]
+ public class DefaultDbContext : AppDbContext<DefaultDbContext>, IModelBuilderFilter
+ {
+ public DefaultDbContext(DbContextOptions<DefaultDbContext> options) : base(options)
+ {
+ // 鍚敤瀹炰綋鏁版嵁鏇存敼鐩戝惉
+ EnabledEntityChangedListener = true;
+
+ // 蹇界暐绌哄�兼洿鏂�
+ InsertOrUpdateIgnoreNullValues = true;
+ }
+
+ /// <summary>
+ /// 鑾峰彇绉熸埛Id
+ /// </summary>
+ /// <returns></returns>
+ //public object GetTenantId()
+ //{
+ // // 娴佺▼涓病鏈夌敤鍒板绉熸埛 杩欓噷榛樿杩斿洖涓�涓鎴�
+ // if (App.User == null) return 142307070918780;
+ // return Convert.ToInt64(App.User.FindFirst(ClaimConst.TENANT_ID)?.Value);
+ //}
+
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ if (Database.ProviderName == DbProvider.Sqlite)
+ {
+ // SQLite does not have proper support for DateTimeOffset via Entity Framework Core, see the limitations
+ // here: https://docs.microsoft.com/en-us/ef/core/providers/sqlite/limitations#query-limitations
+ // To work around this, when the Sqlite database provider is used, all model properties of type DateTimeOffset
+ // use the DateTimeOffsetToBinaryConverter
+ // Based on: https://github.com/aspnet/EntityFrameworkCore/issues/10784#issuecomment-415769754
+ // This only supports millisecond precision, but should be sufficient for most use cases.
+ foreach (var entityType in builder.Model.GetEntityTypes())
+ {
+ var properties = entityType.ClrType.GetProperties().Where(p => p.PropertyType == typeof(DateTimeOffset)
+ || p.PropertyType == typeof(DateTimeOffset?));
+ foreach (var property in properties)
+ {
+ builder
+ .Entity(entityType.Name)
+ .Property(property.Name)
+ .HasConversion(new DateTimeOffsetToBinaryConverter());
+ }
+ }
+ }
+ // 澶勭悊mysql鏃跺尯闂 https://gitee.com/dotnetchina/Furion/issues/I3RSCO#note_5685893_link
+ else if (Database.ProviderName == DbProvider.MySql || Database.ProviderName == DbProvider.MySqlOfficial)
+ {
+ var converter = new ValueConverter<DateTimeOffset, DateTime>(v => v.LocalDateTime, v => v);
+
+ // 鎵弿绋嬪簭闆嗭紝鑾峰彇鏁版嵁搴撳疄浣撶浉鍏崇被鍨�
+ var types = App.EffectiveTypes.Where(t => (typeof(IPrivateEntity).IsAssignableFrom(t) || typeof(IPrivateModelBuilder).IsAssignableFrom(t))
+ && t.IsClass && !t.IsAbstract && !t.IsGenericType && !t.IsInterface && !t.IsDefined(typeof(ManualAttribute), true));
+
+ if (types.Any())
+ {
+ foreach (var item in types)
+ {
+ if (item.IsSubclassOf(typeof(DEntityBase)) || item.IsSubclassOf(typeof(EntityBase)))
+ {
+ foreach (var property in item.GetProperties())
+ {
+ if (property.PropertyType == typeof(DateTimeOffset?) || property.PropertyType == typeof(DateTimeOffset))
+ {
+ builder.Entity(item).Property(property.Name).HasConversion(converter);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ base.OnModelCreating(builder);
+ }
+
+ /// <summary>
+ /// 閰嶇疆绉熸埛Id杩囨护鍣�
+ /// </summary>
+ /// <param name="modelBuilder"></param>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="dbContextLocator"></param>
+ public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
+ {
+ // 閰嶇疆鍋囧垹闄よ繃婊ゅ櫒
+ LambdaExpression expression = FakeDeleteQueryFilterExpression(entityBuilder, dbContext);
+ if (expression != null)
+ entityBuilder.HasQueryFilter(expression);
+ // 閰嶇疆鏁版嵁鏉冮檺鍔ㄦ�佽〃杈惧紡
+ LambdaExpression dataScopesExpression = DataScopesFilterExpression(entityBuilder, dbContext);
+ if (dataScopesExpression != null)
+ entityBuilder.HasQueryFilter(dataScopesExpression);
+ }
+
+ protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
+ {
+ // 鑾峰彇褰撳墠浜嬩欢瀵瑰簲涓婁笅鏂�
+ var dbContext = eventData.Context;
+ // 鑾峰彇鎵�鏈夋洿鏀癸紝鍒犻櫎锛屾柊澧炵殑瀹炰綋锛屼絾鎺掗櫎瀹¤瀹炰綋锛堥伩鍏嶆寰幆锛�
+ var entities = dbContext.ChangeTracker.Entries()
+ .Where(u => u.Entity.GetType() != typeof(SysLogAudit) && u.Entity.GetType() != typeof(SysLogOp) &&
+ u.Entity.GetType() != typeof(SysLogVis) && u.Entity.GetType() != typeof(SysLogEx) &&
+ (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)).ToList();
+ if (entities == null || entities.Count < 1) return;
+
+ //// 鍒ゆ柇鏄惁鏄紨绀虹幆澧�
+ //var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
+ //if (demoEnvFlag)
+ //{
+ // var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
+ // if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 鎺掗櫎鐧诲綍
+ // throw Oops.Oh(ErrorCode.D1200);
+ //}
+
+ // 褰撳墠鎿嶄綔鑰呬俊鎭�
+ var userId = App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+ //璇诲彇鐨勭敤鎴峰悕鏀逛负 鏄电О锛岃�屼笉鏄处鍙� 銆怑ditby shaocx,2024-04-20銆�
+ //var userName = App.User?.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+ var userName = App.User?.FindFirst(ClaimConst.CLAINM_NAME)?.Value;
+ // 褰撳墠鎿嶄綔鑰呮満鏋勪俊鎭�
+ var orgId = App.User?.FindFirst(ClaimConst.CLAINM_ORGID)?.Value;
+ var orgName = App.User?.FindFirst(ClaimConst.CLAINM_ORGNAME)?.Value;
+
+ foreach (var entity in entities)
+ {
+ if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase)))
+ {
+ var obj = entity.Entity as DEntityBase;
+ if (entity.State == EntityState.Added)
+ {
+ obj.Id = obj.Id == 0 ? YitIdHelper.NextId() : obj.Id;
+ obj.CreatedTime = DateTimeOffset.Now;
+ if (!string.IsNullOrEmpty(userId))
+ {
+ obj.CreatedUserId = long.Parse(userId);
+ obj.CreatedUserName = userName;
+ if (entity.Entity.GetType().GetInterface(typeof(IDataPermissions).Name) != null)
+ {
+ ((IDataPermissions)obj).CreatedUserOrgId = long.Parse(orgId);
+ ((IDataPermissions)obj).CreatedUserOrgName = orgName;
+ }
+ }
+ }
+ else if (entity.State == EntityState.Modified)
+ {
+ // 鎺掗櫎鍒涘缓浜�
+ entity.Property(nameof(DEntityBase.CreatedUserId)).IsModified = false;
+ entity.Property(nameof(DEntityBase.CreatedUserName)).IsModified = false;
+ // 鎺掗櫎鍒涘缓鏃ユ湡
+ entity.Property(nameof(DEntityBase.CreatedTime)).IsModified = false;
+
+ obj.UpdatedTime = DateTimeOffset.Now;
+ if (!string.IsNullOrEmpty(userId))
+ {
+ obj.UpdatedUserId = long.Parse(userId);
+ obj.UpdatedUserName = userName;
+ }
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 鏋勫缓绉熸埛Id浠ュ強鍋囧垹闄よ繃婊ゅ櫒
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="isDeletedKey"></param>
+ /// <param name="filterValue"></param>
+ /// <returns></returns>
+ protected static LambdaExpression FakeDeleteQueryFilterExpression(EntityTypeBuilder entityBuilder, DbContext dbContext, string onTableTenantId = null, string isDeletedKey = null, object filterValue = null)
+ {
+ //onTableTenantId ??= "TenantId";
+ isDeletedKey ??= "IsDeleted";
+ IMutableEntityType metadata = entityBuilder.Metadata;
+ //if (metadata.FindProperty(onTableTenantId) == null && metadata.FindProperty(isDeletedKey) == null)
+ //{
+ // return null;
+ //}
+ //瑙e喅瀹炰綋缁ф壙鎶ラ敊闂锛屽熀绫昏〃鎵嶆湁IsDeleted銆乀enantId瀛楁
+ if (metadata.BaseType != null)
+ {
+ return null;
+ }
+
+ Expression finialExpression = Expression.Constant(true);
+ ParameterExpression parameterExpression = Expression.Parameter(metadata.ClrType, "u");
+
+
+ // 鍋囧垹闄よ繃婊ゅ櫒
+ if (metadata.FindProperty(isDeletedKey) != null)
+ {
+ ConstantExpression constantExpression = Expression.Constant(isDeletedKey);
+ ConstantExpression right = Expression.Constant(filterValue ?? false);
+ var fakeDeleteQueryExpression = Expression.Equal(Expression.Call(typeof(EF), "Property", new Type[1]
+ {
+ typeof(bool)
+ }, parameterExpression, constantExpression), right);
+ finialExpression = Expression.AndAlso(finialExpression, fakeDeleteQueryExpression);
+ }
+
+ return Expression.Lambda(finialExpression, parameterExpression);
+ }
+
+ #region 鏁版嵁鏉冮檺
+
+ /// <summary>
+ /// 鑾峰彇鐢ㄦ埛Id
+ /// </summary>
+ /// <returns></returns>
+ public object GetUserId()
+ {
+ if (App.User == null) return null;
+ return App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏁版嵁鑼冨洿
+ /// </summary>
+ /// <returns></returns>
+ public List<object> GetDataScopes()
+ {
+ var userId = this.GetUserId();
+ if (userId == null)
+ {
+ return new List<object>();
+ }
+
+ var dataScopes = JsonUtil.FromJson<List<object>>(App.User.FindFirst(ClaimConst.DATA_SCOPES)?.Value);
+ if (dataScopes != null)
+ {
+ return dataScopes;
+ }
+ return new List<object>();
+ }
+
+ /// <summary>
+ /// 鏋勫缓鏁版嵁鑼冨洿杩囨护鍣�
+ /// </summary>
+ /// <param name="entityBuilder"></param>
+ /// <param name="dbContext"></param>
+ /// <param name="onTableCreatedUserId"></param>
+ /// <param name="onTableCreatedUserOrgId"></param>
+ /// <param name="filterValue"></param>
+ /// <returns></returns>
+ protected LambdaExpression DataScopesFilterExpression(EntityTypeBuilder entityBuilder, DbContext dbContext, string onTableCreatedUserId = null, string onTableCreatedUserOrgId = null)
+ {
+ onTableCreatedUserId ??= nameof(IDataPermissions.CreatedUserId);//鐢ㄦ埛id瀛楁
+ onTableCreatedUserOrgId ??= nameof(IDataPermissions.CreatedUserOrgId);//鐢ㄦ埛閮ㄩ棬瀛楁
+
+ IMutableEntityType metadata = entityBuilder.Metadata;
+ if (metadata.FindProperty(onTableCreatedUserId) == null || metadata.FindProperty(onTableCreatedUserOrgId) == null)
+ {
+ return null;
+ }
+
+ Expression finialExpression = Expression.Constant(true);
+ ParameterExpression parameterExpression = Expression.Parameter(metadata.ClrType, "u");
+
+ // 涓汉鐢ㄦ埛鏁版嵁杩囨护鍣�
+ if (metadata.FindProperty(onTableCreatedUserId) != null)
+ {
+ ConstantExpression constantExpression = Expression.Constant(onTableCreatedUserId);
+ MethodCallExpression right = Expression.Call(Expression.Constant(dbContext), dbContext.GetType().GetMethod("GetUserId"));
+ finialExpression = Expression.AndAlso(finialExpression, Expression.Equal(Expression.Call(typeof(EF), "Property", new Type[1]
+ {
+ typeof(object)
+ }, parameterExpression, constantExpression), right));
+ }
+
+ //鏁版嵁鏉冮檺杩囨护鍣�
+ if (metadata.FindProperty(onTableCreatedUserOrgId) != null)
+ {
+ ConstantExpression constantExpression = Expression.Constant(onTableCreatedUserOrgId);
+
+ MethodCallExpression dataScopesLeft = Expression.Call(Expression.Constant(dbContext), dbContext.GetType().GetMethod("GetDataScopes"));
+ var firstOrDefaultCall = Expression.Call(typeof(EF), "Property", new Type[1]
+ {
+ typeof(object)
+ }, parameterExpression, constantExpression);
+
+ var createdUserOrgIdQueryExpression = Expression.Call(dataScopesLeft, typeof(List<object>).GetMethod("Contains"), firstOrDefaultCall);
+
+ finialExpression = Expression.Or(finialExpression, createdUserOrgIdQueryExpression);
+ }
+
+ return Expression.Lambda(finialExpression, parameterExpression);
+ }
+
+ #endregion 鏁版嵁鏉冮檺
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs
new file mode 100644
index 0000000..a2bfa6f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/DbContexts/MultiTenantDbContext.cs
@@ -0,0 +1,62 @@
+using Admin.NET.Core;
+using Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.EntityFramework.Core
+{
+ [AppDbContext("MultiTenantConnection", DbProvider.Sqlite)]
+ public class MultiTenantDbContext : AppDbContext<MultiTenantDbContext, MultiTenantDbContextLocator>
+ {
+ public MultiTenantDbContext(DbContextOptions<MultiTenantDbContext> options) : base(options)
+ {
+ }
+
+ protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result)
+ {
+ // 鑾峰彇鎵�鏈夊凡鏇存敼鐨勫疄浣�
+ var entities = eventData.Context.ChangeTracker.Entries()
+ .Where(u => u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)
+ .ToList();
+
+ // 鍒ゆ柇鏄惁鏄紨绀虹幆澧�
+ //var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult();
+ //if (demoEnvFlag)
+ //{
+ // var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser));
+ // if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // 鎺掗櫎鐧诲綍
+ // throw Oops.Oh(ErrorCode.D1200);
+ //}
+
+ // 褰撳墠鎿嶄綔鐢ㄦ埛淇℃伅
+ var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
+ var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value;
+
+ foreach (var entity in entities)
+ {
+ if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase<long, MultiTenantDbContextLocator>)))
+ {
+ var obj = entity.Entity as DEntityBase<long, MultiTenantDbContextLocator>;
+ if (entity.State == EntityState.Added)
+ {
+ obj.Id = YitIdHelper.NextId();
+ obj.CreatedTime = DateTimeOffset.Now;
+ if (!string.IsNullOrEmpty(userId))
+ {
+ obj.CreatedUserId = long.Parse(userId);
+ obj.CreatedUserName = userName;
+ }
+ }
+ else if (entity.State == EntityState.Modified)
+ {
+ obj.UpdatedTime = DateTimeOffset.Now;
+ obj.UpdatedUserId = long.Parse(userId);
+ obj.UpdatedUserName = userName;
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs
new file mode 100644
index 0000000..5fc6a93
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/Startup.cs
@@ -0,0 +1,41 @@
+锘縰sing Furion;
+using Furion.DatabaseAccessor;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Admin.NET.Core.Service;
+
+namespace Admin.NET.EntityFramework.Core
+{
+ public class Startup : AppStartup
+ {
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddDatabaseAccessor(options =>
+ {
+ options.CustomizeMultiTenants(); // 鑷畾涔夌鎴�
+
+ options.AddDbPool<DefaultDbContext>(providerName: default, optionBuilder: (services, opt) =>
+ {
+ opt.UseBatchEF_MSSQL(); // EF鎵归噺缁勪欢 --- SQlite鏁版嵁搴撳寘
+ });
+ //options.AddDbPool<ZdDbContext,ZdDbContextLocation>(DbProvider.SqlServer);
+ //options.AddDbPool<MultiTenantDbContext, MultiTenantDbContextLocator>();
+ }, "Admin.NET.Database.Migrations");
+ }
+
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+ //// 鑷姩杩佺Щ鏁版嵁搴擄紙update-database鍛戒护锛�
+ //if (env.IsDevelopment())
+ //{
+ // Scoped.Create((_, scope) =>
+ // {
+ // var context = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
+ // context.Database.Migrate();
+ // });
+ //}
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json
new file mode 100644
index 0000000..bde05be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-166.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+ "ConnectionStrings": {
+ //MSSQL杩炴帴瀛楃涓�
+ "DefaultConnection": "Server=10.10.40.166;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+ }
+}
\ No newline at end of file
diff --git "a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json" "b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json"
new file mode 100644
index 0000000..c5e0380
--- /dev/null
+++ "b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.Development-\346\234\254\346\234\272.json"
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+ "ConnectionStrings": {
+ //MSSQL杩炴帴瀛楃涓�
+ "DefaultConnection": "Server=.;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json
new file mode 100644
index 0000000..bde05be
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.EntityFramework.Core/dbsettings.json
@@ -0,0 +1,8 @@
+{
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+ "ConnectionStrings": {
+ //MSSQL杩炴帴瀛楃涓�
+ "DefaultConnection": "Server=10.10.40.166;Database=My_Admin.NET_Template;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
new file mode 100644
index 0000000..3d7660a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj
@@ -0,0 +1,18 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <Nullable>enable</Nullable>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Compile Remove="Handlers\WorkflowRegistHandler.cs" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Admin.NET.Application\Admin.NET.Application.csproj" />
+ <ProjectReference Include="..\Admin.NET.Database.Migrations\Admin.NET.Database.Migrations.csproj" />
+ </ItemGroup>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs
new file mode 100644
index 0000000..1976072
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Handlers/JwtHandler.cs
@@ -0,0 +1,86 @@
+锘縰sing Admin.NET.Application;
+using Admin.NET.Core;
+using Admin.NET.Core.Options;
+using Furion;
+using Furion.Authorization;
+using Furion.DataEncryption;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Web.Core
+{
+ public class JwtHandler : AppAuthorizeHandler
+ {
+ /// <summary>
+ /// 閲嶅啓 Handler 娣诲姞鑷姩鍒锋柊
+ /// </summary>
+ /// <param name="context"></param>
+ /// <returns></returns>
+ public override async Task HandleAsync(AuthorizationHandlerContext context)
+ {
+ // 鑷姩鍒锋柊Token
+ if (JWTEncryption.AutoRefreshToken(context, context.GetCurrentHttpContext(),
+ App.GetOptions<JWTSettingsOptions>().ExpiredTime,
+ App.GetOptions<RefreshTokenSettingOptions>().ExpiredTime))
+ {
+ await AuthorizeHandleAsync(context);
+ }
+ else
+ {
+ context.Fail(); // 鎺堟潈澶辫触
+ DefaultHttpContext currentHttpContext = context.GetCurrentHttpContext();
+ if (currentHttpContext == null)
+ return;
+ currentHttpContext.SignoutToSwagger();
+ }
+ }
+
+ /// <summary>
+ /// 鎺堟潈鍒ゆ柇閫昏緫锛屾巿鏉冮�氳繃杩斿洖 true锛屽惁鍒欒繑鍥� false
+ /// </summary>
+ /// <param name="context"></param>
+ /// <param name="httpContext"></param>
+ /// <returns></returns>
+ public override async Task<bool> PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)
+ {
+ // 姝ゅ宸茬粡鑷姩楠岃瘉 Jwt Token鐨勬湁鏁堟�т簡锛屾棤闇�鎵嬪姩楠岃瘉
+ return await CheckAuthorzieAsync(httpContext);
+ }
+
+ /// <summary>
+ /// 妫�鏌ユ潈闄�
+ /// </summary>
+ /// <param name="httpContext"></param>
+ /// <returns></returns>
+ private static async Task<bool> CheckAuthorzieAsync(DefaultHttpContext httpContext)
+ {
+ // 绠$悊鍛樿烦杩囧垽鏂�
+ if (App.User.FindFirst(ClaimConst.CLAINM_SUPERADMIN)?.Value == ((int)AdminType.SuperAdmin).ToString()) return true;
+
+ // 璺敱鍚嶇О
+ var routeName = httpContext.Request.Path.Value[1..].Replace("/", ":");
+
+ // 榛樿璺敱(鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅)
+ var defalutRoute = new List<string>()
+ {
+ "getLoginUser", //鐧诲綍
+ "sysMenu:change" //鍒囨崲椤堕儴鑿滃崟
+ };
+
+ if (defalutRoute.Contains(routeName)) return true;
+
+ // 鑾峰彇鐢ㄦ埛鏉冮檺闆嗗悎锛堟寜閽垨API鎺ュ彛锛�
+ var allPermissionList = await App.GetService<ISysMenuService>().GetAllPermissionList();
+ var currUserId = Convert.ToInt64(App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value);
+ var permissionList = await App.GetService<ISysMenuService>().GetLoginPermissionList(currUserId);
+
+ // 妫�鏌ユ巿鏉�
+ // 鑿滃崟涓病鏈夐厤缃寜閽潈闄愶紝鍒欎笉闄愬埗
+ return allPermissionList.All(u => u != routeName) || permissionList.Contains(routeName);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs
new file mode 100644
index 0000000..bec19da
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/BStyleServiceExtension.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+
+namespace Admin.NET.Web.Core
+{
+ /// <summary>
+ /// B鏍�
+ /// </summary>
+ internal static class BStyleServiceExtension
+ {
+ public static void AddBStyle(this IServiceCollection services, Action<BStyleServiceBuilder> configure)
+ {
+ var builder = new BStyleServiceBuilder(services);
+ configure(builder);
+ }
+ }
+
+ internal class BStyleServiceBuilder
+ {
+ private IServiceCollection serviceCollection;
+
+ public BStyleServiceBuilder(IServiceCollection services)
+ {
+ serviceCollection = services;
+ }
+
+ public void UseDefault()
+ {
+ Console.ForegroundColor = ConsoleColor.Blue;
+ Console.WriteLine(@" ___ _ _ _ _ _____ _____
+ / _ \ | | (_) | \ | || ___|_ _|
+/ /_\ \ __| |_ __ ___ _ _ __ | \| || |__ | |
+| _ |/ _` | '_ ` _ \| | '_ \ | . ` || __| | |
+| | | | (_| | | | | | | | | | |_| |\ || |___ | |
+\_| |_/\__,_|_| |_| |_|_|_| |_(_)_| \_/\____/ \_/ ");
+ Console.ForegroundColor = ConsoleColor.Red;
+ Console.WriteLine(@"
+
+gitee: https://gitee.com/zuohuaijun/Admin.NET");
+ Console.ForegroundColor = ConsoleColor.Yellow;
+ Console.WriteLine(@"鏈熷緟鎮ㄧ殑PR锛岃.net鏇村ソ锛�
+
+");
+ }
+
+ public void UseOther()
+ {
+ System.Console.WriteLine(@"鍙︿竴涓狟Style");
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs
new file mode 100644
index 0000000..3a4b2c8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/ServiceExtension/SnowflakeIdServiceExtension.cs
@@ -0,0 +1,19 @@
+锘縰sing Furion;
+using Microsoft.Extensions.DependencyInjection;
+using Yitter.IdGenerator;
+
+namespace Admin.NET.Web.Core
+{
+ /// <summary>
+ /// 闆姳id
+ /// </summary>
+ internal static class SnowflakeIdServiceExtension
+ {
+ public static void AddSnowflakeId(this IServiceCollection services)
+ {
+ // 璁剧疆闆姳Id鐨剋orkerId锛岀‘淇濇瘡涓疄渚媤orkerId閮藉簲涓嶅悓
+ var workerId = ushort.Parse(App.Configuration["SnowId:WorkerId"] ?? "1");
+ YitIdHelper.SetIdGenerator(new IdGeneratorOptions { WorkerId = workerId });
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs
new file mode 100644
index 0000000..c77bfdd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Core/Startup.cs
@@ -0,0 +1,142 @@
+锘縰sing Admin.NET.Application;
+using Admin.NET.Core;
+using Admin.NET.Core.Extension;
+using Admin.NET.Core.Options;
+using Furion;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.HttpOverrides;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
+using OnceMi.AspNetCore.OSS;
+using Serilog;
+
+namespace Admin.NET.Web.Core
+{
+ public class Startup : AppStartup
+ {
+ public void ConfigureServices(IServiceCollection services)
+ {
+ services.AddBStyle(c => c.UseDefault());
+ services.AddConfigurableOptions<RefreshTokenSettingOptions>();
+ services.AddJwt<JwtHandler>(enableGlobalAuthorize: true);
+ services.AddCorsAccessor();
+ services.AddRemoteRequest();
+ services.AddControllersWithViews()
+ .AddNewtonsoftJson(options =>
+ {
+ // 棣栧瓧姣嶅皬鍐�(椹煎嘲鏍峰紡)
+ options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
+ // 鏃堕棿鏍煎紡鍖�
+ options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+ // 蹇界暐寰幆寮曠敤
+ options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
+ // 蹇界暐绌哄��
+ // options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
+ })
+ .AddInjectWithUnifyResult<XnRestfulResultProvider>()
+ .AddMvcFilter<RequestActionFilter>();
+ services.AddViewEngine();
+ services.AddSignalR();
+ services.AddSnowflakeId(); // 闆姳Id
+ // 娉ㄥ唽EventBus鏈嶅姟
+ services.AddEventBus(builder =>
+ {
+ // 娉ㄥ唽 Log 鏃ュ織璁㈤槄鑰�
+ builder.AddSubscriber<LogEventSubscriber>();
+ });
+
+ if (App.Configuration["Cache:CacheType"] == "RedisCache")
+ {
+ //妗嗘灦鍘熸敞鍐孲tackExchangeRedisCache鏈嶅姟
+ //services.AddStackExchangeRedisCache(options =>
+ //{
+ // options.Configuration = App.Configuration["Cache:RedisConnectionString"]; // redis杩炴帴閰嶇疆
+ // options.InstanceName = App.Configuration["Cache:InstanceName"]; // 閿悕鍓嶇紑
+ // });
+
+ services.UseCsRedis();
+ }
+
+ //// default minio
+ //// 娣诲姞榛樿瀵硅薄鍌ㄥ瓨閰嶇疆淇℃伅
+ //services.AddOSSService(option =>
+ //{
+ // option.Provider = OSSProvider.Minio;
+ // option.Endpoint = "oss.oncemi.com:9000";
+ // option.AccessKey = "Q*************9";
+ // option.SecretKey = "A**************************Q";
+ // option.IsEnableHttps = true;
+ // option.IsEnableCache = true;
+ //});
+
+ // aliyun oss
+ // 娣诲姞鍚嶇О涓衡�榓liyunoss鈥欑殑OSS瀵硅薄鍌ㄥ瓨閰嶇疆淇℃伅
+ services.AddOSSService("aliyunoss", option =>
+ {
+ option.Provider = OSSProvider.Aliyun;
+ option.Endpoint = "oss-cn-hangzhou.aliyuncs.com";
+ option.AccessKey = "L*******************U";
+ option.SecretKey = "5*******************************T";
+ option.IsEnableCache = true;
+ });
+
+ //// qcloud oss
+ //// 浠庨厤缃枃浠朵腑鍔犺浇鑺傜偣涓衡�極SSProvider鈥欑殑閰嶇疆淇℃伅
+ //services.AddOSSService("QCloud", "OSSProvider");
+
+ //.net6涓嬩娇鐢∟pgsql鏁版嵁搴撴椂浣跨敤浠ヤ笅2琛岄厤缃�
+ //AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);//鍚敤閬楃暀鏃堕棿鎴宠涓�
+ //AppContext.SetSwitch("Npgsql.DisableDateTimeInfinityConversions", true);//绂佺敤鏃ユ湡鏃堕棿鏃犻檺杞崲
+ }
+
+ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+ {
+ if (env.IsDevelopment())
+ {
+ app.UseDeveloperExceptionPage();
+ }
+ else
+ {
+ app.UseExceptionHandler("/Home/Error");
+ app.UseHsts();
+ }
+
+ // NGINX 鍙嶅悜浠g悊鑾峰彇鐪熷疄IP
+ app.UseForwardedHeaders(new ForwardedHeadersOptions
+ {
+ ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
+ });
+
+ // 娣诲姞鐘舵�佺爜鎷︽埅涓棿浠�
+ app.UseUnifyResultStatusCodes();
+
+ app.UseHttpsRedirection(); // 寮哄埗https
+ app.UseStaticFiles();
+
+ // Serilog璇锋眰鏃ュ織涓棿浠�---蹇呴』鍦� UseStaticFiles 鍜� UseRouting 涔嬮棿
+ app.UseSerilogRequestLogging();
+
+ app.UseRouting();
+
+ app.UseCorsAccessor();
+
+ app.UseAuthentication();
+ app.UseAuthorization();
+
+ app.UseInject("swagger");
+
+ app.UseEndpoints(endpoints =>
+ {
+ endpoints.MapHub<ChatHub>("/hubs/chathub");
+
+ endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
+ });
+
+ // 寮�鍚嚜鍚姩瀹氭椂浠诲姟
+ //App.GetService<ISysTimerService>().StartTimerJob();
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json
new file mode 100644
index 0000000..fccc806
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+ "version": 1,
+ "isRoot": true,
+ "tools": {
+ "dotnet-ef": {
+ "version": "7.0.0",
+ "commands": [
+ "dotnet-ef"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
new file mode 100644
index 0000000..c35b08a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
@@ -0,0 +1,58 @@
+<Project Sdk="Microsoft.NET.Sdk.Web">
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <SatelliteResourceLanguages>en-US</SatelliteResourceLanguages>
+ </PropertyGroup>
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <Nullable>disable</Nullable>
+ <ImplicitUsings>enable</ImplicitUsings>
+ <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <NoWarn>1701;1702;RZ1026;RZ1010;RZ1008</NoWarn>
+ <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
+ <WarningsNotAsErrors>RZ1026;RZ1010;RZ1008</WarningsNotAsErrors>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <NoWarn>1701;1702;RZ1026;RZ1010;RZ1008</NoWarn>
+ <TreatWarningsAsErrors>True</TreatWarningsAsErrors>
+ <WarningsNotAsErrors>RZ1026;RZ1010;RZ1008</WarningsNotAsErrors>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.7">
+ <PrivateAssets>all</PrivateAssets>
+ <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
+ </PackageReference>
+ <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.16.1" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\Admin.NET.Web.Core\Admin.NET.Web.Core.csproj" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <!-- Drawing鏀寔linux -->
+ <RuntimeHostConfigurationOption Include="System.Drawing.EnableUnixSupport" Value="true" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <Content Update="wwwroot\Template\Service.cs.vm">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ </ItemGroup>
+
+ <ItemGroup>
+ <Folder Include="wwwroot\CodeGen\" />
+ </ItemGroup>
+
+ <ProjectExtensions>
+ <VisualStudio>
+ <UserProperties appsettings_1json__JsonSchema="" />
+ </VisualStudio>
+ </ProjectExtensions>
+
+</Project>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs
new file mode 100644
index 0000000..69eb120
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Controllers/HomeController.cs
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Admin.NET.Web.Entry.Controllers
+{
+ [AllowAnonymous]
+ public class HomeController : Controller
+ {
+ //private readonly ISystemService _systemService;
+
+ //public HomeController(ISystemService systemService)
+ //{
+ // _systemService = systemService;
+ //}
+
+ //public IActionResult Index()
+ //{
+ // ViewBag.Description = _systemService.GetDescription();
+
+ // return View();
+ //}
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs
new file mode 100644
index 0000000..ebdf747
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Program.cs
@@ -0,0 +1,18 @@
+var builder = WebApplication.CreateBuilder(args).Inject();
+builder.Host.UseSerilogDefault().ConfigureAppConfiguration((hostingContext, config) =>
+{
+ config.AddJsonFile("applicationsettings.json", optional: true, reloadOnChange: true);
+});
+
+// 工作流注册
+//builder.Services.AddWorkflow(options =>
+//{
+// options.UsePersistence(sp => sp.GetService<FurionPersistenceProvider>());
+//});
+// 工作流JSON注册
+//builder.Services.AddWorkflowDSL();
+
+var app = builder.Build();
+// 工作流注入
+//app.UseWorkflow();
+app.Run();
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json
new file mode 100644
index 0000000..2524ee5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Properties/launchSettings.json
@@ -0,0 +1,44 @@
+{
+ "iisSettings": {
+ "windowsAuthentication": false,
+ "anonymousAuthentication": true,
+ "iisExpress": {
+ "applicationUrl": "http://localhost:8090",
+ "sslPort": 0
+ }
+ },
+ "profiles": {
+ "IIS Express": {
+ "commandName": "IISExpress",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ }
+ },
+ "Development-Admin.NET": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Development"
+ },
+ "applicationUrl": "http://localhost:8090",
+ "launchUrl": "http://localhost:8090/swagger/",
+ "dotnetRunMessages": "true"
+ },
+ "Production-Admin.NET": {
+ "commandName": "Project",
+ "launchBrowser": true,
+ "environmentVariables": {
+ "ASPNETCORE_ENVIRONMENT": "Production"
+ },
+ "applicationUrl": "http://localhost:8090",
+ "dotnetRunMessages": "true"
+ },
+ "Docker": {
+ "commandName": "Docker",
+ "launchBrowser": true,
+ "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
+ "publishAllPorts": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml
new file mode 100644
index 0000000..007173b
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Home/Index.cshtml
@@ -0,0 +1,12 @@
+锘緻{
+ ViewData["Title"] = ViewBag.Description;
+}
+
+<div style="text-align:center;margin-top:50px;">
+ <img src="~/images/logo.png" style="height:100px;" />
+ <div align="center">
+ <p><a href="https://gitee.com/dotnetchina/Furion/stargazers"><img src="https://gitee.com/dotnetchina/Furion/badge/star.svg?theme=gvp" alt="star"></a> <a href="https://gitee.com/dotnetchina/Furion/members"><img src="https://gitee.com/dotnetchina/Furion/badge/fork.svg?theme=gvp" alt="fork"></a> <a href="https://github.com/MonkSoul/Furion/stargazers"><img src="https://img.shields.io/github/stars/MonkSoul/Furion?logo=github" alt="GitHub stars"></a> <a href="https://github.com/MonkSoul/Furion/network"><img src="https://img.shields.io/github/forks/MonkSoul/Furion?logo=github" alt="GitHub forks"></a> <a href="https://github.com/MonkSoul/Furion/blob/main/LICENSE"><img src="https://img.shields.io/github/license/MonkSoul/Furion" alt="GitHub license"></a> <a href="https://www.nuget.org/packages/Furion"><img src="https://img.shields.io/nuget/v/Furion.svg?cacheSeconds=10800" alt="nuget"></a></p>
+ </div>
+ <p>@ViewBag.Description</p>
+ <p><a href="/api">API 鎺ュ彛</a> <a href="https://gitee.com/dotnetchina/Furion" target="_blank">婧愮爜鍦板潃</a></p>
+</div>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml
new file mode 100644
index 0000000..f5f94a0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/Shared/_Layout.cshtml
@@ -0,0 +1,11 @@
+锘�<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>@ViewData["Title"] - Furion</title>
+</head>
+<body>
+ @RenderBody()
+</body>
+</html>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml
new file mode 100644
index 0000000..ae2e7b9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewImports.cshtml
@@ -0,0 +1,2 @@
+锘緻using Admin.NET.Web.Entry
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..1af6e49
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+锘緻{
+ Layout = "_Layout";
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json
new file mode 100644
index 0000000..84ff115
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/appsettings.json
@@ -0,0 +1,161 @@
+{
+ "$schema": "https://gitee.com/dotnetchina/Furion/raw/net6/schemas/v3/furion-schema.json",
+
+ "Serilog": {
+ "MinimumLevel": {
+ "Default": "Information",
+ "Override": {
+ "System": "Warning",
+ "Microsoft": "Warning",
+ "Microsoft.Hosting.Lifetime": "Information",
+ "Microsoft.EntityFrameworkCore": "Information"
+ }
+ },
+ "WriteTo": [
+ {
+ "Name": "Console",
+ "Args": {
+ "outputTemplate": "銆愭椂闂淬�憑Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}銆愮瓑绾с�憑Level:u3}{NewLine}銆愭秷鎭�憑Message:lj}{NewLine}{NewLine}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "logs/.log",
+ "rollingInterval": "Day",
+ "outputTemplate": "銆愭椂闂淬�憑Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}銆愮瓑绾с�憑Level:u3}{NewLine}銆愭秷鎭�憑Message:lj}{NewLine}{NewLine}"
+ }
+ }
+ ]
+ },
+ "AllowedHosts": "*",
+ "AppSettings": {
+ //"EnabledReferenceAssemblyScan": true, // 鍚敤妯″潡鍖栫▼搴忛泦鎵弿
+ //"ExternalAssemblies": [ "plugins/Covid19.Plugin" ] //鍔ㄦ�佸姞杞� dll
+ },
+ "LowCodeConfig": [
+ {
+ "Name": "ORM瀵硅薄",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Entity.cs.cshtml"
+ },
+ "Target": {
+ "File": "{ClassName}.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Entity\\"
+ }
+ },
+ {
+ "Name": "Service",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Service.cs.cshtml"
+ },
+ "Target": {
+ "File": "Service.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "IService",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\IService.cs.cshtml"
+ },
+ "Target": {
+ "File": "IService.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "Input",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Input.cs.cshtml"
+ },
+ "Target": {
+ "File": "{ClassName}Input.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+ }
+ },
+ {
+ "Name": "Output",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Output.cs.cshtml"
+ },
+ "Target": {
+ "File": "{ClassName}Output.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+ }
+ },
+ {
+ "Name": "Dto",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Dto.cs.cshtml"
+ },
+ "Target": {
+ "File": "{ClassName}Dto.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\Dto\\"
+ }
+ },
+ {
+ "Name": "Mapper",
+ "IsFrontend": false,
+ "Source": {
+ "File": "{HostPath}\\Template\\Mapper.cs.cshtml"
+ },
+ "Target": {
+ "File": "Mapper.cs",
+ "Dir": "{CodePath}\\{NameSpace}\\Service\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "index",
+ "IsFrontend": true,
+ "Source": {
+ "File": "{HostPath}\\Template\\index.vue.cshtml"
+ },
+ "Target": {
+ "File": "index.vue",
+ "Dir": "{FrontendPath}\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "addForm",
+ "IsFrontend": true,
+ "Source": {
+ "File": "{HostPath}\\Template\\addForm.vue.cshtml"
+ },
+ "Target": {
+ "File": "addForm.vue",
+ "Dir": "{FrontendPath}\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "editForm",
+ "IsFrontend": true,
+ "Source": {
+ "File": "{HostPath}\\Template\\editForm.vue.cshtml"
+ },
+ "Target": {
+ "File": "editForm.vue",
+ "Dir": "{FrontendPath}\\{ClassName}\\"
+ }
+ },
+ {
+ "Name": "Manage",
+ "IsFrontend": true,
+ "Source": {
+ "File": "{HostPath}\\Template\\Manage.js.cshtml"
+ },
+ "Target": {
+ "File": "{ClassName}Manage.js",
+ "Dir": "{ApiJsPath}\\"
+ }
+ }
+ ]
+
+
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf
new file mode 100644
index 0000000..7814778
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Font/font1559.ttf
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg
new file mode 100644
index 0000000..e77f91e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/1.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg
new file mode 100644
index 0000000..f5c9116
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/2.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg
new file mode 100644
index 0000000..851c312
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/3.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg
new file mode 100644
index 0000000..688e74f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/4.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg
new file mode 100644
index 0000000..07bbdbd
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/5.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg
new file mode 100644
index 0000000..1acf701
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/6.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg
new file mode 100644
index 0000000..9906864
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/7.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg
new file mode 100644
index 0000000..def81ae
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Captcha/Image/8.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx
new file mode 100644
index 0000000..90653fa
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/ExcelTemplateFile/CommonTemplate.xlsx
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png
new file mode 100644
index 0000000..5a014a8
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Image/logo.png
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml
new file mode 100644
index 0000000..d756972
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.cshtml
@@ -0,0 +1,29 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)杈撳嚭鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Dto
+ {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @(@column.FkColumnNetType) @(@column.FkEntityName)@(@column.FkColumnName) { get; set; }
+ @:
+}
+}
+@foreach (var column in Model.TableField){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @column.DtoNetType @column.ColumnName { get; set; }
+ @:
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm
new file mode 100644
index 0000000..db86114
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Dto.cs.vm
@@ -0,0 +1,28 @@
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)杈撳嚭鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Dto
+ {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @(@column.FkColumnNetType) @(@column.FkEntityName)@(@column.FkColumnName) { get; set; }
+ @:
+}
+}
+@foreach (var column in Model.TableField){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @column.DtoNetType @column.ColumnName { get; set; }
+ @:
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml
new file mode 100644
index 0000000..21e9516
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.cshtml
@@ -0,0 +1,27 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace @(@Model.NameSpace).Entity
+{
+ /// <summary>
+ /// @(@Model.TableDesc)
+ /// </summary>
+ [Table("@(@Model.TableName)")]
+ [Comment("@(@Model.TableDesc)")]
+ public class @(@Model.ClassName) : DEntityBase<long, @(@Model.DatabaseName)>
+ {
+
+@foreach (var column in Model.Fields){
+ @:/// <summary>
+ @:/// @(@column.ColumnComment)
+ @:/// </summary>
+ @:[Comment("@(@column.ColumnComment)")]@(@column.IsRequired == true ? "[Required]" : "")@(!string.IsNullOrEmpty(@column.DbParam) ? "[Column(TypeName = \"" + @column.DbParam + "\")]" : "")
+ @:public @(@column.NetType) @(@column.FieldName) { get; set; }
+ @:
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm
new file mode 100644
index 0000000..081a8d7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Entity.cs.vm
@@ -0,0 +1,26 @@
+锘縰sing System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Furion.DatabaseAccessor;
+using Admin.NET.Core;
+using Microsoft.EntityFrameworkCore;
+
+namespace @(@Model.NameSpace).Entity
+{
+ /// <summary>
+ /// @(@Model.TableDesc)
+ /// </summary>
+ [Table("@(@Model.TableName)")]
+ [Comment("@(@Model.TableDesc)")]
+ public class @(@Model.ClassName) : DEntityBase<long, @(@Model.DatabaseName)>
+ {
+
+@foreach (var column in Model.Fields){
+ @:/// <summary>
+ @:/// @(@column.ColumnComment)
+ @:/// </summary>
+ @:[Comment("@(@column.ColumnComment)")]@(@column.IsRequired == true ? "[Required]" : "")@(!string.IsNullOrEmpty(@column.DbParam) ? "[Column(TypeName = \"" + @column.DbParam + "\")]" : "")
+ @:public @(@column.NetType) @(@column.FieldName) { get; set; }
+ @:
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml
new file mode 100644
index 0000000..95175b7
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.cshtml
@@ -0,0 +1,32 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace @Model.NameSpace
+{
+ public interface I@(@Model.ClassName)Service
+ {
+ Task Add(Add@(@Model.ClassName)Input input);
+ Task Delete(Delete@(@Model.ClassName)Input input);
+ Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input);
+ Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input);
+ Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input);
+ Task Update(Update@(@Model.ClassName)Input input);
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:Task<dynamic> Fk@(@column.FkEntityName)List();
+
+ }
+ }
+
+ Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input);
+
+ Task<int> ImportExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType);
+
+ Task<IActionResult> DownloadExcelTemplate(string version);
+
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm
new file mode 100644
index 0000000..741f654
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/IService.cs.vm
@@ -0,0 +1,30 @@
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Http;
+
+namespace @Model.NameSpace
+{
+ public interface I@(@Model.ClassName)Service
+ {
+ Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input);
+ Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input);
+ Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input);
+ Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input);
+
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:Task<dynamic> Fk@(@column.FkEntityName)List();
+}
+}
+ @if( @Model.IsOnlyQuery != true){
+ @:Task Add(Add@(@Model.ClassName)Input input);
+ @:Task Update(Update@(@Model.ClassName)Input input);
+ @:Task Delete(Delete@(@Model.ClassName)Input input);
+
+ @:Task<int> ImportExcelAsync(IFormFile file);
+ @:IActionResult DownloadExcelTemplate(string version);
+ }
+ }
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml
new file mode 100644
index 0000000..593e2e9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.cshtml
@@ -0,0 +1,120 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+using System.ComponentModel.DataAnnotations;
+
+namespace @Model.NameSpace
+{
+
+ /// <summary>
+ /// @(@Model.BusName)鏌ヨ鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Search : PageInputBase
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+ if (@column.QueryType != "between"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+ @:
+ }
+ else
+ {
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual List<@(@column.NetType)>@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+ @:
+ }
+ }
+}
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class @(@Model.ClassName)SearchNonPage : PageInputNonPageBase
+ {
+@foreach (var column in Model.TableField){
+ if (@column.ColumnKey != "True"){
+ if((@column.NetType == "DateTimeOffset" || @column.NetType == "DateTime") && @column.QueryType == "between")
+ {
+ @:/// <summary>
+ @:/// @(@column.ColumnComment)寮�濮嬫椂闂�
+ @:/// </summary>
+ @:public virtual @(@column.NetType)? @(@column.ColumnName)Begin { get; set; }
+ @:
+ @:/// <summary>
+ @:/// @(@column.ColumnComment)缁撴潫鏃堕棿
+ @:/// </summary>
+ @:public virtual @(@column.NetType)? @(@column.ColumnName)End { get; set; }
+ @:
+ } else {
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual @(@column.NetType)? @column.ColumnName { get; set; }
+ @:
+ }
+ }
+}
+ }
+
+
+ /// <summary>
+ /// @(@Model.BusName)杈撳叆鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Input
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual @(@column.DtoNetType) @column.ColumnName { get; set; }
+ @:
+}
+}
+ }
+
+ public class Add@(@Model.ClassName)Input : @(@Model.ClassName)Input
+ {
+@foreach (var column in Model.TableField){
+if (@column.WhetherRequired == "Y"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+ @:public override @(@column.DtoNetType) @column.ColumnName { get; set; }
+ @:
+}
+}
+ }
+
+ public class Delete@(@Model.ClassName)Input : BaseId
+ {
+ }
+
+ public class Update@(@Model.ClassName)Input : @(@Model.ClassName)Input
+ {
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "True"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+ @:public @column.NetType @column.ColumnName { get; set; }
+ @:
+}
+}
+ }
+
+ public class Querye@(@Model.ClassName)Input : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm
new file mode 100644
index 0000000..035ad6e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Input.cs.vm
@@ -0,0 +1,118 @@
+using Admin.NET.Core;
+using Admin.NET.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace @Model.NameSpace
+{
+
+ /// <summary>
+ /// @(@Model.BusName)鏌ヨ鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Search : PageInputBase
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.QueryType != "between"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+ @:
+}
+ else
+ {
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual List<string> @column.ColumnName { get; set; }
+ @:
+ }
+}
+}
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)涓嶅垎椤垫煡璇㈠弬鏁�
+ /// </summary>
+ public class @(@Model.ClassName)SearchNonPage : PageInputNonPageBase
+ {
+@foreach (var column in Model.TableField){
+ if (@column.ColumnKey != "True"){
+
+ if (@column.QueryType != "between"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual @(@column.NetType)@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+ @:
+}
+
+ else {
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public virtual List<@(@column.NetType)>@(@column.NetTypeIsNullLableForQueryInput) @column.ColumnName { get; set; }
+ @:
+ }
+ }
+}
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)杈撳叆鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Input
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True" && @column.WhetherAddUpdate == "Y"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ if (@column.WhetherRequired == "Y"){
+ @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+ }
+ @:public virtual @(@column.DtoNetType)@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+ @:
+}
+}
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)鏂板鍙傛暟
+ /// </summary>
+ public class Add@(@Model.ClassName)Input : @(@Model.ClassName)Input
+ {
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)鍒犻櫎鍙傛暟
+ /// </summary>
+ public class Delete@(@Model.ClassName)Input : BaseId
+ {
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)鏇存柊鍙傛暟
+ /// </summary>
+ public class Update@(@Model.ClassName)Input : @(@Model.ClassName)Input
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:[Required(ErrorMessage = "@(@column.ColumnComment)涓嶈兘涓虹┖")]
+ @:public @column.NetType@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+ @:
+}
+}
+ }
+
+ /// <summary>
+ /// @(@Model.BusName)鑾峰彇鍗曚釜鍙傛暟
+ /// </summary>
+ public class Querye@(@Model.ClassName)Input : BaseId
+ {
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml
new file mode 100644
index 0000000..b880f9e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.cshtml
@@ -0,0 +1,128 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+import { axios } from '@@/utils/request'
+
+/**
+ * 鏌ヨ@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Page (parameter) {
+ return axios({
+ url: '/@Model.ClassName/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * @(@Model.BusName)鍒楄〃
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)List (parameter) {
+ return axios({
+ url: '/@Model.ClassName/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Add (parameter) {
+ return axios({
+ url: '/@Model.ClassName/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Edit (parameter) {
+ return axios({
+ url: '/@Model.ClassName/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Delete (parameter) {
+ return axios({
+ url: '/@Model.ClassName/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ToExcel (parameter) {
+ return axios({
+ url: '/@Model.ClassName/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ImportExcel (data, parameter) {
+ return axios({
+ url: '/@Model.ClassName/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/@Model.ClassName/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+@:
+@:/**
+@:* 鑾峰彇@(@column.FkEntityName)鍒楄〃
+@:* @@author @Model.AuthorName
+@:*/
+@:export function @(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+@: return axios({
+@: url: '/@Model.ClassName/fk@(@column.FkEntityName)',
+@: method: 'get'
+@: })
+@:}
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm
new file mode 100644
index 0000000..ff2608f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Manage.js.vm
@@ -0,0 +1,129 @@
+import { axios } from '@@/utils/request'
+
+/**
+ * 鏌ヨ@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Page (parameter) {
+ return axios({
+ url: '/@Model.ClassName/page',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * @(@Model.BusName)鍒楄〃
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)List (parameter) {
+ return axios({
+ url: '/@Model.ClassName/list',
+ method: 'get',
+ params: parameter
+ })
+}
+
+/**
+ * 娣诲姞@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Add (parameter) {
+ return axios({
+ url: '/@Model.ClassName/add',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 缂栬緫@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Edit (parameter) {
+ return axios({
+ url: '/@Model.ClassName/edit',
+ method: 'post',
+ data: parameter
+ })
+}
+
+/**
+ * 鍒犻櫎@(@Model.BusName)
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)Delete (parameter) {
+ return axios({
+ url: '/@Model.ClassName/delete',
+ method: 'post',
+ data: parameter
+ })
+}
+
+
+/**
+ * 瀵煎嚭@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ToExcel (parameter) {
+ return axios({
+ url: '/@Model.ClassName/toExcel',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+/**
+ * 瀵煎叆@(@Model.BusName)鐨凟xcel鏂囦欢
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)ImportExcel (data, parameter) {
+ return axios({
+ url: '/@Model.ClassName/importExcel',
+ method: 'post',
+ data: data,
+ params: parameter
+
+ })
+}
+
+
+/**
+ * 涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ *
+ * @@author @Model.AuthorName
+ */
+export function @(@Model.ClassName)DownloadExcelTemplate(parameter) {
+ return axios({
+ url: '/@Model.ClassName/downloadExcelTemplate',
+ method: 'get',
+ params: parameter,
+ responseType: 'blob'
+ })
+}
+
+
+
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+@:
+@:/**
+@:* 鑾峰彇@(@column.FkEntityName)鍒楄〃
+@:* @@author @Model.AuthorName
+@:*/
+@:export function @(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+@: return axios({
+@: url: '/@Model.ClassName/fk@(@column.FkEntityName)',
+@: method: 'get'
+@: })
+@:}
+}
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml
new file mode 100644
index 0000000..7019be5
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.cshtml
@@ -0,0 +1,35 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Mapster;
+using Admin.NET.Core;
+
+namespace @Model.NameSpace
+{
+ public class @(@Model.ClassName)Mapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<Add@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+ ;
+ config.ForType<Update@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+ ;
+ config.ForType<@(@Model.ClassName), @(@Model.ClassName)Output>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName)_Str, src => src.@(@column.ColumnName))
+ @:.Map(dest => dest.@(@column.ColumnName), src => new Front_FileDto())
+}
+}
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm
new file mode 100644
index 0000000..1194a2d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Mapper.cs.vm
@@ -0,0 +1,34 @@
+锘縰sing Mapster;
+using Admin.NET.Core;
+
+namespace @Model.NameSpace
+{
+ public class @(@Model.ClassName)Mapper : IRegister
+ {
+ public void Register(TypeAdapterConfig config)
+ {
+ config.ForType<Add@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+ ;
+ config.ForType<Update@(@Model.ClassName)Input, @Model.ClassName>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName), src => string.Join(',', src.@(@column.ColumnName).Select(x => x.Url.GetFileId()).ToList()))
+}
+}
+ ;
+ config.ForType<@(@Model.ClassName), @(@Model.ClassName)Output>()
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:.Map(dest => dest.@(@column.ColumnName)_Str, src => src.@(@column.ColumnName))
+ @:.Map(dest => dest.@(@column.ColumnName), src => new Front_FileDto())
+}
+}
+ ;
+ }
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml
new file mode 100644
index 0000000..ecf2053
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.cshtml
@@ -0,0 +1,35 @@
+锘緻model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+using Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)杈撳嚭鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Output
+ {
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public ICollection<Front_FileDto> @column.ColumnName { get; set; }
+ @:
+
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public String @(@column.ColumnName)_Str { get; set; }
+ @:
+}else{
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @column.NetType @column.ColumnName { get; set; }
+ @:
+}
+
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm
new file mode 100644
index 0000000..f7c43d0
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Output.cs.vm
@@ -0,0 +1,34 @@
+锘縰sing Admin.NET.Core.Util.LowCode.Dto;
+using System;
+
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)杈撳嚭鍙傛暟
+ /// </summary>
+ public class @(@Model.ClassName)Output
+ {
+@foreach (var column in Model.TableField){
+if(@column.DtoNetType == "Front_FileDto[]"){
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public ICollection<Front_FileDto>@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+ @:
+
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public String @(@column.ColumnName)_Str { get; set; }
+ @:
+}else{
+ @:/// <summary>
+ @:/// @column.ColumnComment
+ @:/// </summary>
+ @:public @column.NetType@(@column.NetTypeIsNullLableForAddEditOutParam) @column.ColumnName { get; set; }
+ @:
+}
+
+}
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml
new file mode 100644
index 0000000..f97721e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.cshtml
@@ -0,0 +1,558 @@
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("@Model.ModuleName", Name = "@Model.ClassName", Order = 100)]
+ [Route("api/[Controller]")]
+ public class @(@Model.ClassName)Service : I@(@Model.ClassName)Service, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> _@(@Model.CamelizeClassName)Rep;
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:private readonly IRepository<@(@column.FkEntityName)> _@(@column.LowerFkEntityName)Rep;
+}
+}
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+@if(@Model.IsFile)
+{
+ @:private readonly IRepository<SysFile> _sysFileInfoRep;
+}
+
+ public @(@Model.ClassName)Service(
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:IRepository<@(@column.FkEntityName)> @(@column.LowerFkEntityName)Rep,
+}
+}
+ IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> @(@Model.CamelizeClassName)Rep
+@if(@Model.IsFile)
+{
+ @:,IRepository<SysFile> sysFileInfoRep,
+}
+ ,IRepository<SysDictType, @(@Model.DatabaseName)> sysDictTypeRep
+ ,IRepository<SysDictData, @(@Model.DatabaseName)> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:_@(@column.LowerFkEntityName)Rep = @(@column.LowerFkEntityName)Rep;
+}
+}
+ _@(@Model.CamelizeClassName)Rep = @(@Model.CamelizeClassName)Rep;
+@if(@Model.IsFile)
+{
+ @:_sysFileInfoRep = sysFileInfoRep;
+}
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input)
+ {
+ var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField){
+if (@column.QueryWhether == "Y"){
+if (@column.NetType == "string"){
+if (@column.QueryType == "like"){
+ @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{input.@(@column.ColumnName).Trim()}%"))
+} else {
+ @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+} else {
+if (@column.EffectType == "fk"){
+ @:.Where(input.@column.ColumnName > 0, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+
+ if (@column.EffectType == "datepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+ }
+ else if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+ }
+
+else {
+ @:.Where(input.@column.ColumnName != null, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+}
+}
+}
+ .OrderBy(PageInputOrder.OrderBuilder<@(@Model.ClassName)Search>(input))
+ .ProjectToType<@(@Model.ClassName)Output>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+@if(@Model.IsFile)
+{
+ @:@(@Model.CamelizeClassName)s.Rows.ToList().ForEach(item =>
+ @:{
+foreach (var column in Model.FileTableField){
+ @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+}
+ @:});
+}
+ return @(@Model.CamelizeClassName)s;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇(@Model.BusName)鍒楄〃
+ /// </summary>
+ /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+ /// <returns>(@Model.BusName)瀹炰緥鍒楄〃</returns>
+ [Description("@Model.ClassName/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+ {
+@foreach (var column in Model.TableField)
+{
+ if (@column.QueryWhether == "Y")
+ {
+
+ if(@column.NetType == "string" && @column.QueryType != "isNotNull"){
+ @:var p@(@column.ColumnName) = input.@(@column.ColumnName)?.Trim() ?? "";
+ } else if(@column.QueryType != "isNotNull"){
+ @:var p@(@column.ColumnName) = input.@(@column.ColumnName);
+ }
+ }
+}
+ var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField)
+{
+ if (@column.QueryWhether == "Y")
+ {
+ if(@column.QueryType == "isNotNull")
+ {
+ @:.Where(u => u.@(@column.ColumnName) != null)
+ }
+ else if (@column.NetType == "string")
+ {
+ if (@column.QueryType == "like")
+ {
+ @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{p@(@column.ColumnName)}%"))
+ } else
+ {
+ @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ }
+ } else if (@column.EffectType == "datepicker"&&@column.QueryType == "between")
+ {
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+
+ } else if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+ }else if (@column.EffectType == "fk")
+ {
+ @:.Where(p@(@column.ColumnName) > 0, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ } else {
+ @:.Where(p@(@column.ColumnName) != null, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ }
+ }
+}
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<@(@Model.ClassName)Output>()
+ .ToListAsync();
+@if(@Model.IsFile)
+{
+ @:@(@Model.CamelizeClassName)s.ForEach(item =>
+ @:{
+ foreach (var column in Model.FileTableField){
+ @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+ }
+ @:});
+}
+ return @(@Model.CamelizeClassName)s;
+ }
+
+
+ /// <summary>
+ /// 澧炲姞@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/add")]
+ [HttpPost("add")]
+ public async Task Add(Add@(@Model.ClassName)Input input)
+ {
+ var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+ //楠岃瘉
+ await CheckExisit(@(@Model.CamelizeClassName));
+ await _@(@Model.CamelizeClassName)Rep.InsertAsync(@(@Model.CamelizeClassName));
+ }
+
+ /// <summary>
+ /// 鍒犻櫎@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(Delete@(@Model.ClassName)Input input)
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @:var @(@Model.CamelizeClassName) = await _@(@Model.CamelizeClassName)Rep.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName));
+}
+}
+ await _@(@Model.CamelizeClassName)Rep.DeleteAsync(@(@Model.CamelizeClassName));
+ }
+
+ /// <summary>
+ /// 鏇存柊@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/edit")]
+ [HttpPost("edit")]
+ public async Task Update(Update@(@Model.ClassName)Input input)
+ {
+ var isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+ //楠岃瘉
+ await CheckExisit(@(@Model.CamelizeClassName),true);
+ await _@(@Model.CamelizeClassName)Rep.UpdateAsync(@(@Model.CamelizeClassName),ignoreNullValues:true);
+ }
+
+ /// <summary>
+ /// 鑾峰彇@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/detail")]
+ [HttpGet("detail")]
+ public async Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input)
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @:return (await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName))).Adapt<@(@Model.ClassName)Output>();
+}
+}
+ }
+
+ /// <summary>
+ /// 鑾峰彇@(@Model.BusName)鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/list")]
+ [HttpGet("list")]
+ public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
+ {
+ return await _@(@Model.CamelizeClassName)Rep.DetachedEntities.ProjectToType<@(@Model.ClassName)Output>().ToListAsync();
+ }
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:
+ @:/// <summary>
+ @:/// 鑾峰彇@(@column.FkEntityName)鍒楄〃
+ @:/// </summary>
+ @:/// <returns></returns>
+ @:[HttpGet("fk@(@column.FkEntityName)")]
+ @:public async Task<dynamic> Fk@(@column.FkEntityName)List()
+ @:{
+ @:var list = await _@(@column.LowerFkEntityName)Rep.DetachedEntities.ToListAsync();
+ @:return list.Select(e => new {Code = e.Id, Name = e.@(@column.FkColumnName)});
+ @:}
+}
+}
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆@(@Model.BusName)鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <param name="importExcelType">Excel瀵煎叆鏂瑰紡</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [HttpPost("importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file, [FromQuery] ImportExcelType importExcelType)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _@(@Model.CamelizeClassName)Rep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<@(@Model.ClassName)>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<@(@Model.ClassName)>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+ @Model.ImportExcelCustomizationContent
+
+ details.Add(addItem);
+ }
+ //楠岃瘉
+ await CheckExisitForImport(details);
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("@Model.ClassName/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\@Model.ClassName{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(@Model.BusName).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ /// <summary>
+ /// 鏍规嵁@(@Model.BusName)鏌ヨ鍙傛暟瀵煎嚭Excel
+ /// </summary>
+ /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+ /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+ [Description("@Model.ClassName/toExcel")]
+ [HttpGet("toExcel")]
+ public async Task<IActionResult> ToExcelAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+ {
+ var @(@Model.CamelizeClassName)List = await ListNonPageAsync(input);
+ MemoryStream ms = new();
+ DataConvertUtil.ToExcelData(@(@Model.CamelizeClassName)List, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+ out List<List<object>> data, out string sheetName);
+ var excelTemplate = await _sysExcelTemplateService.GetByAppNameAndClassNameAndVersionAsync("@(@Model.ClassName)", "v1");
+ if (excelTemplate != null)
+ {
+ ExcelUtil.ToExcel(excelTemplate.TemplateFileName, headers, data, sheetName, excelTemplate.HeadStartLine, excelTemplate.DataStartLine, ms);
+ }
+ else
+ {
+ ExcelUtil.ToExcel(headers, data, sheetName, ms);
+ }
+ ms.Position = 0;
+ var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+
+
+
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( @(@Model.ClassName) input,bool isEdit=false)
+ {
+ bool isExist = false;
+
+ @{
+ var columnIndex = 0;
+ }
+ if (!isEdit)//鏂板
+ {
+
+
+ @foreach (var column in Model.TableField)
+ {
+
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ columnIndex++;
+ if (@columnIndex == 1)
+ {
+ @://鏁版嵁鏄惁閲嶅
+ @:isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ else
+ {
+ @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+
+ }
+
+
+ }
+ @if(columnIndex>0){
+ @:,false);
+ @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+ else{
+ @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+ }
+
+
+
+
+ }
+ else//缂栬緫
+ {
+
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ columnIndex++;
+ if (@columnIndex == 1)
+ {
+ @://鏁版嵁鏄惁閲嶅
+ @: isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id
+ }
+ else
+ {
+ @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ }
+
+ @if(columnIndex>0)
+ {
+ @:,false);
+ @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }
+ else{
+ @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+ }
+
+ }
+
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisit(List<@(@Model.ClassName)> inputs)
+ {
+ //瀵煎叆鐨勯泦鍚堟槸鍚﹀凡瀛樺湪鐩稿悓鏁版嵁
+ @{
+ var index = 0;
+ bool isCheck = false;
+ string message = string.Empty;
+ }
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ isCheck = true;
+ message += "," + @column.ColumnComment + "[{item." + @column.ColumnName + "}]";
+ }
+ }
+ @if (isCheck)
+ {
+ @:if (inputs?.Count <= 0)
+ @:{
+ @: throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ @:}
+
+
+ @://鏁版嵁鏄惁閲嶅
+ @:var existExcelItem = inputs.GroupBy(g => new {
+ }
+ @foreach (var column in Model.TableField)
+ {
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ index++;
+ if (@index == 1)
+ {
+ @:g.@(@column.ColumnName)
+ }
+ else
+ {
+ @:,g.@(@column.ColumnName)
+ }
+
+ }
+ }
+ @if (isCheck)
+ {
+ @:})
+ @:.Where(g => g.Count() > 1)
+ @:.Select(s => new {
+ }
+ @foreach (var column in Model.TableField)
+ {
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ index++;
+ if (@index == 1)
+ {
+ @:g.@(@column.ColumnName)
+ }
+ else
+ {
+ @:,g.@(@column.ColumnName)
+ }
+
+ }
+ }
+ @if (isCheck)
+ {
+ @:}).FirstOrDefault();
+ @:if (existExcelItem != null)
+ @:{
+ @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑锛寋message}宸插瓨鍦�");
+ @:}
+ }
+
+
+
+
+
+
+
+
+
+ }
+
+
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm
new file mode 100644
index 0000000..a42d87e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm
@@ -0,0 +1,581 @@
+using Furion.DatabaseAccessor;
+using Furion.DatabaseAccessor.Extensions;
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Furion.FriendlyException;
+using Admin.NET.Core;
+using Mapster;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using Microsoft.AspNetCore.Http;
+using System.Text;
+using System.Web;
+using System.ComponentModel;
+using System.Data;
+namespace @Model.NameSpace
+{
+ /// <summary>
+ /// @(@Model.BusName)鏈嶅姟
+ /// </summary>
+ [ApiDescriptionSettings("@Model.ModuleName", Name = "@Model.ClassName", Order = 100)]
+ [Route("api/[Controller]")]
+ public class @(@Model.ClassName)Service : I@(@Model.ClassName)Service, IDynamicApiController, ITransient
+ {
+ private readonly IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> _@(@Model.CamelizeClassName)Rep;
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:private readonly IRepository<@(@column.FkEntityName)> _@(@column.LowerFkEntityName)Rep;
+}
+}
+ private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
+ private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+ private readonly ISysExcelTemplateService _sysExcelTemplateService;
+ private readonly static object _lock = new();
+@if(@Model.IsFile)
+{
+ @:private readonly IRepository<SysFile> _sysFileInfoRep;
+}
+
+ public @(@Model.ClassName)Service(
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:IRepository<@(@column.FkEntityName)> @(@column.LowerFkEntityName)Rep,
+}
+}
+ IRepository<@(@Model.ClassName),@(@Model.DatabaseName)> @(@Model.CamelizeClassName)Rep
+@if(@Model.IsFile)
+{
+ @:,IRepository<SysFile> sysFileInfoRep,
+}
+ ,IRepository<SysDictType, @(@Model.DatabaseName)> sysDictTypeRep
+ ,IRepository<SysDictData, @(@Model.DatabaseName)> sysDictDataRep
+ ,ISysExcelTemplateService sysExcelTemplateService
+ )
+ {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:_@(@column.LowerFkEntityName)Rep = @(@column.LowerFkEntityName)Rep;
+}
+}
+ _@(@Model.CamelizeClassName)Rep = @(@Model.CamelizeClassName)Rep;
+@if(@Model.IsFile)
+{
+ @:_sysFileInfoRep = sysFileInfoRep;
+}
+ _sysDictTypeRep = sysDictTypeRep;
+ _sysDictDataRep = sysDictDataRep;
+ _sysExcelTemplateService = sysExcelTemplateService;
+ }
+
+ /// <summary>
+ /// 鍒嗛〉鏌ヨ@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/page")]
+ [HttpGet("page")]
+ public async Task<PageResult<@(@Model.ClassName)Output>> Page([FromQuery] @(@Model.ClassName)Search input)
+ {
+ var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField){
+if (@column.QueryWhether == "Y"){
+if (@column.NetType == "string"){
+if (@column.QueryType == "like"){
+ @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{input.@(@column.ColumnName).Trim()}%"))
+} else {
+ @:.Where(!string.IsNullOrEmpty(input.@column.ColumnName), u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+} else {
+if (@column.EffectType == "fk"){
+ @:.Where(input.@column.ColumnName > 0, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+
+ if (@column.EffectType == "datepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+ }
+ else if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+ }
+
+else {
+ @:.Where(input.@column.ColumnName != null, u => u.@(@column.ColumnName) @column.QueryType input.@(@column.ColumnName))
+}
+}
+}
+}
+ .OrderBy(PageInputOrder.OrderBuilder<@(@Model.ClassName)Search>(input))
+ .ProjectToType<@(@Model.ClassName)Output>()
+ .ToADPagedListAsync(input.PageNo, input.PageSize);
+@if(@Model.IsFile)
+{
+ @:@(@Model.CamelizeClassName)s.Rows.ToList().ForEach(item =>
+ @:{
+foreach (var column in Model.FileTableField){
+ @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+}
+ @:});
+}
+ return @(@Model.CamelizeClassName)s;
+ }
+
+ /// <summary>
+ /// 涓嶅垎椤垫煡璇(@Model.BusName)鍒楄〃
+ /// </summary>
+ /// <param name="input">@(@Model.BusName)鏌ヨ鍙傛暟</param>
+ /// <returns>(@Model.BusName)瀹炰緥鍒楄〃</returns>
+ [Description("@Model.ClassName/listNonPage")]
+ [HttpGet("listNonPage")]
+ public async Task<List<@(@Model.ClassName)Output>> ListNonPageAsync([FromQuery] @(@Model.ClassName)SearchNonPage input)
+ {
+@foreach (var column in Model.TableField)
+{
+ if (@column.QueryWhether == "Y")
+ {
+
+ if(@column.NetType == "string" && @column.QueryType != "isNotNull"){
+ @:var p@(@column.ColumnName) = input.@(@column.ColumnName)?.Trim() ?? "";
+ } else if(@column.QueryType != "isNotNull"){
+ @:var p@(@column.ColumnName) = input.@(@column.ColumnName);
+ }
+ }
+}
+ var @(@Model.CamelizeClassName)s = await _@(@Model.CamelizeClassName)Rep.DetachedEntities
+@foreach (var column in Model.TableField)
+{
+ if (@column.QueryWhether == "Y")
+ {
+ if(@column.QueryType == "isNotNull")
+ {
+ @:.Where(u => u.@(@column.ColumnName) != null)
+ }
+ else if (@column.NetType == "string")
+ {
+ if (@column.QueryType == "like")
+ {
+ @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => EF.Functions.Like(u.@(@column.ColumnName), $"%{p@(@column.ColumnName)}%"))
+ } else
+ {
+ @:.Where(!string.IsNullOrEmpty(p@(@column.ColumnName)), u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ }
+ } else if (@column.EffectType == "datepicker"&&@column.QueryType == "between")
+ {
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]+" 00:00:00") && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]+" 23:59:59"))
+
+ } else if (@column.EffectType == "datetimepicker" && @column.QueryType == "between"){
+
+ @:.Where(input.@column.ColumnName!=null, u => u.@(@column.ColumnName)>= Convert.ToDateTime(input.@(@column.ColumnName)[0]) && u.@(@column.ColumnName)<= Convert.ToDateTime(input.@(@column.ColumnName)[1]))
+ }else if (@column.EffectType == "fk")
+ {
+ @:.Where(p@(@column.ColumnName) > 0, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ } else {
+ @:.Where(p@(@column.ColumnName) != null, u => u.@(@column.ColumnName) @column.QueryType p@(@column.ColumnName))
+ }
+ }
+}
+ .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
+ .ProjectToType<@(@Model.ClassName)Output>()
+ .ToListAsync();
+@if(@Model.IsFile)
+{
+ @:@(@Model.CamelizeClassName)s.ForEach(item =>
+ @:{
+ foreach (var column in Model.FileTableField){
+ @:item.@(@column.ColumnName) = item.@(@column.ColumnName)_Str.GetFiles(_sysFileInfoRep);
+ }
+ @:});
+}
+ return @(@Model.CamelizeClassName)s;
+ }
+
+ /// <summary>
+ /// 鑾峰彇@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/detail")]
+ [HttpGet("detail")]
+ public async Task<@(@Model.ClassName)Output> Get([FromQuery] Querye@(@Model.ClassName)Input input)
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @:return (await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName))).Adapt<@(@Model.ClassName)Output>();
+}else{
+ if (@Model.IsOnlyQuery == true){
+ @:return null;
+ }
+}
+}
+ }
+
+ /// <summary>
+ /// 鑾峰彇@(@Model.BusName)鍒楄〃
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/list")]
+ [HttpGet("list")]
+ public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
+ {
+ return await _@(@Model.CamelizeClassName)Rep.DetachedEntities.ProjectToType<@(@Model.ClassName)Output>().ToListAsync();
+ }
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:
+ @:/// <summary>
+ @:/// 鑾峰彇@(@column.FkEntityName)鍒楄〃
+ @:/// </summary>
+ @:/// <returns></returns>
+ @:[HttpGet("fk@(@column.FkEntityName)")]
+ @:public async Task<dynamic> Fk@(@column.FkEntityName)List()
+ @:{
+ @:var list = await _@(@column.LowerFkEntityName)Rep.DetachedEntities.ToListAsync();
+ @:return list.Select(e => new {Code = e.Id, Name = e.@(@column.FkColumnName)});
+ @:}
+}
+}
+
+ #region 澧炪�佸垹銆佹敼
+
+ /// <summary>
+ /// 澧炲姞@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/add")]
+ [HttpPost("add")]
+ public async Task Add(Add@(@Model.ClassName)Input input)
+ {
+ var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+ //楠岃瘉
+ await CheckExisit(@(@Model.CamelizeClassName));
+
+ @(@Model.CamelizeClassName).CreatedUserId = @(@Model.CamelizeClassName).UpdatedUserId = SysHelper.GetUserId();
+ @(@Model.CamelizeClassName).CreatedUserName = @(@Model.CamelizeClassName).UpdatedUserName = SysHelper.GetUserName();
+ @(@Model.CamelizeClassName).CreatedTime = @(@Model.CamelizeClassName).UpdatedTime = SysHelper.GetNowTime();
+ await _@(@Model.CamelizeClassName)Rep.InsertAsync(@(@Model.CamelizeClassName));
+ }
+
+ /// <summary>
+ /// 鍒犻櫎@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/delete")]
+ [HttpPost("delete")]
+ public async Task Delete(Delete@(@Model.ClassName)Input input)
+ {
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @:var @(@Model.CamelizeClassName) = await _@(@Model.CamelizeClassName)Rep.FirstOrDefaultAsync(u => u.@(@column.ColumnName) == input.@(@column.ColumnName));
+ @:await _@(@Model.CamelizeClassName)Rep.DeleteAsync(@(@Model.CamelizeClassName));
+}
+}
+
+ }
+
+ /// <summary>
+ /// 鏇存柊@(@Model.BusName)
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [Description("@Model.ClassName/edit")]
+ [HttpPost("edit")]
+ public async Task Update(Update@(@Model.ClassName)Input input)
+ {
+ var isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u => u.Id == input.Id, false);
+ if (!isExist) throw Oops.Oh(ErrorCode.D1002);
+
+ var @(@Model.CamelizeClassName) = input.Adapt<@(@Model.ClassName)>();
+ //楠岃瘉
+ await CheckExisit(@(@Model.CamelizeClassName),true);
+
+ @(@Model.CamelizeClassName).UpdatedUserId = SysHelper.GetUserId();
+ @(@Model.CamelizeClassName).UpdatedUserName = SysHelper.GetUserName();
+ @(@Model.CamelizeClassName).UpdatedTime = SysHelper.GetNowTime();
+ await _@(@Model.CamelizeClassName)Rep.UpdateAsync(@(@Model.CamelizeClassName),ignoreNullValues:true);
+ }
+
+ #endregion
+
+ #region 瀵煎叆
+
+ /// <summary>
+ /// Excel妯℃澘瀵煎叆@(@Model.BusName)鍔熻兘
+ /// </summary>
+ /// <param name="file">Excel妯℃澘鏂囦欢</param>
+ /// <returns>瀵煎叆鐨勮褰曟暟</returns>
+ [Description("@Model.ClassName/importExcel")]
+ [HttpPost("importExcel")]
+ public async Task<int> ImportExcelAsync(IFormFile file)
+ {
+ int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
+ int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
+
+ DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
+ var addList =await CommonImport(importDataTable, _DataStartLine);
+
+ lock (_lock)
+ {
+ _@(@Model.CamelizeClassName)Rep.InsertAsync(addList);
+
+ }
+ await Task.CompletedTask;
+ return addList.Count;
+ }
+
+ /// <summary>
+ /// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
+ /// </summary>
+ /// <param name="dataTable"></param>
+ /// <param name="dataStartLine">妯$増鍒楀悕寮�濮嬭</param>
+ /// <returns></returns>
+ private async Task<List<@(@Model.ClassName)>> CommonImport(DataTable dataTable, int dataStartLine)
+ {
+
+ var details = new List<@(@Model.ClassName)>();
+ int index = dataStartLine;//妯$増鍒楀悕寮�濮嬭
+ foreach (System.Data.DataRow row in dataTable.Rows)
+ {
+ index++;
+
+ //瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
+ @Model.ImportExcelCustomizationContent
+
+ details.Add(addItem);
+ }
+ //楠岄噸
+ await CheckExisitForImport(details);
+
+ return details;
+ }
+
+ /// <summary>
+ /// 鏍规嵁鐗堟湰涓嬭浇@(@Model.BusName)鐨凟xcel瀵煎叆妯℃澘
+ /// </summary>
+ /// <param name="version">妯℃澘鐗堟湰</param>
+ /// <returns>涓嬭浇鐨勬ā鏉挎枃浠�</returns>
+ [Description("@Model.ClassName/downloadExcelTemplate")]
+ [HttpGet("downloadExcelTemplate")]
+ public IActionResult DownloadExcelTemplate([FromQuery] string version)
+ {
+ string _path = TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増璺緞 + $"\\@Model.ClassName{TemplateConst.EXCEL_TEMPLATEFILE_瀵煎叆妯$増鍚嶇О鍚庣紑}.xlsx";
+ var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(@Model.BusName).xlsx", Encoding.GetEncoding("UTF-8"));
+ return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
+ }
+
+ #endregion
+
+ #region 绉佹湁鏂规硶
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-鏁版嵁搴�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <param name="isEdit"></param>
+ /// <returns></returns>
+ private async Task CheckExisit( @(@Model.ClassName) input,bool isEdit=false)
+ {
+
+
+ @{
+ var columnIndex = 0;
+ }
+
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ columnIndex++;
+ if (@columnIndex == 1)
+ {
+ @:bool isExist = false;
+ @:if (!isEdit)//鏂板
+ @:{
+ @://鏁版嵁鏄惁瀛樺湪閲嶅
+ @:isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u =>
+ @:u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ else
+ {
+ @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ }
+ }
+ @if(columnIndex>0){
+ @:,false);
+ @:}
+ @:else//缂栬緫
+ @:{
+ }
+
+ @{
+ columnIndex=0;//鍒濆鍖栫储寮� 涓嬮潰缂栬緫鐨勯�昏緫浣跨敤
+ }
+
+
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ columnIndex++;
+ if (@columnIndex == 1)
+ {
+ @://褰撳墠缂栬緫鏁版嵁浠ュ鏄惁瀛樺湪閲嶅
+ @: isExist = await _@(@Model.CamelizeClassName)Rep.AnyAsync(u =>
+ @:u.Id != input.Id
+ @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ else
+ {
+ @:&&u.@(@column.ColumnName).Equals(input.@column.ColumnName)
+ }
+ }
+ }
+ @if(columnIndex>0)
+ {
+ @:,false);
+ @:}
+ }
+
+
+
+ @if(columnIndex>0){
+ @:if (isExist) throw Oops.Oh(ErrorCode.E0001);
+ }else{
+ @://娌℃湁閰嶇疆鑱斿悎涓婚敭锛屼笉闇�瑕侀獙閲�
+ }
+ }
+
+ /// <summary>
+ /// 鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁鏄惁宸插瓨鍦�-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<@(@Model.ClassName)> inputs)
+ {
+ //鏍规嵁鑱斿悎涓婚敭楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ @{
+ var index = 0;
+ bool isCheck = false;
+ string message = string.Empty;
+ }
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ isCheck = true;
+ message += "," + @column.ColumnComment + "[{item." + @column.ColumnName + "}]";
+ }
+ }
+ @if (isCheck)
+ {
+ @:if (inputs?.Count <= 0)
+ @:{
+ @: throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
+ @:}
+
+
+ @://鏁版嵁鏄惁閲嶅
+ @:var existExcelItem = inputs.GroupBy(g => new {
+ }
+ @foreach (var column in Model.TableField)
+ {
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ index++;
+ if (@index == 1)
+ {
+ @:g.@(@column.ColumnName)
+ }
+ else
+ {
+ @:,g.@(@column.ColumnName)
+ }
+
+ }
+ }
+ @if (isCheck)
+ {
+ index=0;
+ @:})
+ @:.Where(g => g.Count() > 1)
+ @:.Select(s => new {
+ }
+ @foreach (var column in Model.TableField)
+ {
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ index++;
+ if (@index == 1)
+ {
+ @:s.Key.@(@column.ColumnName)
+ }
+ else
+ {
+ @:,s.Key.@(@column.ColumnName)
+ }
+
+ }
+ }
+ @if (isCheck)
+ {
+ @:}).FirstOrDefault();
+ @:if (existExcelItem != null)
+ @:{
+ @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:throw Oops.Oh($"瀵煎叆鐨勮〃鏍间腑@(@message)宸插瓨鍦�");
+ @:}
+ }
+
+
+
+
+ @if (isCheck)
+ { @://鏍规嵁鑱斿悎涓婚敭楠岃瘉鏁版嵁搴撲腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+ @:var existDBItem = await _@(@Model.CamelizeClassName)Rep.DetachedEntities.FirstOrDefaultAsync(w=>
+ @: inputs.Select(s=>""
+ }
+ @foreach (var column in Model.TableField)
+ {
+
+ if (@column.WhetherUnionKey == "Y")
+ {
+ @: +s.@(@column.ColumnName)
+
+ }
+ }
+ @if (isCheck)
+ {
+ @:)
+ @:.Contains(""
+ }
+ @foreach (var column in Model.TableField)
+ {
+ if (@column.WhetherUnionKey == "Y")
+ {
+ @: +w.@(@column.ColumnName)
+
+ }
+ }
+ @if (isCheck)
+ {
+ @: ));
+ @: if (existDBItem != null)
+ @:{
+ @:var @(@Model.CamelizeClassName) = existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:var item= existExcelItem.Adapt<@(@Model.ClassName)>();
+ @:throw Oops.Oh($"绯荤粺涓瑻(@message)宸插瓨鍦�");
+ @:}
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml
new file mode 100644
index 0000000..01ac49d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.cshtml
@@ -0,0 +1,284 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+ <a-modal
+ title="鏂板@(@Model.BusName)"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @@ok="handleSubmit"
+ @@cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+ <a-form :form="form">
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+} else {
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+} else {
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+ @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+ @:</a-form-item>
+}
+}
+}
+ </a-form>
+}else{
+ <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+}
+}
+ @(@Model.ClassName)Add
+ } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+@if(@Model.LowCodeId != null){
+ @:import 'k-form-design/styles/k-form-design.less'
+ @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+}
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:@(@column.ColumnName)Data: [],
+}
+}
+if (@column.EffectType == "datepicker"){
+ @:@(@column.ColumnName)DateString: '',
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@column.FkEntityName)Data: [],
+}
+}
+ visible: false,
+ confirmLoading: false,
+@if(@Model.LowCodeId == null){
+ @:form: this.$form.createForm(this)
+}else{
+ @:dynamicData: @Model.DynamicData,
+ @:formDesign: @Model.FormDesign
+}
+ }
+ },
+ methods: {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+ @:this.@(@column.FkEntityName)Data = res.data
+ @:})
+ @:},
+}
+}
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+ @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+
+ });
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:const @(@column.ColumnName)Option = this.$options
+ @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+@if(@Model.LowCodeId == null){
+ @:const { form: { validateFields } } = this
+ @:this.confirmLoading = true
+ @:validateFields((errors, values) => {
+ @:if (!errors) {
+ @:for (const key in values) {
+ @:if (typeof (values[key]) === 'object') {
+ @:values[key] = JSON.stringify(values[key])
+ @:}
+ @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+ @:@(@Model.ClassName)Add(values).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('鏂板鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', values)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+ @:} else {
+ @:this.confirmLoading = false
+ @:}
+ @:})
+}else{
+ @:this.$refs.kfb.getData().then(values => {
+ @:let data = { ...values };
+ @:@(@Model.ClassName)Add(data).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('鏂板鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', values)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+ @:});
+}
+ },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:onChange@(@column.ColumnName)(date, dateString) {
+ @:this.@(@column.ColumnName)DateString = dateString
+ @:},
+}
+}
+}
+ handleCancel () {
+@if(@Model.LowCodeId == null){
+ @:this.form.resetFields()
+}else{
+ @:this.$refs.kfb.reset()
+}
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm
new file mode 100644
index 0000000..c89c74c
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/addForm.vue.vm
@@ -0,0 +1,294 @@
+<template>
+ <a-modal
+ title="鏂板@(@Model.BusName)"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @@ok="handleSubmit"
+ @@cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+ <a-form :form="form">
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+} else {
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+} else {
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+ @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+
+if (@column.EffectType == "datetimepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+}
+}
+
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+ @:</a-form-item>
+}
+}
+}
+ </a-form>
+}else{
+ <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import moment from 'moment'
+ import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+ }
+ }
+ @(@Model.ClassName)Add
+ } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+ @if(@Model.LowCodeId != null){
+ @:import 'k-form-design/styles/k-form-design.less'
+ @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+ }
+ export default {
+ data () {
+ return {
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ @foreach (var column in Model.TableField){
+ if (@column.WhetherAddUpdate == "Y"){
+ if (@column.DictTypeCode != ""){
+ if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:@(@column.ColumnName)Data: [],
+ }
+ }
+ if (@column.EffectType == "datepicker"){
+ @:@(@column.ColumnName)DateString: '',
+ }
+ }
+ }
+ @foreach (var column in Model.TableField){
+ if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@column.FkEntityName)Data: [],
+}
+}
+ visible: false,
+ confirmLoading: false,
+@if(@Model.LowCodeId == null){
+ @:form: this.$form.createForm(this)
+}else{
+ @:dynamicData: @Model.DynamicData,
+ @:formDesign: @Model.FormDesign
+}
+ }
+ },
+ methods: {
+ moment,
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+ @:this.@(@column.FkEntityName)Data = res.data
+ @:})
+ @:},
+}
+}
+ // 鍒濆鍖栨柟娉�
+ add (record) {
+ this.visible = true
+ this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+ @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+
+ });
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:const @(@column.ColumnName)Option = this.$options
+ @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+ },
+ /**
+ * 鎻愪氦琛ㄥ崟
+ */
+ handleSubmit () {
+@if(@Model.LowCodeId == null){
+ @:const { form: { validateFields } } = this
+ @:this.confirmLoading = true
+ @:validateFields((errors, values) => {
+ @:if (!errors) {
+ @:for (const key in values) {
+ @:if (typeof (values[key]) === 'object') {
+ @:values[key] = JSON.stringify(values[key])
+ @:}
+ @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+ @:@(@Model.ClassName)Add(values).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('鏂板鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', values)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+ @:} else {
+ @:this.confirmLoading = false
+ @:}
+ @:})
+}else{
+ @:this.$refs.kfb.getData().then(values => {
+ @:let data = { ...values };
+ @:@(@Model.ClassName)Add(data).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('鏂板鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', values)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('鏂板澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+ @:});
+}
+ },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:onChange@(@column.ColumnName)(date, dateString) {
+ @:this.@(@column.ColumnName)DateString = dateString
+ @:},
+}
+}
+}
+ handleCancel () {
+@if(@Model.LowCodeId == null){
+ @:this.form.resetFields()
+}else{
+ @:this.$refs.kfb.reset()
+}
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml
new file mode 100644
index 0000000..5e03a74
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.cshtml
@@ -0,0 +1,277 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+ <a-modal
+ title="缂栬緫@(@Model.BusName)"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @@ok="handleSubmit"
+ @@cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+ <a-form :form="form">
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+ @:<a-form-item v-show="false"><a-input v-decorator="['@column.ColumnName']" /></a-form-item>
+} else {
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)}" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+} else {
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+} else {
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+ @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+ @:</a-form-item>
+}
+}
+}
+ </a-form>
+}else{
+ <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+@{
+ var editData = 0;
+ var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ DateQuery="Y";
+}
+if(@column.ColumnKey != "True"){
+if(@column.EffectType != "datepicker"){
+ editData++;
+}
+}
+}
+}
+@if(DateQuery == "Y"){
+ @:import moment from 'moment'
+}
+ import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+}
+}
+ @(@Model.ClassName)Edit
+ } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+@if(@Model.LowCodeId != null){
+ @:import 'k-form-design/styles/k-form-design.less'
+ @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+}
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:@(@column.ColumnName)Data: [],
+}
+}
+if (@column.EffectType == "datepicker"){
+ @:@(@column.ColumnName)DateString: '',
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@column.FkEntityName)Data: [],
+}
+}
+ visible: false,
+ confirmLoading: false,
+ dynamicData: @Model.DynamicData,
+ formDesign: @Model.FormDesign
+ }
+ },
+ methods: {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+ @:this.@(@column.FkEntityName)Data = res.data
+ @:})
+ @:},
+}
+}
+@if(DateQuery == "Y"){
+ @:moment,
+}
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+ @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:const @(@column.ColumnName)Option = this.$options
+ @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+ this.$nextTick(() => {
+ let data = { ...
+ {
+@foreach (var column in Model.TableField){
+ @:@column.OriginalColumnName: record.@column.ColumnName,
+}
+ }
+ }
+ this.$refs.kfb.setData(data)
+ })
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+ },
+ handleSubmit () {
+ this.$refs.kfb.getData().then(values => {
+ values.Id = this.Id
+ let data = { ...values };
+ @(@Model.ClassName)Edit(data).then((res) => {
+ if (res.success) {
+ this.$message.success('缂栬緫鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', values)
+ this.handleCancel()
+ } else {
+ this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ }
+ }).finally((res) => {
+ this.confirmLoading = false
+ })
+ });
+ },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:onChange@(@column.ColumnName)(date, dateString) {
+ @:this.@(@column.ColumnName)DateString = dateString
+ @:},
+}
+}
+}
+ handleCancel () {
+ this.$refs.kfb.reset()
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm
new file mode 100644
index 0000000..1bc332d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/editForm.vue.vm
@@ -0,0 +1,384 @@
+<template>
+ <a-modal
+ title="缂栬緫@(@Model.BusName)"
+ :width="900"
+ :visible="visible"
+ :confirmLoading="confirmLoading"
+ @@ok="handleSubmit"
+ @@cancel="handleCancel">
+ <a-spin :spinning="confirmLoading">
+@if(@Model.LowCodeId == null){
+ <a-form :form="form">
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+ @:<a-form-item v-show="false"><a-input v-decorator="['@column.ColumnName']" /></a-form-item>
+} else {
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol">
+} else {
+ @:<a-form-item label="@column.ColumnComment" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
+}
+if (@column.EffectType == "user"){
+if (@column.WhetherRequired == "Y"){
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<user-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "depart"){
+if (@column.WhetherRequired == "Y"){
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<depart-select placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "input"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "textarea"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+} else {
+ @:<a-textarea placeholder="璇疯緭鍏(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :auto-size="{ minRows: 3, maxRows: 6 }"/>
+}
+}
+if (@column.EffectType == "inputnumber"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName', {rules: [{required: true, message: '璇疯緭鍏(@column.ColumnComment)锛�'}]}]" />
+} else {
+ @:<a-input-number placeholder="璇疯緭鍏(@column.ColumnComment)" style="width: 100%" v-decorator="['@column.ColumnName']" />
+}
+}
+if (@column.EffectType == "select"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="Number(item.code)">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+if (@column.EffectType == "radio"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)}" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+} else {
+ @:<a-radio-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-radio v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-radio>
+ @:</a-radio-group>
+}
+}
+if (@column.EffectType == "checkbox"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+} else {
+ @:<a-checkbox-group placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" >
+ @:<a-checkbox v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-checkbox>
+ @:</a-checkbox-group>
+}
+}
+if (@column.EffectType == "switch"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-switch v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }], valuePropName: 'checked'}]" />
+} else {
+ @:<a-switch v-decorator="['@column.ColumnName', { valuePropName: 'checked' }]" />
+}
+}
+if (@column.EffectType == "datepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" @@change="onChange@(@column.ColumnName)"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" @@change="onChange@(@column.ColumnName)"/>
+}
+}
+
+if (@column.EffectType == "datetimepicker"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName',{rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+} else {
+ @:<a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']" :show-time="{format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"/>
+}
+}
+
+if (@column.EffectType == "fk"){
+if (@column.WhetherRequired == "Y"){
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName', {rules: [{ required: true, message: '璇烽�夋嫨@(@column.ColumnComment)锛�' }]}]">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+} else {
+ @:<a-select style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-decorator="['@column.ColumnName']">
+ @:<a-select-option v-for="(item,index) in @(@column.FkEntityName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ @:</a-select>
+}
+}
+ @:</a-form-item>
+}
+}
+}
+ </a-form>
+}else{
+ <k-form-build ref="kfb" :value="formDesign" :dynamicData="dynamicData" />
+}
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import moment from 'moment'
+@{
+ var editData = 0;
+ var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ DateQuery="Y";
+}
+if(@column.ColumnKey != "True"){
+if(@column.EffectType != "datepicker"){
+ editData++;
+}
+}
+}
+}
+ import {
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List,
+ }
+ }
+ @(@Model.ClassName)Edit
+ } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+ @if(@Model.LowCodeId != null){
+ @:import 'k-form-design/styles/k-form-design.less'
+ @:import { sysDictDataListbycode } from '@@/api/modular/system/dictDataManage'
+ }
+ export default {
+ data () {
+ return {
+ Id: 0,
+ labelCol: {
+ xs: { span: 24 },
+ sm: { span: 5 }
+ },
+ wrapperCol: {
+ xs: { span: 24 },
+ sm: { span: 15 }
+ },
+ record: {},
+ @foreach (var column in Model.TableField){
+ if (@column.WhetherAddUpdate == "Y"){
+ if (@column.DictTypeCode != ""){
+ if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:@(@column.ColumnName)Data: [],
+ }
+ }
+ if (@column.EffectType == "datepicker"){
+ @:@(@column.ColumnName)DateString: '',
+ }
+ }
+ }
+ @foreach (var column in Model.TableField){
+ if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@column.FkEntityName)Data: [],
+}
+}
+ visible: false,
+ confirmLoading: false,
+@if(@Model.LowCodeId == null){
+ @:form: this.$form.createForm(this)
+}else{
+ @:dynamicData: @Model.DynamicData,
+ @:formDesign: @Model.FormDesign
+}
+ }
+ },
+ methods: {
+ moment,
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List() {
+ @:@(@Model.ClassName)Fk@(@column.FkEntityName)List().then(res => {
+ @:this.@(@column.FkEntityName)Data = res.data
+ @:})
+ @:},
+}
+}
+@if(DateQuery == "Y"){
+ @:moment,
+}
+ // 鍒濆鍖栨柟娉�
+ edit (record) {
+ this.visible = true;
+ this.Id = record.id;
+ this.$nextTick(() => {
+@foreach (var dynamic in Model.DynamicLoad_Dict){
+ @:sysDictDataListbycode({code:"@(dynamic.Dynamic)"}).then((data) => { this.dynamicData.@(dynamic.DynamicKey) = data.data });
+}
+ });
+ //娣卞害鎷疯礉 绉婚櫎VUE鐨勭洃鍚紝闃叉INDEX椤甸潰鍊煎彉鍔�
+ this.record = JSON.parse(JSON.stringify(record))
+@foreach (var column in Model.TableField){
+if (@column.DictTypeCode != ""){
+if (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:const @(@column.ColumnName)Option = this.$options
+ @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+ this.$nextTick(() => {
+@if(@Model.LowCodeId != null){
+ @:let data = { ...
+}else{
+ @:this.form.setFieldsValue(
+}
+ {
+@if(@Model.LowCodeId != null){
+@foreach (var column in Model.TableField){
+ @:@column.OriginalColumnName: record.@column.ColumnName,
+}
+}else{
+//灞炴�т紶閫掑紑濮�
+@{var editDataColumn = 0;}
+@foreach (var column in Model.TableField){
+if(@column.ColumnKey == "True"){
+ @:@column.ColumnName: record.@column.ColumnName,
+}
+}
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey != "True"){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "checkbox"){
+editDataColumn++;
+if(editDataColumn != editData) {
+ @:@column.ColumnName: JSON.parse(record.@column.ColumnName),
+} else {
+ @:@column.ColumnName: JSON.parse(record.@column.ColumnName)
+}
+}else if (@column.EffectType != "datepicker"){
+editDataColumn++;
+if(editDataColumn != editData){
+ @:@column.ColumnName: record.@column.ColumnName,
+} else {
+ @:@column.ColumnName: record.@column.ColumnName
+}
+}
+}
+}
+}
+//灞炴�т紶閫掔粨鏉�
+}
+ }
+@if(@Model.LowCodeId != null){
+ @:}
+ @:this.$refs.kfb.setData(data)
+}else{
+ @:)
+}
+ })
+@if(@Model.LowCodeId == null){
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ // 鏃堕棿鍗曠嫭澶勭悊
+ //if (record.@column.ColumnName != null) {
+ @:this.form.getFieldDecorator('@column.ColumnName', { initialValue: moment(record.@column.ColumnName, 'YYYY-MM-DD') })
+ //}
+ @:this.@(@column.ColumnName)DateString = moment(record.@column.ColumnName).format('YYYY-MM-DD')
+}
+}
+}
+}
+@foreach (var column in Model.TableField){
+if(@column.EffectType == "fk" && @column.FkEntityName != "" && @column.FkColumnName != ""){
+ @:this.@(@Model.ClassName)Fk@(@column.FkEntityName)List()
+}
+}
+ },
+ handleSubmit () {
+@if(@Model.LowCodeId == null){
+ @:const { form: { validateFields } } = this
+ @:this.confirmLoading = true
+ @:validateFields((errors, values) => {
+ @:if (!errors) {
+ @:for (const key in values) {
+ @:if (values[key] == null) continue
+ @:if (typeof (values[key]) === 'object') {
+ @:values[key] = JSON.stringify(values[key])
+ @:this.record[key] = values[key]
+ @:} else {
+ @:this.record[key] = values[key]
+ @:}
+ @:}
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:values.@column.ColumnName = this.@(@column.ColumnName)DateString
+ @:this.record.@column.ColumnName = this.@(@column.ColumnName)DateString
+}
+}
+}
+ @:@(@Model.ClassName)Edit(this.record).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('缂栬緫鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', this.record)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+ @:}else{
+ @:this.confirmLoading = false
+ @:}
+}else{
+ @:this.$refs.kfb.getData().then(values => {
+ @:values.Id = this.Id
+ @:let data = { ...values };
+ @:@(@Model.ClassName)Edit(data).then((res) => {
+ @:if (res.success) {
+ @:this.$message.success('缂栬緫鎴愬姛')
+ @:this.confirmLoading = false
+ @:this.$emit('ok', values)
+ @:this.handleCancel()
+ @:} else {
+ @:this.$message.error('缂栬緫澶辫触锛�' + JSON.stringify(res.message))
+ @:}
+ @:}).finally((res) => {
+ @:this.confirmLoading = false
+ @:})
+}
+ });
+ },
+@foreach (var column in Model.TableField){
+if (@column.WhetherAddUpdate == "Y"){
+if (@column.EffectType == "datepicker"){
+ @:onChange@(@column.ColumnName)(date, dateString) {
+ @:this.@(@column.ColumnName)DateString = dateString
+ @:},
+}
+}
+}
+ handleCancel () {
+@if(@Model.LowCodeId == null){
+ @:this.form.resetFields()
+}else{
+ @:this.$refs.kfb.reset()
+}
+ this.visible = false
+ }
+ }
+ }
+</script>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml
new file mode 100644
index 0000000..c1baf4e
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.cs.cshtml
@@ -0,0 +1,180 @@
+<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @@cancel="handleCancel"
+ @@ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @@change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>
+ </a-row>
+ <a-row :span="24">
+ <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @@click="@(@Model.CamelizeClassName)DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@@/utils/util'
+ import { @(@Model.ClassName)ImportExcel, @(@Model.ClassName)DownloadExcelTemplate} from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+import { sysExcelTemplateGetColumnList } from '@@/api/modular/system/excelTemplateManage'
+export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("@(@Model.CamelizeClassName)DownloadExcelTemplate")
+ window.downloadFile = this.@(@Model.CamelizeClassName)DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "@(@Model.ClassName)"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ @(@Model.CamelizeClassName)ImportExcel(formData, {importExcelType: this.importExcelTy pe}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ @(@Model.CamelizeClassName)DownloadExcelTemplate() {
+ @(@Model.CamelizeClassName)DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+}
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm
new file mode 100644
index 0000000..9438fb9
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/excelForm.vue.vm
@@ -0,0 +1,181 @@
+<template>
+ <a-modal
+ :width="850"
+ :destroyOnClose="true"
+ :visible="visible"
+ :forceRender="true"
+ title="鎵归噺瀵煎叆"
+ cancelText="鍙栨秷涓婁紶"
+ okText="寮�濮嬩笂浼�"
+ @@cancel="handleCancel"
+ @@ok="handleSubmit">
+ <a-spin :spinning="confirmLoading">
+ <a-row :span="24">
+ <span>璇烽�夋嫨瑕佸鍏ョ殑鏁版嵁鏂囦欢锛圗xcel鏍煎紡锛�</span>
+ </a-row>
+ <p></p>
+ <a-row>
+ <a-col :span="16">
+ <a-upload-dragger accept=".xlsx,.xls" :multiple="false" :customRequest="customRequest" @@change="handleChange" :beforeUpload="beforeUpload">
+ <a-icon style="font-size: 40px;" type="cloud-upload" />
+ </a-upload-dragger>
+ </a-col>
+ <!--<a-col :span="8">
+ <span>瀵煎叆妯″紡锛�</span>
+ <a-select
+ style="width: 130px"
+ placeholder="璇烽�夋嫨瀵煎叆妯″紡"
+ v-model="importExcelType">
+ <a-select-option
+ v-for="(item,index) in importExcelTypeData"
+ :key="index"
+ :value="item.code">{{ item.name }}
+ </a-select-option>
+ </a-select>
+ </a-col>-->
+ </a-row>
+ <a-row :span="24">
+ <!--<a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="!detailed">
+ 鐐瑰嚮鏌ョ湅鏂囦欢涓婁紶瑕佹眰
+ </a-button>-->
+ <span>銆�</span>
+ <a-button style="width: 90px;text-align: left;" @@click="@(@Model.CamelizeClassName)DownloadExcelTemplate" type="link">涓嬭浇瀵煎叆妯℃澘</a-button>锛屽~鍐欏苟涓婁紶
+ <span>銆�</span>
+ <a-button @@click="showDemand" style="width: 150px;text-align: left;" type="link" v-show="detailed">
+ 鏀惰捣
+ </a-button>
+ </a-row>
+ <a-row v-show="detailed" style="background: #fef4e8; height: 30px;" :span="24">
+ <a-breadcrumb>
+ <a-breadcrumb-item style="line-height: 30px;color: #faad14;margin-left: 18px;">鏂囦欢涓婁紶瑕佹眰</a-breadcrumb-item>
+ </a-breadcrumb>
+ </a-row>
+ <pre v-show="detailed">
+ <div v-html="demandText"></div>
+ </pre>
+ <a-table v-show="detailed" :columns="columns" :data-source="dataList" :rowKey="(record) => record.processID" :pagination="false"></a-table>
+ <pre v-show="detailed">
+ <div v-html="columnText"></div>
+ </pre>
+ </a-spin>
+ </a-modal>
+</template>
+
+<script>
+ import { downloadFile, checkFile, parseExcelFieldText, parseDemandText } from '@@/utils/util'
+
+ import { @(@Model.ClassName)ImportExcel, @(@Model.ClassName)DownloadExcelTemplate} from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+ import { sysExcelTemplateGetColumnList } from '@@/api/modular/system/excelTemplateManage'
+ export default {
+ components: {
+ },
+ data() {
+ return {
+ visible: false,
+ detailed: false,
+ confirmLoading: false,
+ fileList: [],
+ importExcelTypeData: [],
+ importExcelType: '1',
+ uploadFile: null,
+ columns: [],
+ dataList: [],
+ demandText:'',
+ columnText: ''
+ }
+ },
+ methods: {
+ index() {
+ this.visible = true;
+ this.importExcelTypeData = this.$options.filters['dictData']('import_excel_type')
+ this.demandText = parseDemandText("@(@Model.CamelizeClassName)DownloadExcelTemplate")
+ window.downloadFile = this.@(@Model.CamelizeClassName)DownloadExcelTemplate;
+ this.getTable();
+ },
+ showDemand() {
+ this.detailed = !this.detailed;
+ },
+ customRequest(document) {
+ this.uploadFile = document
+ },
+ getTable() {
+ sysExcelTemplateGetColumnList({className: "@(@Model.ClassName)"}).then(res =>
+ {
+ if (res.success) {
+ this.columns =[];
+ this.dataList = [{}];
+ res.data.forEach(x => {
+ this.columns.push({
+ dataIndex: x.columnName,
+ key: x.columnName,
+ title: x.columnComment
+ });
+ this.dataList[0][x.columnName] = x.isRequired ? "蹇呭~" : "闈炲繀濉�"
+ });
+ this.columnText = parseExcelFieldText(res.data);
+ }
+ });
+ },
+ beforeUpload(fileInfo) {
+ let res = checkFile(fileInfo, 1073741824, ['.xlsx', '.xls']);
+ if (!res.success) {
+ this.$message.warning(res.msg)
+ return false
+ }
+ setTimeout(() => {this.uploadFile.onSuccess(this.uploadFile.file)}, 1000)
+ },
+ handleChange(fileInfo) {
+ if (fileInfo.file.status === 'error') {
+ fileInfo.fileList.splice(0, 1)
+ }
+ if (fileInfo.file.status === 'done') {
+ if (fileInfo.fileList.length > 1) {
+ fileInfo.fileList.splice(0, 1)
+ }
+ this.fileList = fileInfo.file
+ }
+ },
+ handleSubmit() {
+ this.confirmLoading = true
+ const formData = new FormData()
+ formData.append('file', this.uploadFile.file)
+ @(@Model.ClassName)ImportExcel(formData, {importExcelType: this.importExcelType}).then(res => {
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.confirmLoading = false
+ this.$emit('ok', [])
+ this.handleCancel()
+ }).finally((res)=>{this.confirmLoading = false})
+ },
+ handleCancel() {
+ this.visible = false
+ this.detailed = false
+ },
+ @(@Model.CamelizeClassName)DownloadExcelTemplate() {
+ @(@Model.ClassName)DownloadExcelTemplate({version: "v2"}).then((res) => {
+ downloadFile(res);
+ }).catch((err) => {
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ }
+ }
+ }
+</script>
+
+<style scoped>
+::v-deep .ant-upload.ant-upload-drag {
+ position: relative;
+ width: 140px;
+ height: 135px;
+ text-align: center;
+ background: #fafafa;
+ border: 1px dashed #d9d9d9;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: border-color 0.3s;
+ transition: border-color 0.3s;
+}
+::v-deep .ant-btn:focus:not(.ant-btn-primary):not(.ant-btn-danger), .ant-btn:hover:not(.ant-btn-primary):not(.ant-btn-danger) {
+ color: #ffc53d;
+ border-color: white;
+}
+</style>
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml
new file mode 100644
index 0000000..ada510d
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.cshtml
@@ -0,0 +1,370 @@
+@model Admin.NET.Application.Service.System.LowCode.Dto.Front_CodeGenerate
+<template>
+ <div>
+ <a-card :bordered="false" :bodyStyle="tstyle">
+@{var index = 0;}
+@if(Model.QueryWhetherList.Count > 0){
+ <text>
+ <div class="table-page-search-wrapper" v-if="hasPerm('@Model.ClassName:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48"></text>
+foreach (var column in Model.QueryWhetherList){
+index++;
+if(@index == 3){
+ <text><template v-if="advanced"></text>
+}
+if(@column.EffectType == "input" || @column.EffectType == "textarea"){
+if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input v-model="queryParam.@column.ColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input v-model="queryParam.@column.ColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+}
+}else if(@column.EffectType == "inputnumber"){
+if(@index >= 3){
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input-number v-model="queryParam.@column.ColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input-number v-model="queryParam.@column.ColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+}
+}else if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@index >= 3){
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col></text>
+}
+}else if(@column.EffectType == "switch"){
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.ColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.ColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+}else if(@column.EffectType == "datepicker"){
+if(@index >= 3){
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.ColumnName)Date" @@change="onChange@(@column.ColumnName)"/>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.ColumnName)Date" @@change="onChange@(@column.ColumnName)"/>
+ </a-form-item>
+ </a-col></text>
+}
+}
+}
+if(Model.QueryWhetherList.Count > 2){
+ </template>
+}if(Model.QueryWhetherList.Count > 2){
+ <text>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @@click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @@click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @@click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col></text>
+}
+<text>
+</text>
+ </a-row>
+ </a-form>
+ </div>
+}
+ </a-card>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @::rowKey="(record) => record.@column.ColumnName"
+}
+}
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('@Model.ClassName:add')" >
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @@click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ <a-button type="info" v-if="hasPerm('@Model.CamelizeClassName:exportExcel')" icon="download" @@click="@(@Model.CamelizeClassName)ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ <a-button type="primary" v-if="hasPerm('@Model.ClassName:add')" icon="plus" @@click="$refs.addForm.add()">鏂板@(@Model.BusName)</a-button>
+ </template>
+@foreach (var column in Model.TableField){
+if(@column.WhetherTable == "Y"){
+if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:<span slot="@(@column.ColumnName)scopedSlots" slot-scope="text">
+if(@column.WhetherRetract == "Y" && (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox")){
+ @:<ellipsis :length="10" tooltip>{{ '@column.DictTypeCode' | dictType(text) }}</ellipsis>
+}else if(@column.WhetherRetract == "Y"){
+ @:<ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+}else if(@column.EffectType == "checkbox"){
+ @:<a-tag v-for="textData in JSON.parse(text)" :key="textData.code" color="green">{{ '@column.DictTypeCode' | dictType(textData) }}</a-tag>
+} else {
+ @:{{ '@column.DictTypeCode' | dictType(text) }}
+}
+ @:</span>
+}
+}
+}
+ <span slot="action" slot-scope="text, record">
+ <a v-if="hasPerm('@Model.ClassName:edit')" @@click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('@Model.ClassName:edit') & hasPerm('@Model.ClassName:delete')"/>
+ <a-popconfirm v-if="hasPerm('@Model.ClassName:delete')" placement="topRight" title="纭鍒犻櫎锛�" @@confirm="() => @(@Model.ClassName)Delete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ </s-table>
+ <add-form ref="addForm" @@ok="handleOk" />
+ <edit-form ref="editForm" @@ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+@{
+ var columnData = 0;
+ var Ellipsis = "N";
+ var DateQuery = "N";
+}
+@foreach (var column in Model.TableField){
+if(@column.WhetherTable == "Y"){
+if(@column.WhetherRetract == "Y")
+Ellipsis="Y";
+columnData++;
+}
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker")
+ DateQuery="Y";
+}
+}
+@if(Ellipsis == "Y"){
+ @:import { STable, Ellipsis } from '@@/components'
+} else {
+ @:import { STable } from '@@/components'
+}
+@if(DateQuery == "Y"){
+ @:import moment from 'moment'
+}
+ import { @(@Model.ClassName)Page, @(@Model.ClassName)Delete } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+ import addForm from './addForm.vue'
+ import editForm from './editForm.vue'
+ export default {
+ components: {
+@if(Ellipsis == "Y")
+ @:Ellipsis,
+ STable,
+ addForm,
+ editForm
+ },
+ data () {
+ return {
+@if(Model.QueryWhetherList.Count > 2){
+ @:advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+}
+ queryParam: {},
+ columns: [
+@{var columnDataColumns = 0;}
+@foreach (var column in Model.TableField){
+if (@column.WhetherTable == "Y"){
+columnDataColumns++;
+ @:{
+ @:title: '@column.ColumnComment',
+ @:align: 'center',
+if (@column.WhetherOrderBy == "Y"){
+@:sorter: true,
+}
+if(@column.EffectType == "switch"){
+ @:customRender: (value) => (value ? <a-tag color="green">True</a-tag> : <a-tag color="volcano">False</a-tag>),
+}
+if(@column.EffectType == "fk"){
+ @:customRender: (value, record) => record.@(@column.LowerFkEntityName).@(@column.LowerFkColumnName),
+}
+if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox"){
+ @:dataIndex: '@column.ColumnName',
+ @:scopedSlots: { customRender: '@(@column.ColumnName)scopedSlots' }
+} else {
+ @:dataIndex: '@column.ColumnName'
+}
+if(columnDataColumns != columnData){
+ @:},
+} else {
+ @:}
+}
+}
+}
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+@if(DateQuery == "Y"){
+ @:return @(@Model.ClassName)Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+} else {
+ @:return @(@Model.ClassName)Page(Object.assign(parameter, this.queryParam)).then((res) => {
+}
+ return res.data
+ })
+ },
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@column.DictTypeCode != "")
+@: @(@column.ColumnName)Data: [],
+}
+}
+}
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ if (this.hasPerm('@Model.ClassName:edit') || this.hasPerm('@Model.ClassName:delete')) {
+ this.columns.push({
+ title: '鎿嶄綔',
+ width: '150px',
+ dataIndex: 'action',
+ scopedSlots: { customRender: 'action' }
+ })
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ this.columns = JSON.parse(columnStr)
+ }
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@column.DictTypeCode != ""){
+ @:const @(@column.ColumnName)Option = this.$options
+ @:this.@(@column.ColumnName)Data = @(@column.ColumnName)Option.filters['dictData']('@column.DictTypeCode')
+}
+}
+}
+}
+ },
+ methods: {
+@if(DateQuery == "Y"){
+ @:moment,
+}
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+@foreach (var column in Model.TableField){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker"){
+ @:const queryParam@(@column.ColumnName) = this.queryParam.@(@column.ColumnName)Date
+ @:if (queryParam@(@column.ColumnName) != null) {
+ @: this.queryParam.@column.ColumnName = moment(queryParam@(@column.ColumnName)).format('YYYY-MM-DD')
+ @: if (queryParam@(@column.ColumnName).length < 1) {
+ @: delete this.queryParam.@(@column.ColumnName)
+ @: }
+ @:}else
+ @:{
+ @: delete this.queryParam.@(@column.ColumnName)
+ @:}
+}
+}
+}
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ @(@Model.ClassName)Delete (record) {
+ @(@Model.ClassName)Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+@if(Model.QueryWhetherList.Count > 2){
+ @:toggleAdvanced () {
+ @:this.advanced = !this.advanced
+ @:},
+}
+@foreach (var column in Model.QueryWhetherList){
+if(@column.QueryWhether == "Y"){
+if(@column.EffectType == "datepicker"){
+ @:onChange@(@column.ColumnName)(date, dateString) {
+ @: this.@(@column.ColumnName) = dateString
+ @:},
+}
+}
+}
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm
new file mode 100644
index 0000000..34fe553
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm
@@ -0,0 +1,574 @@
+<template>
+ <div ref="boxOutWrap" class="boxOutWrap">
+ <div ref="boxForm" class="boxForm">
+ <a-card :bordered="false" :bodyStyle="tstyle">
+@{var index = 0;}
+@if(Model.QueryWhetherList.Count > 0){
+ <text>
+ <div class="table-page-search-wrapper" v-if="hasPerm('@Model.ClassName:page')">
+ <a-form layout="inline">
+ <a-row :gutter="48"></text>
+foreach (var column in Model.QueryWhetherList){
+index++;
+if(@index == 3){
+ <text><template v-if="advanced"></text>
+}
+if(@column.EffectType == "input" || @column.EffectType == "textarea"){
+if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input v-model="queryParam.@column.LowerColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input v-model="queryParam.@column.LowerColumnName" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+}
+}else if(@column.EffectType == "inputnumber"){
+if(@index >= 3){
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input-number v-model="queryParam.@column.LowerColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-input-number v-model="queryParam.@column.LowerColumnName" style="width: 100%" allow-clear placeholder="璇疯緭鍏(@column.ColumnComment)"/>
+ </a-form-item>
+ </a-col></text>
+}
+}else if(@column.EffectType == "select" || @column.EffectType == "radio"){
+if(@index >= 3){
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col></text>
+ }
+ }else if(@column.EffectType == "switch"){
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-select :allowClear="true" style="width: 100%" v-model="queryParam.@column.LowerColumnName" placeholder="璇烽�夋嫨@(@column.ColumnComment)">
+ <a-select-option v-for="(item,index) in @(@column.LowerColumnName)Data" :key="index" :value="item.code">{{ item.name }}</a-select-option>
+ </a-select>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+ }
+
+ else if(@column.EffectType == "datetimepicker"){
+ <!--骞存湀鏃ユ椂鍒嗙-->
+ if(@column.QueryType != "between"){
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+ }else{
+ <!--鏃堕棿鑼冨洿-->
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @@change="onChange@(@column.LowerColumnName)"/>
+
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" :show-time="{
+format: 'HH:mm:ss', defaultValue: [moment('00:00:00', 'HH:mm:ss'),moment('23:59:59', 'HH:mm:ss')]}" v-model="queryParam.@(@column.LowerColumnName)" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+ }
+
+
+ }
+ else if(@column.EffectType == "datepicker"){
+
+ if(@column.QueryType != "between"){
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-date-picker style="width: 100%" placeholder="璇烽�夋嫨@(@column.ColumnComment)" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+ }else{
+ <!--鏃堕棿鑼冨洿-->
+ if(@index >= 3){
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+
+ </a-form-item>
+ </a-col>
+ </text>
+ } else {
+ <text>
+ <a-col :md="8" :sm="24">
+ <a-form-item label="@column.ColumnComment">
+ <a-range-picker style="width: 100%" :placeholder="['寮�濮嬫椂闂�', '缁撴潫鏃堕棿']" v-model="queryParam.@(@column.LowerColumnName)" @@change="onChange@(@column.LowerColumnName)"/>
+ </a-form-item>
+ </a-col>
+ </text>
+ }
+
+ }
+ }
+ }
+ if(Model.QueryWhetherList.Count > 2){
+ </template>
+}if(Model.QueryWhetherList.Count > 2){
+ <text>
+ <a-col :md="8" :sm="24" >
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @@click="$refs.table.refresh(true)" >鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+ <a @@click="toggleAdvanced" style="margin-left: 8px"> {{ advanced ? '鏀惰捣' : '灞曞紑' }}
+ <a-icon :type="advanced ? 'up' : 'down'"/>
+ </a>
+ </span>
+ </a-col></text>
+} else {
+ <text><a-col :md="8" :sm="24">
+ <span class="table-page-search-submitButtons">
+ <a-button type="primary" @@click="$refs.table.refresh(true)">鏌ヨ</a-button>
+ <a-button style="margin-left: 8px" @@click="() => queryParam = {}">閲嶇疆</a-button>
+ </span>
+ </a-col></text>
+}
+<text>
+</text>
+ </a-row>
+ </a-form>
+ </div>
+}
+ </a-card>
+ </div>
+ <a-card :bordered="false">
+ <s-table
+ ref="table"
+ :columns="columns"
+ :data="loadData"
+ :alert="true"
+ @@changeTablePage="pageInfo = $event"
+ :scroll="{x: true,y:tableHeight}"
+@foreach (var column in Model.TableField){
+if (@column.ColumnKey == "True"){
+ @::rowKey="(record) => record.@column.LowerColumnName"
+}
+}
+ :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }">
+ <template class="table-operator" slot="operator" v-if="hasPerm('@Model.ClassName:add')" >
+ <div ref="actionBar" class="actionBar">
+ @if(@Model.IsWhetherImport == true && @Model.IsOnlyQuery !=true){
+ <a-button type="info" v-if="hasPerm('sysExcelTemplate:importExcel')" icon="upload" @@click="$refs.excelForm.index()">
+ 瀵煎叆
+ </a-button>
+ }
+ <a-button type="info" v-if="hasPerm('@Model.ClassName:exportExcel')" icon="download" @@click="@(@Model.ClassName)ToExcel()">
+ 瀵煎嚭
+ </a-button>
+ @if( @Model.IsOnlyQuery !=true){
+ <a-button type="primary" v-if="hasPerm('@Model.ClassName:add')" icon="plus" @@click="$refs.addForm.add()">鏂板@(@Model.BusName)</a-button>
+ }
+ </div>
+ </template>
+ @foreach (var column in Model.TableField){
+ if(@column.WhetherTable == "Y"){
+ if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox" ||@column.EffectType == "switch"){
+ @:<span slot="@(@column.LowerColumnName)scopedSlots" slot-scope="text">
+if(@column.WhetherRetract == "Y" && (@column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox")){
+ @:<ellipsis :length="10" tooltip>{{ '@column.DictTypeCode' | dictType(text) }}</ellipsis>
+}else if(@column.WhetherRetract == "Y"){
+ @:<ellipsis :length="10" tooltip>{{ text }}</ellipsis>
+}else if(@column.EffectType == "checkbox"){
+ @:<a-tag v-for="textData in JSON.parse(text)" :key="textData.code" color="green">{{ '@column.DictTypeCode' | dictType(textData) }}</a-tag>
+ }
+ else if (@column.EffectType == "switch"){
+ <div v-if="text===true ">
+ <a-tag color="green">鏄�</a-tag>
+ </div>
+ <div v-else-if="text==false">
+ <a-tag color="volcano">鍚�</a-tag>
+ </div>
+ <div v-else=""></div>
+ }
+ else {
+ @:{{ '@column.DictTypeCode' | dictType(text) }}
+ }
+ @:</span>
+ }
+ }
+ }
+ @if( @Model.IsOnlyQuery !=true){
+ <span slot="action" slot-scope="text, record">
+
+ <a v-if="hasPerm('@Model.ClassName:edit')" @@click="$refs.editForm.edit(record)">缂栬緫</a>
+ <a-divider type="vertical" v-if="hasPerm('@Model.ClassName:edit') & hasPerm('@Model.ClassName:delete')"/>
+ <a-popconfirm v-if="hasPerm('@Model.ClassName:delete')" placement="topRight" title="纭鍒犻櫎锛�" @@confirm="() => @(@Model.ClassName)Delete(record)">
+ <a>鍒犻櫎</a>
+ </a-popconfirm>
+ </span>
+ }
+ </s-table>
+ <add-form ref="addForm" @@ok="handleOk" />
+ <edit-form ref="editForm" @@ok="handleOk" />
+ <excel-form ref="excelForm" @@ok="handleOk" />
+ </a-card>
+ </div>
+</template>
+<script>
+ @{
+ var columnData = 0;
+ var Ellipsis = "N";
+ var DateQuery = "N";
+ }
+ @foreach (var column in Model.TableField){
+ if(@column.WhetherTable == "Y"){
+ if(@column.WhetherRetract == "Y")
+ Ellipsis="Y";
+ columnData++;
+ }
+ if(@column.QueryWhether == "Y"){
+ if(@column.EffectType == "datepicker"||@column.EffectType == "datetimepicker")
+ DateQuery="Y";
+ }
+ }
+ @if(Ellipsis == "Y"){
+ @:import { STable, Ellipsis } from '@@/components'
+ } else {
+ @:import { STable } from '@@/components'
+ }
+ @if(DateQuery == "Y"){
+ @:import moment from 'moment'
+ }
+ import { @(@Model.ClassName)Page, @(@Model.ClassName)Delete, @(@Model.ClassName)ToExcel } from '@@/api/modular/main/@(@Model.ModuleName)/@(@Model.ClassName)Manage'
+ //鑷畾涔塼able楂樺害
+ import setTableHtMixin from '@@/mixins/handleTableHt.js'
+ import addForm from './addForm.vue'
+ import { exportExcel } from '@@/utils/exportToExcel'
+ import { downloadFile } from '@@/utils/util'
+ import editForm from './editForm.vue'
+ import excelForm from './excelForm.vue'
+ export default {
+ mixins: [setTableHtMixin],
+ components: {
+ @if(Ellipsis == "Y")
+ @:Ellipsis,
+ STable,
+ addForm,
+ editForm,
+ excelForm
+ },
+ data () {
+ return {
+ @if(Model.QueryWhetherList.Count > 2){
+ @:advanced: false, // 楂樼骇鎼滅储 灞曞紑/鍏抽棴
+ }
+ queryParam: {},
+ pageInfo: {
+ current: 1,
+ pageSize: 10
+ },
+ columns: [
+ {
+ title:'搴忓彿',
+ width: '60px',
+ align: 'center',
+ customRender: (text, record, index) => `${index + 1 + (this.pageInfo.current - 1) * this.pageInfo.pageSize}`
+ },
+ @{var columnDataColumns = 0;}
+ @foreach (var column in Model.TableField){
+ if (@column.WhetherTable == "Y"){
+ columnDataColumns++;
+ @:{
+ @:title: '@column.ColumnComment',
+ @:align: 'center',
+
+ @:customHeaderCell: () => {
+ @:return {
+ @: style: {
+ @:'min-width': '@column.ShowTitleMinWidth'//鏈�灏忓垪瀹借缃�
+ @: }
+ @: }
+ @:},
+
+ @:customCell: () => {
+ @:return {
+ @:style: {
+ @:'min-width': '@column.ShowTitleMinWidth'//鏈�灏忓垪瀹借缃�
+ @:}
+ @:}
+ @:},
+
+ if (@column.WhetherOrderBy == "Y"){
+ @:sorter: true,
+ }
+
+ if(@column.EffectType == "datepicker"){
+ @:customRender: (value) => (value ? value.split(" ")[0] : value),//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+ @:customCutout:true,//鏃堕棿鎴彇 涓嶈鏃跺垎绉�
+ }
+
+ if(@column.EffectType == "fk"){
+ @:customRender: (value, record) => record.@(@column.LowerFkEntityName).@(@column.LowerFkLowerColumnName),
+ }
+
+ if(@column.WhetherRetract == "Y" || @column.EffectType == "select" || @column.EffectType == "radio" || @column.EffectType == "checkbox" || @column.EffectType == "switch"){
+ @:dataIndex: '@column.LowerColumnName',
+ @:scopedSlots: { customRender: '@(@column.LowerColumnName)scopedSlots' }
+ } else {
+ @:dataIndex: '@column.LowerColumnName'
+ }
+ if(columnDataColumns != columnData){
+ @:},
+ } else {
+ @:}
+ }
+ }
+ }
+ ],
+ tstyle: { 'padding-bottom': '0px', 'margin-bottom': '10px' },
+ // 鍔犺浇鏁版嵁鏂规硶 蹇呴』涓� Promise 瀵硅薄
+ loadData: parameter => {
+ @if(DateQuery == "Y"){
+ @:return @(@Model.ClassName)Page(Object.assign(parameter, this.switchingDate())).then((res) => {
+ } else {
+ @:return @(@Model.ClassName)Page(Object.assign(parameter, this.queryParam)).then((res) => {
+ }
+ return res.data
+ })
+ },
+ @foreach (var column in Model.TableField){
+ if(@column.QueryWhether == "Y"){
+ if(@column.EffectType == "select" || @column.EffectType == "radio"){
+ if(@column.DictTypeCode != "")
+ @: @(@column.LowerColumnName)Data: [],
+ }
+ }
+ }
+ selectedRowKeys: [],
+ selectedRows: []
+ }
+ },
+ created () {
+ @if(Model.IsOnlyQuery !=true){
+ @:if (this.hasPerm('@Model.ClassName:edit') || this.hasPerm('@Model.ClassName:delete')) {
+ @:this.columns.push({
+ @:title: '鎿嶄綔',
+ @:width: '150px',
+ @:dataIndex: 'action',
+ @:scopedSlots: { customRender: 'action' }
+ @:})
+ @:}
+ }
+ const path = this.$route.path
+ const columnStr = window.localStorage.getItem(path)
+ if(columnStr) {
+ var _columns = JSON.parse(columnStr)
+ this.columns.forEach(element => {
+ var fObj = _columns.find((item, index) => {
+ return item.dataIndex === element.dataIndex;
+ })
+ if(fObj!=undefined && fObj!=null){
+ element.checked=fObj.checked;
+ }
+ });
+ }
+ @foreach (var column in Model.TableField){
+ if(@column.QueryWhether == "Y"){
+
+ if(@column.EffectType == "select" || @column.EffectType == "radio"){
+ if(@column.DictTypeCode != ""){
+ @:const @(@column.LowerColumnName)Option = this.$options
+ @:this.@(@column.LowerColumnName)Data = @(@column.LowerColumnName)Option.filters['dictData']('@column.DictTypeCode')
+ }
+ }
+
+ if(@column.EffectType == "switch"){
+ @:const @(@column.LowerColumnName)Option = this.$options
+ @:this.@(@column.LowerColumnName)Data = @(@column.LowerColumnName)Option.filters['dictData']('yes_true_false')
+ }
+
+ }
+ }
+
+ this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ window.addEventListener(
+ 'resize',
+ () => {
+ this.handleTableHt() // 鐩戝惉灞忓箷澶у皬鏀瑰彉琛ㄦ牸楂樺害
+ },
+ false
+ )
+
+ },
+ methods: {
+ @if(DateQuery == "Y"){
+ @:moment,
+ }
+ /**
+ * 鏌ヨ鍙傛暟缁勮
+ */
+ switchingDate () {
+ const obj = JSON.parse(JSON.stringify(this.queryParam))
+ return obj
+ },
+ @(@Model.ClassName)Delete (record) {
+ @(@Model.ClassName)Delete(record).then((res) => {
+ if (res.success) {
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.$refs.table.refresh()
+ } else {
+ this.$message.error('鍒犻櫎澶辫触') // + res.message
+ }
+ })
+ },
+
+
+ @(@Model.ClassName)ToExcel() {
+ this.loading = true
+ let entozh = {};
+ const path = this.$route.path;
+ if (window.localStorage.getItem(path)) {
+ JSON.parse(window.localStorage.getItem(path)).forEach(item => {
+ if (item.dataIndex != 'action' && item.checked) {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ } else { //鐩存帴鐐瑰鍑�
+ this.columns.forEach(item => {
+ if (item.dataIndex != 'action') {
+ entozh[item.dataIndex] = item.title
+ }
+ })
+ }
+ @(@Model.ClassName)Page(Object.assign({ pageSize: 100000, pageIndex: 1 }, this.queryParam)).then((res) => {
+ this.loading = false;
+ //闇�瑕佹埅鍙栨棩鏈熺殑瀛楁
+ var arrDataCutout = this.columns.filter(v => v.customCutout == true);
+ res.data.rows.forEach(item => {
+ var arrKeys = Object.keys(item);
+ arrKeys.forEach(key => {
+ var strFieldDic = key + 'Data';
+ //鏋氫妇杞��
+ if (this[strFieldDic] && this[strFieldDic].length > 0) {
+ let arrFieldDic = this[strFieldDic].filter(v => String(v.code) == String(item[key]));
+ if (arrFieldDic.length > 0) {
+ item[key] = arrFieldDic[0]?.name || '娌℃湁鏋氫妇鍊�';
+ }
+ }
+ // 鏃ユ湡鎴彇
+ if (arrDataCutout.length > 0) {
+ arrDataCutout.forEach(itemIn => {
+ if (key == itemIn.dataIndex && item[key]) {
+ item[key] = item[key].split(" ")[0]
+ }
+ })
+ }
+ });
+ })
+ exportExcel(res.data.rows, entozh, "xlsx", `${this.$route.meta.title}`)
+ }).catch((err) => {
+ this.loading = false
+ this.$message.error('涓嬭浇閿欒锛氳幏鍙栨枃浠舵祦閿欒' + err)
+ })
+ },
+
+
+ @if(Model.QueryWhetherList.Count > 2){
+ @:toggleAdvanced () {
+ @:this.advanced = !this.advanced
+ @:this.handleTableHt() //璁剧疆涓昏〃琛ㄦ牸楂樺害
+ @:},
+ }
+ @foreach (var column in Model.QueryWhetherList){
+ if(@column.QueryWhether == "Y"){
+ if(@column.EffectType == "datepicker" || @column.EffectType == "datetimepicker"){
+ @:onChange@(@column.LowerColumnName)(date, dateString) {
+ @: this.queryParam.@(@column.LowerColumnName) = dateString
+ @:},
+
+ }
+ }
+ }
+ handleOk () {
+ this.$refs.table.refresh()
+ },
+ onSelectChange (selectedRowKeys, selectedRows) {
+ this.selectedRowKeys = selectedRowKeys
+ this.selectedRows = selectedRows
+ }
+ }
+ }
+</script>
+<style lang="less">
+ .table-operator {
+ margin-bottom: 18px;
+ }
+ button {
+ margin-right: 8px;
+ }
+</style>
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg
new file mode 100644
index 0000000..9adb2d1
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/avatar2.jpg
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css
new file mode 100644
index 0000000..b25478f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css
@@ -0,0 +1,16465 @@
+.app {
+ overflow: auto;
+ border: none
+}
+
+.scrollbar {
+ margin: 0 auto
+}
+
+.app1::-webkit-scrollbar {
+ width: 8px
+}
+
+.app1::-webkit-scrollbar-thumb {
+ border-radius: 6px;
+ background: #aaa
+}
+
+.app1::-webkit-scrollbar-track {
+ border-radius: 8px;
+ background: #fff
+}
+
+#userLayout.user-layout-wrapper[data-v-4322b080] {
+ height: 100%
+}
+
+#userLayout.user-layout-wrapper.mobile .container .main[data-v-4322b080] {
+ max-width: 368px;
+ width: 98%
+}
+
+#userLayout.user-layout-wrapper .container[data-v-4322b080] {
+ width: 100%;
+ min-height: 100%;
+ background-color: #fff;
+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800' viewBox='0 0 200 200'%3E%3Cdefs%3E%3ClinearGradient id='a' gradientUnits='userSpaceOnUse' x1='88' y1='88' x2='0' y2='0'%3E%3Cstop offset='0' stop-color='%23064e77'/%3E%3Cstop offset='1' stop-color='%230a7dbe'/%3E%3C/linearGradient%3E%3ClinearGradient id='c' gradientUnits='userSpaceOnUse' x1='75' y1='76' x2='168' y2='160'%3E%3Cstop offset='0' stop-color='%238f8f8f'/%3E%3Cstop offset='.09' stop-color='%23b3b3b3'/%3E%3Cstop offset='.18' stop-color='%23c9c9c9'/%3E%3Cstop offset='.31' stop-color='%23dbdbdb'/%3E%3Cstop offset='.44' stop-color='%23e8e8e8'/%3E%3Cstop offset='.59' stop-color='%23f2f2f2'/%3E%3Cstop offset='.75' stop-color='%23fafafa'/%3E%3Cstop offset='1' stop-color='%23FFF'/%3E%3C/linearGradient%3E%3Cfilter id='b' x='0' y='0' width='200%25' height='200%25'%3E%3CfeGaussianBlur in='SourceGraphic' stdDeviation='12'/%3E%3C/filter%3E%3C/defs%3E%3Cpath fill='url(%23a)' d='M0 174V0h174z'/%3E%3Cpath fill-opacity='.5' filter='url(%23b)' d='M121.8 174C59.2 153.1 0 174 0 174s63.5-73.8 87-94c24.4-20.9 87-80 87-80s-66.1 104.4-52.2 174z'/%3E%3Cpath fill='url(%23c)' d='M142.7 142.7C59.2 142.7 0 174 0 174s42-66.3 74.9-99.3S174 0 174 0s-31.3 62.6-31.3 142.7z'/%3E%3C/svg%3E");
+ background-attachment: fixed;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+ padding: 110px 0 144px;
+ position: relative
+}
+
+#userLayout.user-layout-wrapper .container a[data-v-4322b080] {
+ text-decoration: none
+}
+
+#userLayout.user-layout-wrapper .container .top[data-v-4322b080] {
+ text-align: center
+}
+
+#userLayout.user-layout-wrapper .container .top .header[data-v-4322b080] {
+ height: 44px;
+ line-height: 44px
+}
+
+#userLayout.user-layout-wrapper .container .top .header .badge[data-v-4322b080] {
+ position: absolute;
+ display: inline-block;
+ line-height: 1;
+ vertical-align: middle;
+ margin-left: -12px;
+ margin-top: -10px;
+ opacity: .8
+}
+
+#userLayout.user-layout-wrapper .container .top .header .logo[data-v-4322b080] {
+ height: 44px;
+ vertical-align: top;
+ margin-right: 16px;
+ border-style: none
+}
+
+#userLayout.user-layout-wrapper .container .top .header .title[data-v-4322b080] {
+ font-size: 33px;
+ color: rgba(0,0,0,.85);
+ font-family: Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;
+ font-weight: 600;
+ position: relative;
+ top: 2px
+}
+
+#userLayout.user-layout-wrapper .container .top .desc[data-v-4322b080] {
+ font-size: 14px;
+ color: rgba(0,0,0,.45);
+ margin-top: 12px;
+ margin-bottom: 40px
+}
+
+#userLayout.user-layout-wrapper .container .main[data-v-4322b080] {
+ min-width: 260px;
+ width: 368px;
+ margin: 0 auto
+}
+
+#userLayout.user-layout-wrapper .container .footer[data-v-4322b080] {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+ padding: 0 16px;
+ margin: 48px 0 24px;
+ text-align: center
+}
+
+#userLayout.user-layout-wrapper .container .footer .links[data-v-4322b080] {
+ margin-bottom: 8px;
+ font-size: 14px
+}
+
+#userLayout.user-layout-wrapper .container .footer .links a[data-v-4322b080] {
+ color: rgba(0,0,0,.45);
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ #userLayout.user-layout-wrapper .container .footer .links a[data-v-4322b080]:not(:last-child) {
+ margin-right: 40px
+ }
+
+#userLayout.user-layout-wrapper .container .footer .copyright[data-v-4322b080] {
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.header-notice-wrapper {
+ top: 50px !important
+}
+
+.header-notice[data-v-1c6fb671] {
+ display: inline-block;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.header-notice span[data-v-1c6fb671] {
+ vertical-align: initial
+}
+
+.appRedio[data-v-49b88a94] {
+ border: 1px solid #91d5ff;
+ padding: 10px 20px;
+ background: #e6f7ff;
+ border-radius: 2px;
+ margin-bottom: 10px;
+ color: #91d5ff
+}
+
+.header-animat {
+ position: relative;
+ z-index: 105
+}
+
+.showHeader-enter-active {
+ -webkit-transition: all .25s ease;
+ transition: all .25s ease
+}
+
+.showHeader-leave-active {
+ -webkit-transition: all .5s ease;
+ transition: all .5s ease
+}
+
+.showHeader-enter, .showHeader-leave-to {
+ opacity: 0
+}
+
+.footer[data-v-3e04ba72] {
+ padding: 0 16px;
+ margin: 0 0 10px;
+ text-align: center
+}
+
+.footer .links[data-v-3e04ba72] {
+ margin-bottom: 8px
+}
+
+.footer .links a[data-v-3e04ba72] {
+ color: rgba(0,0,0,.45)
+}
+
+ .footer .links a[data-v-3e04ba72]:hover {
+ color: rgba(0,0,0,.65)
+ }
+
+ .footer .links a[data-v-3e04ba72]:not(:last-child) {
+ margin-right: 40px
+ }
+
+.footer .copyright[data-v-3e04ba72] {
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox[data-v-0cdce0f5] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item[data-v-0cdce0f5] {
+ margin-right: 16px;
+ position: relative;
+ border-radius: 4px;
+ cursor: pointer
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item img[data-v-0cdce0f5] {
+ width: 48px
+}
+
+.setting-drawer-index-content .setting-drawer-index-blockChecbox .setting-drawer-index-item .setting-drawer-index-selectIcon[data-v-0cdce0f5] {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+ padding-top: 15px;
+ padding-left: 24px;
+ height: 100%;
+ color: #1890ff;
+ font-size: 14px;
+ font-weight: 700
+}
+
+.setting-drawer-index-content .setting-drawer-theme-color-colorBlock[data-v-0cdce0f5] {
+ width: 20px;
+ height: 20px;
+ border-radius: 2px;
+ float: left;
+ cursor: pointer;
+ margin-right: 8px;
+ padding-left: 0;
+ padding-right: 0;
+ text-align: center;
+ color: #fff;
+ font-weight: 700
+}
+
+.setting-drawer-index-content .setting-drawer-theme-color-colorBlock i[data-v-0cdce0f5] {
+ font-size: 14px
+}
+
+.setting-drawer-index-handle[data-v-0cdce0f5] {
+ position: absolute;
+ top: 240px;
+ background: #1890ff;
+ width: 48px;
+ height: 48px;
+ right: 300px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ cursor: pointer;
+ pointer-events: auto;
+ z-index: 1001;
+ text-align: center;
+ font-size: 16px;
+ border-radius: 4px 0 0 4px
+}
+
+.setting-drawer-index-handle i[data-v-0cdce0f5] {
+ color: #fff;
+ font-size: 20px
+}
+
+.page-transition-enter, .page-transition-leave-active {
+ opacity: 0
+}
+
+ .page-transition-enter .page-transition-container, .page-transition-leave-active .page-transition-container {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1)
+ }
+
+.page-header[data-v-300f978a] {
+ background: #fff;
+ padding: 10px 32px 0;
+ border-bottom: 0 solid #e8e8e8
+}
+
+.page-header .breadcrumb[data-v-300f978a] {
+ margin-bottom: 10px
+}
+
+.page-header .detail[data-v-300f978a] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.page-header .detail .avatar[data-v-300f978a] {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 72px;
+ flex: 0 1 72px;
+ margin: 0 24px 8px 0
+}
+
+.page-header .detail .avatar > span[data-v-300f978a] {
+ border-radius: 72px;
+ display: block;
+ width: 72px;
+ height: 72px
+}
+
+.page-header .detail .main[data-v-300f978a] {
+ width: 100%;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto
+}
+
+.page-header .detail .main .row[data-v-300f978a] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ width: 100%
+}
+
+.page-header .detail .main .row .avatar[data-v-300f978a] {
+ margin-bottom: 10px
+}
+
+.page-header .detail .main .title[data-v-300f978a] {
+ font-size: 20px;
+ line-height: 28px;
+ font-weight: 500;
+ color: rgba(0,0,0,.85);
+ margin-bottom: 16px;
+ -webkit-box-flex: 1;
+ -ms-flex: auto;
+ flex: auto
+}
+
+.page-header .detail .main .logo[data-v-300f978a] {
+ width: 28px;
+ height: 28px;
+ border-radius: 4px;
+ margin-right: 16px
+}
+
+.page-header .detail .main .content[data-v-300f978a], .page-header .detail .main .headerContent[data-v-300f978a] {
+ -webkit-box-flex: 1;
+ -ms-flex: auto;
+ flex: auto;
+ color: rgba(0,0,0,.45);
+ line-height: 22px
+}
+
+.page-header .detail .main .content .link[data-v-300f978a], .page-header .detail .main .headerContent .link[data-v-300f978a] {
+ margin-top: 16px;
+ line-height: 24px
+}
+
+.page-header .detail .main .content .link a[data-v-300f978a], .page-header .detail .main .headerContent .link a[data-v-300f978a] {
+ font-size: 14px;
+ margin-right: 32px
+}
+
+.page-header .detail .main .extra[data-v-300f978a] {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ margin-left: 88px;
+ min-width: 242px;
+ text-align: right
+}
+
+.page-header .detail .main .action[data-v-300f978a] {
+ margin-left: 56px;
+ min-width: 266px;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ text-align: right
+}
+
+ .page-header .detail .main .action[data-v-300f978a]:empty {
+ display: none
+ }
+
+.mobile .page-header .main .row[data-v-300f978a] {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap
+}
+
+.mobile .page-header .main .row .avatar[data-v-300f978a] {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 25%;
+ flex: 0 1 25%;
+ margin: 0 2% 8px 0
+}
+
+.mobile .page-header .main .row .content[data-v-300f978a], .mobile .page-header .main .row .headerContent[data-v-300f978a] {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 70%;
+ flex: 0 1 70%
+}
+
+.mobile .page-header .main .row .content .link[data-v-300f978a], .mobile .page-header .main .row .headerContent .link[data-v-300f978a] {
+ margin-top: 16px;
+ line-height: 24px
+}
+
+.mobile .page-header .main .row .content .link a[data-v-300f978a], .mobile .page-header .main .row .headerContent .link a[data-v-300f978a] {
+ font-size: 14px;
+ margin-right: 10px
+}
+
+.mobile .page-header .main .row .extra[data-v-300f978a] {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ margin-left: 0;
+ min-width: 0;
+ text-align: right
+}
+
+.mobile .page-header .main .row .action[data-v-300f978a] {
+ margin-left: unset;
+ min-width: 266px;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ text-align: left;
+ margin-bottom: 12px
+}
+
+ .mobile .page-header .main .row .action[data-v-300f978a]:empty {
+ display: none
+ }
+
+.content[data-v-d6c73dd6] {
+ margin: 24px 24px 0
+}
+
+.content .link[data-v-d6c73dd6] {
+ margin-top: 16px
+}
+
+ .content .link[data-v-d6c73dd6]:not(:empty) {
+ margin-bottom: 16px
+ }
+
+.content .link a[data-v-d6c73dd6] {
+ margin-right: 32px;
+ height: 24px;
+ line-height: 24px;
+ display: inline-block
+}
+
+.content .link a i[data-v-d6c73dd6] {
+ font-size: 24px;
+ margin-right: 8px;
+ vertical-align: middle
+}
+
+.content .link a span[data-v-d6c73dd6] {
+ height: 24px;
+ line-height: 24px;
+ display: inline-block;
+ vertical-align: middle
+}
+
+.page-menu-search[data-v-d6c73dd6] {
+ text-align: center;
+ margin-bottom: 16px
+}
+
+.page-menu-tabs[data-v-d6c73dd6] {
+ margin-top: 48px
+}
+
+.extra-img[data-v-d6c73dd6] {
+ margin-top: -60px;
+ text-align: center;
+ width: 195px
+}
+
+.extra-img img[data-v-d6c73dd6] {
+ width: 100%
+}
+
+.mobile .extra-img[data-v-d6c73dd6] {
+ margin-top: 0;
+ text-align: center;
+ width: 96px
+}
+
+.mobile .extra-img img[data-v-d6c73dd6] {
+ width: 100%
+}
+
+.ant-pro-multi-tab {
+ margin: -23px -24px 24px -24px;
+ background: #fff
+}
+
+.topmenu .ant-pro-multi-tab-wrapper {
+ max-width: 1200px;
+ margin: 0 auto
+}
+
+.topmenu.content-width-Fluid .ant-pro-multi-tab-wrapper {
+ max-width: 100%;
+ margin: 0 auto
+}
+
+#nprogress {
+ pointer-events: none
+}
+
+ #nprogress .bar {
+ background: #fa541c;
+ position: fixed;
+ z-index: 1031;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 2px
+ }
+
+ #nprogress .peg {
+ display: block;
+ position: absolute;
+ right: 0;
+ width: 100px;
+ height: 100%;
+ -webkit-box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c;
+ box-shadow: 0 0 10px #fa541c,0 0 5px #fa541c;
+ opacity: 1;
+ -webkit-transform: rotate(3deg) translateY(-4px);
+ transform: rotate(3deg) translateY(-4px)
+ }
+
+ #nprogress .spinner {
+ display: block;
+ position: fixed;
+ z-index: 1031;
+ top: 15px;
+ right: 15px
+ }
+
+ #nprogress .spinner-icon {
+ width: 18px;
+ height: 18px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 2px solid transparent;
+ border-top-color: #fa541c;
+ border-left-color: #fa541c;
+ border-radius: 50%;
+ -webkit-animation: nprogress-spinner .4s linear infinite;
+ animation: nprogress-spinner .4s linear infinite
+ }
+
+.nprogress-custom-parent {
+ overflow: hidden;
+ position: relative
+}
+
+ .nprogress-custom-parent #nprogress .bar, .nprogress-custom-parent #nprogress .spinner {
+ position: absolute
+ }
+
+@-webkit-keyframes nprogress-spinner {
+ 0% {
+ -webkit-transform: rotate(0deg)
+ }
+
+ to {
+ -webkit-transform: rotate(1turn)
+ }
+}
+
+@keyframes nprogress-spinner {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg)
+ }
+
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+#app {
+ height: 100%
+}
+
+ #app.colorWeak {
+ -webkit-filter: invert(80%);
+ filter: invert(80%)
+ }
+
+ #app.userLayout {
+ overflow: auto
+ }
+
+.layout.ant-layout {
+ height: auto;
+ overflow-x: hidden
+}
+
+ .layout.ant-layout.mobile .ant-layout-content .content, .layout.ant-layout.tablet .ant-layout-content .content {
+ margin: 24px 0 0
+ }
+
+ .layout.ant-layout.mobile .ant-table-wrapper .ant-table-content, .layout.ant-layout.tablet .ant-table-wrapper .ant-table-content {
+ overflow-y: auto
+ }
+
+ .layout.ant-layout.mobile .ant-table-wrapper .ant-table-body, .layout.ant-layout.tablet .ant-table-wrapper .ant-table-body {
+ min-width: 800px
+ }
+
+ .layout.ant-layout.mobile .topmenu.content-width-Fluid .header-index-wide, .layout.ant-layout.tablet .topmenu.content-width-Fluid .header-index-wide {
+ margin-left: 0
+ }
+
+ .layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-closed, .layout.ant-layout.mobile .sidemenu .ant-header-fixedHeader.ant-header-side-opened {
+ width: 100%
+ }
+
+ .layout.ant-layout.ant-layout-has-sider {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row
+ }
+
+ .layout.ant-layout .trigger {
+ font-size: 20px;
+ line-height: 55px;
+ padding: 0 24px;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .layout.ant-layout .trigger:hover {
+ background: rgba(0,0,0,.025)
+ }
+
+ .layout.ant-layout .topmenu .ant-header-fixedHeader {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 9;
+ width: 100%;
+ -webkit-transition: width .2s;
+ transition: width .2s
+ }
+
+ .layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-closed, .layout.ant-layout .topmenu .ant-header-fixedHeader.ant-header-side-opened {
+ width: 100%
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide {
+ max-width: unset
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 1000px;
+ flex: 1 1 1000px
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left .logo {
+ margin-left: 25px
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-left .ant-menu.ant-menu-horizontal {
+ max-width: calc(100vw - 453px);
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 calc(100vw - 453px);
+ flex: 1 1 calc(100vw - 453px)
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .header-index-wide .header-index-right {
+ margin-right: 25px
+ }
+
+ .layout.ant-layout .topmenu.content-width-Fluid .page-header-index-wide {
+ max-width: unset
+ }
+
+ .layout.ant-layout .sidemenu .ant-header-fixedHeader {
+ position: fixed;
+ top: 0;
+ right: 0;
+ z-index: 9;
+ width: 100%;
+ -webkit-transition: width .2s;
+ transition: width .2s
+ }
+
+ .layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-opened {
+ width: calc(100% - 230px)
+ }
+
+ .layout.ant-layout .sidemenu .ant-header-fixedHeader.ant-header-side-closed {
+ width: calc(100% - 80px)
+ }
+
+ .layout.ant-layout .header {
+ height: 55px;
+ background: #fff;
+ -webkit-box-shadow: 0 1px 4px rgba(0,21,41,.08);
+ box-shadow: 0 1px 4px rgba(0,21,41,.08);
+ position: relative
+ }
+
+ .layout.ant-layout .header .user-wrapper, .layout.ant-layout .top-nav-header-index .user-wrapper {
+ float: right;
+ height: 100%
+ }
+
+ .layout.ant-layout .header .user-wrapper .action, .layout.ant-layout .top-nav-header-index .user-wrapper .action {
+ line-height: 55px;
+ cursor: pointer;
+ padding: 0 12px;
+ display: inline-block;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ height: 100%;
+ color: rgba(0,0,0,.65)
+ }
+
+ .layout.ant-layout .header .user-wrapper .action:hover, .layout.ant-layout .top-nav-header-index .user-wrapper .action:hover {
+ background: rgba(0,0,0,.025)
+ }
+
+ .layout.ant-layout .header .user-wrapper .action .avatar, .layout.ant-layout .top-nav-header-index .user-wrapper .action .avatar {
+ margin: 15px 8px 15px 0;
+ color: #1890ff;
+ background: hsla(0,0%,100%,.85);
+ vertical-align: middle
+ }
+
+ .layout.ant-layout .header .user-wrapper .action .icon, .layout.ant-layout .top-nav-header-index .user-wrapper .action .icon {
+ font-size: 16px;
+ padding: 4px
+ }
+
+ .layout.ant-layout .header.dark .user-wrapper .action, .layout.ant-layout .header.dark .user-wrapper .action a, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action a {
+ color: hsla(0,0%,100%,.85)
+ }
+
+ .layout.ant-layout .header.dark .user-wrapper .action:hover, .layout.ant-layout .top-nav-header-index.dark .user-wrapper .action:hover {
+ background: hsla(0,0%,100%,.16)
+ }
+
+ .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .trigger, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .trigger {
+ color: hsla(0,0%,100%,.85);
+ padding: 0 12px
+ }
+
+ .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 56px;
+ flex: 0 0 56px;
+ text-align: center;
+ line-height: 58px
+ }
+
+ .layout.ant-layout.mobile .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1, .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1 {
+ display: none
+ }
+
+ .layout.ant-layout.mobile .top-nav-header-index.light .header-index-wide .header-index-left .trigger, .layout.ant-layout.tablet .top-nav-header-index.light .header-index-wide .header-index-left .trigger {
+ color: rgba(0,0,0,.65)
+ }
+
+ .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .header-index-left .logo > a {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+ }
+
+ .layout.ant-layout.tablet .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ white-space: normal
+ }
+
+ .layout.ant-layout .top-nav-header-index {
+ -webkit-box-shadow: 0 1px 4px rgba(0,21,41,.08);
+ box-shadow: 0 1px 4px rgba(0,21,41,.08);
+ position: relative;
+ -webkit-transition: background .3s,width .2s;
+ transition: background .3s,width .2s
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide {
+ max-width: 1200px;
+ margin: auto;
+ padding-left: 0;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ height: 55px
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .ant-menu.ant-menu-horizontal {
+ max-width: 835px;
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 835px;
+ flex: 0 1 835px;
+ border: none;
+ height: 55px;
+ line-height: 55px
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 1 1000px;
+ flex: 0 1 1000px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 165px;
+ flex: 0 0 165px;
+ width: 165px;
+ height: 55px;
+ position: relative;
+ line-height: 55px;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ overflow: hidden
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header img, .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header svg {
+ display: inline-block;
+ vertical-align: middle;
+ height: 32px;
+ width: 32px
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-left .logo.top-nav-header h1 {
+ color: #fff;
+ display: inline-block;
+ vertical-align: top;
+ font-size: 16px;
+ margin: 0 0 0 12px;
+ font-weight: 400
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 238px;
+ flex: 0 0 238px;
+ -ms-flex-item-align: end;
+ align-self: flex-end;
+ height: 55px;
+ overflow: hidden
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right .content-box {
+ float: right
+ }
+
+ .layout.ant-layout .top-nav-header-index .header-index-wide .header-index-right .content-box .action {
+ max-width: 140px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap
+ }
+
+ .layout.ant-layout .top-nav-header-index.light {
+ background-color: #fff
+ }
+
+ .layout.ant-layout .top-nav-header-index.light .header-index-wide .header-index-left .logo h1 {
+ color: #002140
+ }
+
+ .layout.ant-layout .layout-content {
+ margin: 24px 24px 0;
+ padding: 0 12px 0 0
+ }
+
+ .layout.ant-layout .ant-layout-footer {
+ padding: 0
+ }
+
+.topmenu .page-header-index-wide {
+ max-width: 1200px;
+ margin: 0 auto
+}
+
+.ant-drawer.drawer-sider .sider {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.ant-drawer.drawer-sider.dark .ant-drawer-content {
+ background-color: #001529
+}
+
+.ant-drawer.drawer-sider.light {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-drawer.drawer-sider.light .ant-drawer-content {
+ background-color: #fff
+ }
+
+.ant-drawer.drawer-sider .ant-drawer-body {
+ padding: 0
+}
+
+.sider {
+ -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
+ box-shadow: 2px 0 6px rgba(0,21,41,.35);
+ position: relative;
+ z-index: 106;
+ min-height: 100vh
+}
+
+ .sider .ant-layout-sider-children {
+ overflow-y: hidden
+ }
+
+ .sider .ant-layout-sider-children:hover {
+ overflow-y: auto
+ }
+
+ .sider.ant-fixed-sidemenu {
+ position: fixed;
+ height: 100%
+ }
+
+ .sider .logo {
+ position: relative;
+ height: 55px;
+ padding-left: 24px;
+ overflow: hidden;
+ line-height: 55px;
+ background: #002140;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .sider .logo h1, .sider .logo img, .sider .logo svg {
+ display: inline-block;
+ vertical-align: middle
+ }
+
+ .sider .logo img, .sider .logo svg {
+ height: 32px;
+ width: 32px
+ }
+
+ .sider .logo h1 {
+ color: #fff;
+ font-size: 20px;
+ margin: 0 0 0 12px;
+ font-family: Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;
+ font-weight: 600;
+ vertical-align: middle
+ }
+
+ .sider.light {
+ background-color: #fff;
+ -webkit-box-shadow: 2px 0 8px 0 rgba(29,35,41,.05);
+ box-shadow: 2px 0 8px 0 rgba(29,35,41,.05)
+ }
+
+ .sider.light .logo {
+ background: #fff;
+ -webkit-box-shadow: 1px 1px 0 0 #e8e8e8;
+ box-shadow: 1px 1px 0 0 #e8e8e8
+ }
+
+ .sider.light .logo h1 {
+ color: unset
+ }
+
+ .sider.light .ant-menu-light {
+ border-right-color: transparent
+ }
+
+.user-dropdown-menu span {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.user-dropdown-menu-wrapper.ant-dropdown-menu {
+ padding: 4px 0
+}
+
+ .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item {
+ width: 160px
+ }
+
+ .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item > .anticon:first-child, .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-item > a > .anticon:first-child, .user-dropdown-menu-wrapper.ant-dropdown-menu .ant-dropdown-menu-submenu-title > .anticon:first-child .ant-dropdown-menu-submenu-title > a > .anticon:first-child {
+ min-width: 12px;
+ margin-right: 8px
+ }
+
+.table-alert {
+ margin-bottom: 16px
+}
+
+.table-page-search-wrapper .ant-form-inline .ant-form-item {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ margin-bottom: 24px;
+ margin-right: 0
+}
+
+ .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control-wrapper {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1;
+ flex: 1 1;
+ display: inline-block;
+ vertical-align: middle
+ }
+
+ .table-page-search-wrapper .ant-form-inline .ant-form-item > .ant-form-item-label {
+ line-height: 32px;
+ padding-right: 8px;
+ width: auto
+ }
+
+ .table-page-search-wrapper .ant-form-inline .ant-form-item .ant-form-item-control {
+ height: 32px;
+ line-height: 32px
+ }
+
+.table-page-search-wrapper .table-page-search-submitButtons {
+ display: block;
+ margin-bottom: 24px;
+ white-space: nowrap
+}
+
+.content .table-operator {
+ margin-bottom: 18px
+}
+
+ .content .table-operator button {
+ margin-right: 8px
+ }
+
+.chart-card-header .meta[data-v-2ec411fc], .chart-card-header[data-v-2ec411fc] {
+ position: relative;
+ overflow: hidden;
+ width: 100%
+}
+
+.chart-card-header .meta[data-v-2ec411fc] {
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 22px
+}
+
+.chart-card-action[data-v-2ec411fc] {
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ right: 0
+}
+
+.chart-card-footer[data-v-2ec411fc] {
+ border-top: 1px solid #e8e8e8;
+ padding-top: 9px;
+ margin-top: 8px
+}
+
+.chart-card-footer > [data-v-2ec411fc] {
+ position: relative
+}
+
+.chart-card-footer .field[data-v-2ec411fc] {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ margin: 0
+}
+
+.chart-card-content[data-v-2ec411fc] {
+ margin-bottom: 12px;
+ position: relative;
+ height: 46px;
+ width: 100%
+}
+
+.chart-card-content .content-fix[data-v-2ec411fc] {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%
+}
+
+.total[data-v-2ec411fc] {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap;
+ color: #000;
+ margin-top: 4px;
+ margin-bottom: 0;
+ font-size: 30px;
+ line-height: 38px;
+ height: 38px
+}
+
+.antv-chart-mini[data-v-30aaf0d9] {
+ position: relative;
+ width: 100%
+}
+
+.antv-chart-mini .chart-wrapper[data-v-30aaf0d9] {
+ position: absolute;
+ bottom: -28px;
+ width: 100%
+}
+
+body[data-v-1cd0b9b6], html[data-v-1cd0b9b6] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-1cd0b9b6]::-ms-clear, input[data-v-1cd0b9b6]::-ms-reveal {
+ display: none
+}
+
+[data-v-1cd0b9b6], [data-v-1cd0b9b6]:after, [data-v-1cd0b9b6]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-1cd0b9b6] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-1cd0b9b6], aside[data-v-1cd0b9b6], dialog[data-v-1cd0b9b6], figcaption[data-v-1cd0b9b6], figure[data-v-1cd0b9b6], footer[data-v-1cd0b9b6], header[data-v-1cd0b9b6], hgroup[data-v-1cd0b9b6], main[data-v-1cd0b9b6], nav[data-v-1cd0b9b6], section[data-v-1cd0b9b6] {
+ display: block
+}
+
+body[data-v-1cd0b9b6] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-1cd0b9b6]:focus {
+ outline: none !important
+}
+
+hr[data-v-1cd0b9b6] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-1cd0b9b6], h2[data-v-1cd0b9b6], h3[data-v-1cd0b9b6], h4[data-v-1cd0b9b6], h5[data-v-1cd0b9b6], h6[data-v-1cd0b9b6] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-1cd0b9b6] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-1cd0b9b6], abbr[title][data-v-1cd0b9b6] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-1cd0b9b6] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-1cd0b9b6], input[type=password][data-v-1cd0b9b6], input[type=text][data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+ -webkit-appearance: none
+}
+
+dl[data-v-1cd0b9b6], ol[data-v-1cd0b9b6], ul[data-v-1cd0b9b6] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-1cd0b9b6], ol ul[data-v-1cd0b9b6], ul ol[data-v-1cd0b9b6], ul ul[data-v-1cd0b9b6] {
+ margin-bottom: 0
+}
+
+dt[data-v-1cd0b9b6] {
+ font-weight: 500
+}
+
+dd[data-v-1cd0b9b6] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-1cd0b9b6] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-1cd0b9b6] {
+ font-style: italic
+}
+
+b[data-v-1cd0b9b6], strong[data-v-1cd0b9b6] {
+ font-weight: bolder
+}
+
+small[data-v-1cd0b9b6] {
+ font-size: 80%
+}
+
+sub[data-v-1cd0b9b6], sup[data-v-1cd0b9b6] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-1cd0b9b6] {
+ bottom: -.25em
+}
+
+sup[data-v-1cd0b9b6] {
+ top: -.5em
+}
+
+a[data-v-1cd0b9b6] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-1cd0b9b6]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-1cd0b9b6]:active {
+ color: #d4380d
+ }
+
+ a[data-v-1cd0b9b6]:active, a[data-v-1cd0b9b6]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-1cd0b9b6] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-1cd0b9b6], kbd[data-v-1cd0b9b6], pre[data-v-1cd0b9b6], samp[data-v-1cd0b9b6] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-1cd0b9b6] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-1cd0b9b6] {
+ margin: 0 0 1em
+}
+
+img[data-v-1cd0b9b6] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-1cd0b9b6]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-1cd0b9b6], a[data-v-1cd0b9b6], area[data-v-1cd0b9b6], button[data-v-1cd0b9b6], input[data-v-1cd0b9b6]:not([type=range]), label[data-v-1cd0b9b6], select[data-v-1cd0b9b6], summary[data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-1cd0b9b6] {
+ border-collapse: collapse
+}
+
+caption[data-v-1cd0b9b6] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-1cd0b9b6] {
+ text-align: inherit
+}
+
+button[data-v-1cd0b9b6], input[data-v-1cd0b9b6], optgroup[data-v-1cd0b9b6], select[data-v-1cd0b9b6], textarea[data-v-1cd0b9b6] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-1cd0b9b6], input[data-v-1cd0b9b6] {
+ overflow: visible
+}
+
+button[data-v-1cd0b9b6], select[data-v-1cd0b9b6] {
+ text-transform: none
+}
+
+[type=reset][data-v-1cd0b9b6], [type=submit][data-v-1cd0b9b6], button[data-v-1cd0b9b6], html [type=button][data-v-1cd0b9b6] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-1cd0b9b6]::-moz-focus-inner, [type=reset][data-v-1cd0b9b6]::-moz-focus-inner, [type=submit][data-v-1cd0b9b6]::-moz-focus-inner, button[data-v-1cd0b9b6]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-1cd0b9b6], input[type=radio][data-v-1cd0b9b6] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-1cd0b9b6], input[type=datetime-local][data-v-1cd0b9b6], input[type=month][data-v-1cd0b9b6], input[type=time][data-v-1cd0b9b6] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-1cd0b9b6] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-1cd0b9b6] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-1cd0b9b6] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-1cd0b9b6] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-1cd0b9b6]::-webkit-inner-spin-button, [type=number][data-v-1cd0b9b6]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-1cd0b9b6] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-1cd0b9b6]::-webkit-search-cancel-button, [type=search][data-v-1cd0b9b6]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-1cd0b9b6]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-1cd0b9b6] {
+ display: inline-block
+}
+
+summary[data-v-1cd0b9b6] {
+ display: list-item
+}
+
+template[data-v-1cd0b9b6] {
+ display: none
+}
+
+[hidden][data-v-1cd0b9b6] {
+ display: none !important
+}
+
+mark[data-v-1cd0b9b6] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-1cd0b9b6]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-1cd0b9b6]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-1cd0b9b6] {
+ zoom: 1
+}
+
+ .clearfix[data-v-1cd0b9b6]:after, .clearfix[data-v-1cd0b9b6]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-1cd0b9b6]:after {
+ clear: both
+ }
+
+.anticon[data-v-1cd0b9b6] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-1cd0b9b6] {
+ line-height: 1
+}
+
+.anticon svg[data-v-1cd0b9b6] {
+ display: inline-block
+}
+
+.anticon[data-v-1cd0b9b6]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-1cd0b9b6] {
+ display: block
+}
+
+.anticon[tabindex][data-v-1cd0b9b6] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-1cd0b9b6], .anticon-spin[data-v-1cd0b9b6]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-1cd0b9b6 1s linear infinite;
+ animation: loadingCircle-data-v-1cd0b9b6 1s linear infinite
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6], .fade-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-1cd0b9b6], .fade-enter.fade-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antFadeIn-data-v-1cd0b9b6;
+ animation-name: antFadeIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antFadeOut-data-v-1cd0b9b6;
+ animation-name: antFadeOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6] {
+ opacity: 0
+}
+
+.fade-appear[data-v-1cd0b9b6], .fade-enter[data-v-1cd0b9b6], .fade-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-1cd0b9b6 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-1cd0b9b6 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-1cd0b9b6 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-1cd0b9b6 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-1cd0b9b6], .move-up-enter[data-v-1cd0b9b6], .move-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-1cd0b9b6], .move-up-enter.move-up-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveUpIn-data-v-1cd0b9b6;
+ animation-name: antMoveUpIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveUpOut-data-v-1cd0b9b6;
+ animation-name: antMoveUpOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-1cd0b9b6], .move-up-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-1cd0b9b6], .move-down-enter[data-v-1cd0b9b6], .move-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-1cd0b9b6], .move-down-enter.move-down-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveDownIn-data-v-1cd0b9b6;
+ animation-name: antMoveDownIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveDownOut-data-v-1cd0b9b6;
+ animation-name: antMoveDownOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-1cd0b9b6], .move-down-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-1cd0b9b6], .move-left-enter[data-v-1cd0b9b6], .move-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-1cd0b9b6], .move-left-enter.move-left-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveLeftIn-data-v-1cd0b9b6;
+ animation-name: antMoveLeftIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveLeftOut-data-v-1cd0b9b6;
+ animation-name: antMoveLeftOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-1cd0b9b6], .move-left-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-1cd0b9b6], .move-right-enter[data-v-1cd0b9b6], .move-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-1cd0b9b6], .move-right-enter.move-right-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveRightIn-data-v-1cd0b9b6;
+ animation-name: antMoveRightIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antMoveRightOut-data-v-1cd0b9b6;
+ animation-name: antMoveRightOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-1cd0b9b6], .move-right-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-1cd0b9b6 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-1cd0b9b6 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-1cd0b9b6], [ant-click-animating=true][data-v-1cd0b9b6] {
+ position: relative
+}
+
+html[data-v-1cd0b9b6] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-1cd0b9b6], [ant-click-animating-without-extra-node=true][data-v-1cd0b9b6]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-1cd0b9b6 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-1cd0b9b6 .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-1cd0b9b6 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-1cd0b9b6 .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-1cd0b9b6 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-1cd0b9b6 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-1cd0b9b6 {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-1cd0b9b6 {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-1cd0b9b6], .slide-up-enter[data-v-1cd0b9b6], .slide-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-1cd0b9b6], .slide-up-enter.slide-up-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideUpIn-data-v-1cd0b9b6;
+ animation-name: antSlideUpIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideUpOut-data-v-1cd0b9b6;
+ animation-name: antSlideUpOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-1cd0b9b6], .slide-up-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-1cd0b9b6], .slide-down-enter[data-v-1cd0b9b6], .slide-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-1cd0b9b6], .slide-down-enter.slide-down-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideDownIn-data-v-1cd0b9b6;
+ animation-name: antSlideDownIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideDownOut-data-v-1cd0b9b6;
+ animation-name: antSlideDownOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-1cd0b9b6], .slide-down-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-1cd0b9b6], .slide-left-enter[data-v-1cd0b9b6], .slide-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-1cd0b9b6], .slide-left-enter.slide-left-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideLeftIn-data-v-1cd0b9b6;
+ animation-name: antSlideLeftIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideLeftOut-data-v-1cd0b9b6;
+ animation-name: antSlideLeftOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-1cd0b9b6], .slide-left-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-1cd0b9b6], .slide-right-enter[data-v-1cd0b9b6], .slide-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-1cd0b9b6], .slide-right-enter.slide-right-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideRightIn-data-v-1cd0b9b6;
+ animation-name: antSlideRightIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSlideRightOut-data-v-1cd0b9b6;
+ animation-name: antSlideRightOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-1cd0b9b6], .slide-right-enter[data-v-1cd0b9b6] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-1cd0b9b6], .swing-enter[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-1cd0b9b6], .swing-enter.swing-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antSwingIn-data-v-1cd0b9b6;
+ animation-name: antSwingIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-1cd0b9b6 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-1cd0b9b6 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-1cd0b9b6], .zoom-enter[data-v-1cd0b9b6], .zoom-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-1cd0b9b6], .zoom-enter.zoom-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomIn-data-v-1cd0b9b6;
+ animation-name: antZoomIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomOut-data-v-1cd0b9b6;
+ animation-name: antZoomOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-1cd0b9b6], .zoom-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-1cd0b9b6], .zoom-big-enter[data-v-1cd0b9b6], .zoom-big-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-1cd0b9b6], .zoom-big-enter.zoom-big-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomBigIn-data-v-1cd0b9b6;
+ animation-name: antZoomBigIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomBigOut-data-v-1cd0b9b6;
+ animation-name: antZoomBigOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-1cd0b9b6], .zoom-big-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-1cd0b9b6], .zoom-big-fast-enter[data-v-1cd0b9b6], .zoom-big-fast-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-1cd0b9b6], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomBigIn-data-v-1cd0b9b6;
+ animation-name: antZoomBigIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomBigOut-data-v-1cd0b9b6;
+ animation-name: antZoomBigOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-1cd0b9b6], .zoom-big-fast-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-1cd0b9b6], .zoom-up-enter[data-v-1cd0b9b6], .zoom-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-1cd0b9b6], .zoom-up-enter.zoom-up-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomUpIn-data-v-1cd0b9b6;
+ animation-name: antZoomUpIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomUpOut-data-v-1cd0b9b6;
+ animation-name: antZoomUpOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-1cd0b9b6], .zoom-up-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-1cd0b9b6], .zoom-down-enter[data-v-1cd0b9b6], .zoom-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-1cd0b9b6], .zoom-down-enter.zoom-down-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomDownIn-data-v-1cd0b9b6;
+ animation-name: antZoomDownIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomDownOut-data-v-1cd0b9b6;
+ animation-name: antZoomDownOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-1cd0b9b6], .zoom-down-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-1cd0b9b6], .zoom-left-enter[data-v-1cd0b9b6], .zoom-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-1cd0b9b6], .zoom-left-enter.zoom-left-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomLeftIn-data-v-1cd0b9b6;
+ animation-name: antZoomLeftIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomLeftOut-data-v-1cd0b9b6;
+ animation-name: antZoomLeftOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-1cd0b9b6], .zoom-left-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-1cd0b9b6], .zoom-right-enter[data-v-1cd0b9b6], .zoom-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-1cd0b9b6], .zoom-right-enter.zoom-right-enter-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomRightIn-data-v-1cd0b9b6;
+ animation-name: antZoomRightIn-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-1cd0b9b6] {
+ -webkit-animation-name: antZoomRightOut-data-v-1cd0b9b6;
+ animation-name: antZoomRightOut-data-v-1cd0b9b6;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-1cd0b9b6], .zoom-right-enter[data-v-1cd0b9b6] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-1cd0b9b6] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-1cd0b9b6 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-1cd0b9b6] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-1cd0b9b6], .ant-motion-collapse[data-v-1cd0b9b6] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-1cd0b9b6] {
+ overflow: hidden
+}
+
+.ant-pro-smooth-area[data-v-1cd0b9b6] {
+ position: relative;
+ width: 100%
+}
+
+.ant-pro-smooth-area .chart-wrapper[data-v-1cd0b9b6] {
+ position: absolute;
+ bottom: -28px;
+ width: 100%
+}
+
+.antv-chart-mini[data-v-1ff3f2b1] {
+ position: relative;
+ width: 100%
+}
+
+.antv-chart-mini .chart-wrapper[data-v-1ff3f2b1] {
+ position: absolute;
+ bottom: -28px;
+ width: 100%
+}
+
+.chart-mini-progress[data-v-430bb431] {
+ padding: 5px 0;
+ position: relative;
+ width: 100%
+}
+
+.chart-mini-progress .target[data-v-430bb431] {
+ position: absolute;
+ top: 0;
+ bottom: 0
+}
+
+.chart-mini-progress .target span[data-v-430bb431] {
+ border-radius: 100px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 4px;
+ width: 2px
+}
+
+ .chart-mini-progress .target span[data-v-430bb431]:last-child {
+ top: auto;
+ bottom: 0
+ }
+
+.chart-mini-progress .progress-wrapper[data-v-430bb431] {
+ background-color: #f5f5f5;
+ position: relative
+}
+
+.chart-mini-progress .progress-wrapper .progress[data-v-430bb431] {
+ -webkit-transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+ transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+ border-radius: 1px 0 0 1px;
+ background-color: #1890ff;
+ width: 0;
+ height: 100%
+}
+
+.rank[data-v-e1fcea82] {
+ padding: 0 32px 32px 72px
+}
+
+.rank .list[data-v-e1fcea82] {
+ margin: 25px 0 0;
+ padding: 0;
+ list-style: none
+}
+
+.rank .list li[data-v-e1fcea82] {
+ margin-top: 16px
+}
+
+.rank .list li span[data-v-e1fcea82] {
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 22px
+}
+
+ .rank .list li span[data-v-e1fcea82]:first-child {
+ background-color: #f5f5f5;
+ border-radius: 20px;
+ display: inline-block;
+ font-size: 12px;
+ font-weight: 600;
+ margin-right: 24px;
+ height: 20px;
+ line-height: 20px;
+ width: 20px;
+ text-align: center
+ }
+
+.rank .list li span.active[data-v-e1fcea82] {
+ background-color: #314659;
+ color: #fff
+}
+
+.rank .list li span[data-v-e1fcea82]:last-child {
+ float: right
+}
+
+.mobile .rank[data-v-e1fcea82] {
+ padding: 0 32px 32px 32px
+}
+
+.ant-pro-avatar-list {
+ display: inline-block
+}
+
+ .ant-pro-avatar-list ul {
+ list-style: none;
+ display: inline-block;
+ padding: 0;
+ margin: 0 0 0 8px;
+ font-size: 0
+ }
+
+.ant-pro-avatar-list-item {
+ display: inline-block;
+ font-size: 14px;
+ margin-left: -8px;
+ width: 32px;
+ height: 32px
+}
+
+ .ant-pro-avatar-list-item :global .ant-avatar {
+ border: 1px solid #fff;
+ cursor: pointer
+ }
+
+ .ant-pro-avatar-list-item.large {
+ width: 40px;
+ height: 40px
+ }
+
+ .ant-pro-avatar-list-item.small {
+ width: 24px;
+ height: 24px
+ }
+
+ .ant-pro-avatar-list-item.mini {
+ width: 20px;
+ height: 20px
+ }
+
+ .ant-pro-avatar-list-item.mini :global .ant-avatar {
+ width: 20px;
+ height: 20px;
+ line-height: 20px
+ }
+
+ .ant-pro-avatar-list-item.mini :global .ant-avatar .ant-avatar-string {
+ font-size: 12px;
+ line-height: 18px
+ }
+
+.ant-pro-footer-toolbar {
+ position: fixed;
+ width: 100%;
+ bottom: 0;
+ right: 0;
+ height: 56px;
+ line-height: 56px;
+ -webkit-box-shadow: 0 -1px 2px rgba(0,0,0,.03);
+ box-shadow: 0 -1px 2px rgba(0,0,0,.03);
+ background: #fff;
+ border-top: 1px solid #e8e8e8;
+ padding: 0 24px;
+ z-index: 9
+}
+
+ .ant-pro-footer-toolbar:after {
+ content: "";
+ display: block;
+ clear: both
+ }
+
+body[data-v-a16f84d8], html[data-v-a16f84d8] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-a16f84d8]::-ms-clear, input[data-v-a16f84d8]::-ms-reveal {
+ display: none
+}
+
+[data-v-a16f84d8], [data-v-a16f84d8]:after, [data-v-a16f84d8]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-a16f84d8] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-a16f84d8], aside[data-v-a16f84d8], dialog[data-v-a16f84d8], figcaption[data-v-a16f84d8], figure[data-v-a16f84d8], footer[data-v-a16f84d8], header[data-v-a16f84d8], hgroup[data-v-a16f84d8], main[data-v-a16f84d8], nav[data-v-a16f84d8], section[data-v-a16f84d8] {
+ display: block
+}
+
+body[data-v-a16f84d8] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-a16f84d8]:focus {
+ outline: none !important
+}
+
+hr[data-v-a16f84d8] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-a16f84d8], h2[data-v-a16f84d8], h3[data-v-a16f84d8], h4[data-v-a16f84d8], h5[data-v-a16f84d8], h6[data-v-a16f84d8] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-a16f84d8] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-a16f84d8], abbr[title][data-v-a16f84d8] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-a16f84d8] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-a16f84d8], input[type=password][data-v-a16f84d8], input[type=text][data-v-a16f84d8], textarea[data-v-a16f84d8] {
+ -webkit-appearance: none
+}
+
+dl[data-v-a16f84d8], ol[data-v-a16f84d8], ul[data-v-a16f84d8] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-a16f84d8], ol ul[data-v-a16f84d8], ul ol[data-v-a16f84d8], ul ul[data-v-a16f84d8] {
+ margin-bottom: 0
+}
+
+dt[data-v-a16f84d8] {
+ font-weight: 500
+}
+
+dd[data-v-a16f84d8] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-a16f84d8] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-a16f84d8] {
+ font-style: italic
+}
+
+b[data-v-a16f84d8], strong[data-v-a16f84d8] {
+ font-weight: bolder
+}
+
+small[data-v-a16f84d8] {
+ font-size: 80%
+}
+
+sub[data-v-a16f84d8], sup[data-v-a16f84d8] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-a16f84d8] {
+ bottom: -.25em
+}
+
+sup[data-v-a16f84d8] {
+ top: -.5em
+}
+
+a[data-v-a16f84d8] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-a16f84d8]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-a16f84d8]:active {
+ color: #d4380d
+ }
+
+ a[data-v-a16f84d8]:active, a[data-v-a16f84d8]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-a16f84d8] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-a16f84d8], kbd[data-v-a16f84d8], pre[data-v-a16f84d8], samp[data-v-a16f84d8] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-a16f84d8] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-a16f84d8] {
+ margin: 0 0 1em
+}
+
+img[data-v-a16f84d8] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-a16f84d8]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-a16f84d8], a[data-v-a16f84d8], area[data-v-a16f84d8], button[data-v-a16f84d8], input[data-v-a16f84d8]:not([type=range]), label[data-v-a16f84d8], select[data-v-a16f84d8], summary[data-v-a16f84d8], textarea[data-v-a16f84d8] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-a16f84d8] {
+ border-collapse: collapse
+}
+
+caption[data-v-a16f84d8] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-a16f84d8] {
+ text-align: inherit
+}
+
+button[data-v-a16f84d8], input[data-v-a16f84d8], optgroup[data-v-a16f84d8], select[data-v-a16f84d8], textarea[data-v-a16f84d8] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-a16f84d8], input[data-v-a16f84d8] {
+ overflow: visible
+}
+
+button[data-v-a16f84d8], select[data-v-a16f84d8] {
+ text-transform: none
+}
+
+[type=reset][data-v-a16f84d8], [type=submit][data-v-a16f84d8], button[data-v-a16f84d8], html [type=button][data-v-a16f84d8] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-a16f84d8]::-moz-focus-inner, [type=reset][data-v-a16f84d8]::-moz-focus-inner, [type=submit][data-v-a16f84d8]::-moz-focus-inner, button[data-v-a16f84d8]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-a16f84d8], input[type=radio][data-v-a16f84d8] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-a16f84d8], input[type=datetime-local][data-v-a16f84d8], input[type=month][data-v-a16f84d8], input[type=time][data-v-a16f84d8] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-a16f84d8] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-a16f84d8] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-a16f84d8] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-a16f84d8] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-a16f84d8]::-webkit-inner-spin-button, [type=number][data-v-a16f84d8]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-a16f84d8] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-a16f84d8]::-webkit-search-cancel-button, [type=search][data-v-a16f84d8]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-a16f84d8]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-a16f84d8] {
+ display: inline-block
+}
+
+summary[data-v-a16f84d8] {
+ display: list-item
+}
+
+template[data-v-a16f84d8] {
+ display: none
+}
+
+[hidden][data-v-a16f84d8] {
+ display: none !important
+}
+
+mark[data-v-a16f84d8] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-a16f84d8]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-a16f84d8]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-a16f84d8] {
+ zoom: 1
+}
+
+ .clearfix[data-v-a16f84d8]:after, .clearfix[data-v-a16f84d8]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-a16f84d8]:after {
+ clear: both
+ }
+
+.anticon[data-v-a16f84d8] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-a16f84d8] {
+ line-height: 1
+}
+
+.anticon svg[data-v-a16f84d8] {
+ display: inline-block
+}
+
+.anticon[data-v-a16f84d8]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-a16f84d8] {
+ display: block
+}
+
+.anticon[tabindex][data-v-a16f84d8] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-a16f84d8], .anticon-spin[data-v-a16f84d8]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-a16f84d8 1s linear infinite;
+ animation: loadingCircle-data-v-a16f84d8 1s linear infinite
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8], .fade-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-a16f84d8], .fade-enter.fade-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antFadeIn-data-v-a16f84d8;
+ animation-name: antFadeIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antFadeOut-data-v-a16f84d8;
+ animation-name: antFadeOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8] {
+ opacity: 0
+}
+
+.fade-appear[data-v-a16f84d8], .fade-enter[data-v-a16f84d8], .fade-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-a16f84d8 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-a16f84d8 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-a16f84d8 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-a16f84d8 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-a16f84d8], .move-up-enter[data-v-a16f84d8], .move-up-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-a16f84d8], .move-up-enter.move-up-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveUpIn-data-v-a16f84d8;
+ animation-name: antMoveUpIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveUpOut-data-v-a16f84d8;
+ animation-name: antMoveUpOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-a16f84d8], .move-up-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-a16f84d8], .move-down-enter[data-v-a16f84d8], .move-down-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-a16f84d8], .move-down-enter.move-down-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveDownIn-data-v-a16f84d8;
+ animation-name: antMoveDownIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveDownOut-data-v-a16f84d8;
+ animation-name: antMoveDownOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-a16f84d8], .move-down-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-a16f84d8], .move-left-enter[data-v-a16f84d8], .move-left-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-a16f84d8], .move-left-enter.move-left-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveLeftIn-data-v-a16f84d8;
+ animation-name: antMoveLeftIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveLeftOut-data-v-a16f84d8;
+ animation-name: antMoveLeftOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-a16f84d8], .move-left-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-a16f84d8], .move-right-enter[data-v-a16f84d8], .move-right-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-a16f84d8], .move-right-enter.move-right-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveRightIn-data-v-a16f84d8;
+ animation-name: antMoveRightIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antMoveRightOut-data-v-a16f84d8;
+ animation-name: antMoveRightOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-a16f84d8], .move-right-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-a16f84d8 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-a16f84d8 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-a16f84d8], [ant-click-animating=true][data-v-a16f84d8] {
+ position: relative
+}
+
+html[data-v-a16f84d8] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-a16f84d8], [ant-click-animating-without-extra-node=true][data-v-a16f84d8]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-a16f84d8 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-a16f84d8 .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-a16f84d8 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-a16f84d8 .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-a16f84d8 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-a16f84d8 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-a16f84d8 {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-a16f84d8 {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-a16f84d8], .slide-up-enter[data-v-a16f84d8], .slide-up-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-a16f84d8], .slide-up-enter.slide-up-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideUpIn-data-v-a16f84d8;
+ animation-name: antSlideUpIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideUpOut-data-v-a16f84d8;
+ animation-name: antSlideUpOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-a16f84d8], .slide-up-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-a16f84d8], .slide-down-enter[data-v-a16f84d8], .slide-down-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-a16f84d8], .slide-down-enter.slide-down-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideDownIn-data-v-a16f84d8;
+ animation-name: antSlideDownIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideDownOut-data-v-a16f84d8;
+ animation-name: antSlideDownOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-a16f84d8], .slide-down-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-a16f84d8], .slide-left-enter[data-v-a16f84d8], .slide-left-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-a16f84d8], .slide-left-enter.slide-left-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideLeftIn-data-v-a16f84d8;
+ animation-name: antSlideLeftIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideLeftOut-data-v-a16f84d8;
+ animation-name: antSlideLeftOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-a16f84d8], .slide-left-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-a16f84d8], .slide-right-enter[data-v-a16f84d8], .slide-right-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-a16f84d8], .slide-right-enter.slide-right-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideRightIn-data-v-a16f84d8;
+ animation-name: antSlideRightIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSlideRightOut-data-v-a16f84d8;
+ animation-name: antSlideRightOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-a16f84d8], .slide-right-enter[data-v-a16f84d8] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-a16f84d8], .swing-enter[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-a16f84d8], .swing-enter.swing-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antSwingIn-data-v-a16f84d8;
+ animation-name: antSwingIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-a16f84d8 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-a16f84d8 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-a16f84d8], .zoom-enter[data-v-a16f84d8], .zoom-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-a16f84d8], .zoom-enter.zoom-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomIn-data-v-a16f84d8;
+ animation-name: antZoomIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomOut-data-v-a16f84d8;
+ animation-name: antZoomOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-a16f84d8], .zoom-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-a16f84d8], .zoom-big-enter[data-v-a16f84d8], .zoom-big-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-a16f84d8], .zoom-big-enter.zoom-big-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomBigIn-data-v-a16f84d8;
+ animation-name: antZoomBigIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomBigOut-data-v-a16f84d8;
+ animation-name: antZoomBigOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-a16f84d8], .zoom-big-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-a16f84d8], .zoom-big-fast-enter[data-v-a16f84d8], .zoom-big-fast-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-a16f84d8], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomBigIn-data-v-a16f84d8;
+ animation-name: antZoomBigIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomBigOut-data-v-a16f84d8;
+ animation-name: antZoomBigOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-a16f84d8], .zoom-big-fast-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-a16f84d8], .zoom-up-enter[data-v-a16f84d8], .zoom-up-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-a16f84d8], .zoom-up-enter.zoom-up-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomUpIn-data-v-a16f84d8;
+ animation-name: antZoomUpIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomUpOut-data-v-a16f84d8;
+ animation-name: antZoomUpOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-a16f84d8], .zoom-up-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-a16f84d8], .zoom-down-enter[data-v-a16f84d8], .zoom-down-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-a16f84d8], .zoom-down-enter.zoom-down-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomDownIn-data-v-a16f84d8;
+ animation-name: antZoomDownIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomDownOut-data-v-a16f84d8;
+ animation-name: antZoomDownOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-a16f84d8], .zoom-down-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-a16f84d8], .zoom-left-enter[data-v-a16f84d8], .zoom-left-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-a16f84d8], .zoom-left-enter.zoom-left-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomLeftIn-data-v-a16f84d8;
+ animation-name: antZoomLeftIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomLeftOut-data-v-a16f84d8;
+ animation-name: antZoomLeftOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-a16f84d8], .zoom-left-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-a16f84d8], .zoom-right-enter[data-v-a16f84d8], .zoom-right-leave[data-v-a16f84d8] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-a16f84d8], .zoom-right-enter.zoom-right-enter-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomRightIn-data-v-a16f84d8;
+ animation-name: antZoomRightIn-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-a16f84d8] {
+ -webkit-animation-name: antZoomRightOut-data-v-a16f84d8;
+ animation-name: antZoomRightOut-data-v-a16f84d8;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-a16f84d8], .zoom-right-enter[data-v-a16f84d8] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-a16f84d8] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-a16f84d8 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-a16f84d8] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-a16f84d8], .ant-motion-collapse[data-v-a16f84d8] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-a16f84d8] {
+ overflow: hidden
+}
+
+.ant-pro-number-info .ant-pro-number-info-subtitle[data-v-a16f84d8] {
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ height: 22px;
+ line-height: 22px;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap
+}
+
+.ant-pro-number-info .number-info-value[data-v-a16f84d8] {
+ margin-top: 4px;
+ font-size: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ word-break: break-all;
+ white-space: nowrap
+}
+
+.ant-pro-number-info .number-info-value > span[data-v-a16f84d8] {
+ color: rgba(0,0,0,.85);
+ display: inline-block;
+ line-height: 32px;
+ height: 32px;
+ font-size: 24px;
+ margin-right: 32px
+}
+
+.ant-pro-number-info .number-info-value .sub-total[data-v-a16f84d8] {
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ vertical-align: top;
+ margin-right: 0
+}
+
+.ant-pro-number-info .number-info-value .sub-total i[data-v-a16f84d8] {
+ font-size: 12px;
+ -webkit-transform: scale(.82);
+ transform: scale(.82);
+ margin-left: 4px
+}
+
+.ant-pro-number-info .number-info-value .sub-total :global .anticon-caret-up[data-v-a16f84d8] {
+ color: #f5222d
+}
+
+.ant-pro-number-info .number-info-value .sub-total :global .anticon-caret-down[data-v-a16f84d8] {
+ color: #52c41a
+}
+
+.description-list .title[data-v-745c64a4] {
+ color: rgba(0,0,0,.85);
+ font-size: 14px;
+ font-weight: 500;
+ margin-bottom: 16px
+}
+
+.description-list[data-v-745c64a4] .term {
+ color: rgba(0,0,0,.85);
+ display: table-cell;
+ line-height: 20px;
+ margin-right: 8px;
+ padding-bottom: 16px;
+ white-space: nowrap
+}
+
+ .description-list[data-v-745c64a4] .term:not(:empty):after {
+ content: ":";
+ margin: 0 8px 0 2px;
+ position: relative;
+ top: -.5px
+ }
+
+.description-list[data-v-745c64a4] .content {
+ color: rgba(0,0,0,.65);
+ display: table-cell;
+ min-height: 22px;
+ line-height: 22px;
+ padding-bottom: 16px;
+ width: 100%
+}
+
+ .description-list[data-v-745c64a4] .content:empty {
+ content: " ";
+ height: 38px;
+ padding-bottom: 16px
+ }
+
+.description-list.small .title[data-v-745c64a4] {
+ font-size: 14px;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ margin-bottom: 12px
+}
+
+.description-list.small .content[data-v-745c64a4], .description-list.small[data-v-745c64a4] .term {
+ padding-bottom: 8px
+}
+
+.description-list.large .content[data-v-745c64a4], .description-list.large[data-v-745c64a4] .term {
+ padding-bottom: 16px
+}
+
+.description-list.large .title[data-v-745c64a4] {
+ font-size: 16px
+}
+
+.description-list.vertical .term[data-v-745c64a4] {
+ padding-bottom: 8px
+}
+
+.description-list.vertical .content[data-v-745c64a4], .description-list.vertical[data-v-745c64a4] .term {
+ display: block
+}
+
+body[data-v-9f28f096], html[data-v-9f28f096] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-9f28f096]::-ms-clear, input[data-v-9f28f096]::-ms-reveal {
+ display: none
+}
+
+[data-v-9f28f096], [data-v-9f28f096]:after, [data-v-9f28f096]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-9f28f096] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-9f28f096], aside[data-v-9f28f096], dialog[data-v-9f28f096], figcaption[data-v-9f28f096], figure[data-v-9f28f096], footer[data-v-9f28f096], header[data-v-9f28f096], hgroup[data-v-9f28f096], main[data-v-9f28f096], nav[data-v-9f28f096], section[data-v-9f28f096] {
+ display: block
+}
+
+body[data-v-9f28f096] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-9f28f096]:focus {
+ outline: none !important
+}
+
+hr[data-v-9f28f096] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-9f28f096], h2[data-v-9f28f096], h3[data-v-9f28f096], h4[data-v-9f28f096], h5[data-v-9f28f096], h6[data-v-9f28f096] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-9f28f096] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-9f28f096], abbr[title][data-v-9f28f096] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-9f28f096] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-9f28f096], input[type=password][data-v-9f28f096], input[type=text][data-v-9f28f096], textarea[data-v-9f28f096] {
+ -webkit-appearance: none
+}
+
+dl[data-v-9f28f096], ol[data-v-9f28f096], ul[data-v-9f28f096] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-9f28f096], ol ul[data-v-9f28f096], ul ol[data-v-9f28f096], ul ul[data-v-9f28f096] {
+ margin-bottom: 0
+}
+
+dt[data-v-9f28f096] {
+ font-weight: 500
+}
+
+dd[data-v-9f28f096] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-9f28f096] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-9f28f096] {
+ font-style: italic
+}
+
+b[data-v-9f28f096], strong[data-v-9f28f096] {
+ font-weight: bolder
+}
+
+small[data-v-9f28f096] {
+ font-size: 80%
+}
+
+sub[data-v-9f28f096], sup[data-v-9f28f096] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-9f28f096] {
+ bottom: -.25em
+}
+
+sup[data-v-9f28f096] {
+ top: -.5em
+}
+
+a[data-v-9f28f096] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-9f28f096]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-9f28f096]:active {
+ color: #d4380d
+ }
+
+ a[data-v-9f28f096]:active, a[data-v-9f28f096]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-9f28f096] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-9f28f096], kbd[data-v-9f28f096], pre[data-v-9f28f096], samp[data-v-9f28f096] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-9f28f096] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-9f28f096] {
+ margin: 0 0 1em
+}
+
+img[data-v-9f28f096] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-9f28f096]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-9f28f096], a[data-v-9f28f096], area[data-v-9f28f096], button[data-v-9f28f096], input[data-v-9f28f096]:not([type=range]), label[data-v-9f28f096], select[data-v-9f28f096], summary[data-v-9f28f096], textarea[data-v-9f28f096] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-9f28f096] {
+ border-collapse: collapse
+}
+
+caption[data-v-9f28f096] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-9f28f096] {
+ text-align: inherit
+}
+
+button[data-v-9f28f096], input[data-v-9f28f096], optgroup[data-v-9f28f096], select[data-v-9f28f096], textarea[data-v-9f28f096] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-9f28f096], input[data-v-9f28f096] {
+ overflow: visible
+}
+
+button[data-v-9f28f096], select[data-v-9f28f096] {
+ text-transform: none
+}
+
+[type=reset][data-v-9f28f096], [type=submit][data-v-9f28f096], button[data-v-9f28f096], html [type=button][data-v-9f28f096] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-9f28f096]::-moz-focus-inner, [type=reset][data-v-9f28f096]::-moz-focus-inner, [type=submit][data-v-9f28f096]::-moz-focus-inner, button[data-v-9f28f096]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-9f28f096], input[type=radio][data-v-9f28f096] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-9f28f096], input[type=datetime-local][data-v-9f28f096], input[type=month][data-v-9f28f096], input[type=time][data-v-9f28f096] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-9f28f096] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-9f28f096] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-9f28f096] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-9f28f096] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-9f28f096]::-webkit-inner-spin-button, [type=number][data-v-9f28f096]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-9f28f096] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-9f28f096]::-webkit-search-cancel-button, [type=search][data-v-9f28f096]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-9f28f096]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-9f28f096] {
+ display: inline-block
+}
+
+summary[data-v-9f28f096] {
+ display: list-item
+}
+
+template[data-v-9f28f096] {
+ display: none
+}
+
+[hidden][data-v-9f28f096] {
+ display: none !important
+}
+
+mark[data-v-9f28f096] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-9f28f096]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-9f28f096]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-9f28f096] {
+ zoom: 1
+}
+
+ .clearfix[data-v-9f28f096]:after, .clearfix[data-v-9f28f096]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-9f28f096]:after {
+ clear: both
+ }
+
+.anticon[data-v-9f28f096] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-9f28f096] {
+ line-height: 1
+}
+
+.anticon svg[data-v-9f28f096] {
+ display: inline-block
+}
+
+.anticon[data-v-9f28f096]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-9f28f096] {
+ display: block
+}
+
+.anticon[tabindex][data-v-9f28f096] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-9f28f096], .anticon-spin[data-v-9f28f096]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-9f28f096 1s linear infinite;
+ animation: loadingCircle-data-v-9f28f096 1s linear infinite
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096], .fade-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-9f28f096], .fade-enter.fade-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antFadeIn-data-v-9f28f096;
+ animation-name: antFadeIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antFadeOut-data-v-9f28f096;
+ animation-name: antFadeOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096] {
+ opacity: 0
+}
+
+.fade-appear[data-v-9f28f096], .fade-enter[data-v-9f28f096], .fade-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-9f28f096 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-9f28f096 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-9f28f096 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-9f28f096 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-9f28f096], .move-up-enter[data-v-9f28f096], .move-up-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-9f28f096], .move-up-enter.move-up-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveUpIn-data-v-9f28f096;
+ animation-name: antMoveUpIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveUpOut-data-v-9f28f096;
+ animation-name: antMoveUpOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-9f28f096], .move-up-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-9f28f096], .move-down-enter[data-v-9f28f096], .move-down-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-9f28f096], .move-down-enter.move-down-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveDownIn-data-v-9f28f096;
+ animation-name: antMoveDownIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveDownOut-data-v-9f28f096;
+ animation-name: antMoveDownOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-9f28f096], .move-down-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-9f28f096], .move-left-enter[data-v-9f28f096], .move-left-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-9f28f096], .move-left-enter.move-left-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveLeftIn-data-v-9f28f096;
+ animation-name: antMoveLeftIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveLeftOut-data-v-9f28f096;
+ animation-name: antMoveLeftOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-9f28f096], .move-left-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-9f28f096], .move-right-enter[data-v-9f28f096], .move-right-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-9f28f096], .move-right-enter.move-right-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveRightIn-data-v-9f28f096;
+ animation-name: antMoveRightIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antMoveRightOut-data-v-9f28f096;
+ animation-name: antMoveRightOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-9f28f096], .move-right-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-9f28f096 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-9f28f096 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-9f28f096], [ant-click-animating=true][data-v-9f28f096] {
+ position: relative
+}
+
+html[data-v-9f28f096] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-9f28f096], [ant-click-animating-without-extra-node=true][data-v-9f28f096]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-9f28f096 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-9f28f096 .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-9f28f096 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-9f28f096 .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-9f28f096 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-9f28f096 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-9f28f096 {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-9f28f096 {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-9f28f096], .slide-up-enter[data-v-9f28f096], .slide-up-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-9f28f096], .slide-up-enter.slide-up-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideUpIn-data-v-9f28f096;
+ animation-name: antSlideUpIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideUpOut-data-v-9f28f096;
+ animation-name: antSlideUpOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-9f28f096], .slide-up-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-9f28f096], .slide-down-enter[data-v-9f28f096], .slide-down-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-9f28f096], .slide-down-enter.slide-down-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideDownIn-data-v-9f28f096;
+ animation-name: antSlideDownIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideDownOut-data-v-9f28f096;
+ animation-name: antSlideDownOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-9f28f096], .slide-down-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-9f28f096], .slide-left-enter[data-v-9f28f096], .slide-left-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-9f28f096], .slide-left-enter.slide-left-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideLeftIn-data-v-9f28f096;
+ animation-name: antSlideLeftIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideLeftOut-data-v-9f28f096;
+ animation-name: antSlideLeftOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-9f28f096], .slide-left-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-9f28f096], .slide-right-enter[data-v-9f28f096], .slide-right-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-9f28f096], .slide-right-enter.slide-right-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideRightIn-data-v-9f28f096;
+ animation-name: antSlideRightIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antSlideRightOut-data-v-9f28f096;
+ animation-name: antSlideRightOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-9f28f096], .slide-right-enter[data-v-9f28f096] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-9f28f096], .swing-enter[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-9f28f096], .swing-enter.swing-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antSwingIn-data-v-9f28f096;
+ animation-name: antSwingIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-9f28f096 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-9f28f096 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-9f28f096], .zoom-enter[data-v-9f28f096], .zoom-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-9f28f096], .zoom-enter.zoom-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomIn-data-v-9f28f096;
+ animation-name: antZoomIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomOut-data-v-9f28f096;
+ animation-name: antZoomOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-9f28f096], .zoom-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-9f28f096], .zoom-big-enter[data-v-9f28f096], .zoom-big-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-9f28f096], .zoom-big-enter.zoom-big-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomBigIn-data-v-9f28f096;
+ animation-name: antZoomBigIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomBigOut-data-v-9f28f096;
+ animation-name: antZoomBigOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-9f28f096], .zoom-big-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-9f28f096], .zoom-big-fast-enter[data-v-9f28f096], .zoom-big-fast-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-9f28f096], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomBigIn-data-v-9f28f096;
+ animation-name: antZoomBigIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomBigOut-data-v-9f28f096;
+ animation-name: antZoomBigOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-9f28f096], .zoom-big-fast-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-9f28f096], .zoom-up-enter[data-v-9f28f096], .zoom-up-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-9f28f096], .zoom-up-enter.zoom-up-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomUpIn-data-v-9f28f096;
+ animation-name: antZoomUpIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomUpOut-data-v-9f28f096;
+ animation-name: antZoomUpOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-9f28f096], .zoom-up-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-9f28f096], .zoom-down-enter[data-v-9f28f096], .zoom-down-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-9f28f096], .zoom-down-enter.zoom-down-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomDownIn-data-v-9f28f096;
+ animation-name: antZoomDownIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomDownOut-data-v-9f28f096;
+ animation-name: antZoomDownOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-9f28f096], .zoom-down-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-9f28f096], .zoom-left-enter[data-v-9f28f096], .zoom-left-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-9f28f096], .zoom-left-enter.zoom-left-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomLeftIn-data-v-9f28f096;
+ animation-name: antZoomLeftIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomLeftOut-data-v-9f28f096;
+ animation-name: antZoomLeftOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-9f28f096], .zoom-left-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-9f28f096], .zoom-right-enter[data-v-9f28f096], .zoom-right-leave[data-v-9f28f096] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-9f28f096], .zoom-right-enter.zoom-right-enter-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomRightIn-data-v-9f28f096;
+ animation-name: antZoomRightIn-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-9f28f096] {
+ -webkit-animation-name: antZoomRightOut-data-v-9f28f096;
+ animation-name: antZoomRightOut-data-v-9f28f096;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-9f28f096], .zoom-right-enter[data-v-9f28f096] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-9f28f096] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-9f28f096 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-9f28f096] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-9f28f096], .ant-motion-collapse[data-v-9f28f096] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-9f28f096] {
+ overflow: hidden
+}
+
+.ant-pro-trend[data-v-9f28f096] {
+ display: inline-block;
+ font-size: 14px;
+ line-height: 22px
+}
+
+.ant-pro-trend .down[data-v-9f28f096], .ant-pro-trend .up[data-v-9f28f096] {
+ margin-left: 4px;
+ position: relative;
+ top: 1px
+}
+
+.ant-pro-trend .down i[data-v-9f28f096], .ant-pro-trend .up i[data-v-9f28f096] {
+ font-size: 12px;
+ -webkit-transform: scale(.83);
+ transform: scale(.83)
+}
+
+.ant-pro-trend .item-text[data-v-9f28f096] {
+ display: inline-block;
+ margin-left: 8px;
+ color: rgba(0,0,0,.85)
+}
+
+.ant-pro-trend .up[data-v-9f28f096] {
+ color: #f5222d
+}
+
+.ant-pro-trend .down[data-v-9f28f096] {
+ color: #52c41a;
+ top: -1px
+}
+
+.ant-pro-trend.reverse-color .up[data-v-9f28f096] {
+ color: #52c41a
+}
+
+.ant-pro-trend.reverse-color .down[data-v-9f28f096] {
+ color: #f5222d
+}
+
+.table-wrapper {
+ background: #fff
+}
+
+.s-table-tool {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ margin-bottom: 16px
+}
+
+ .s-table-tool .s-table-tool-left {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+
+ .s-table-tool .s-table-tool-right {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center
+ }
+
+ .s-table-tool .s-table-tool-right .s-tool-item {
+ font-size: 16px;
+ margin-left: 16px;
+ cursor: pointer
+ }
+
+.s-tool-column-item {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 4px 16px 4px 4px
+}
+
+ .s-tool-column-item .ant-checkbox-wrapper {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+
+ .s-tool-column-item .s-tool-column-handle {
+ opacity: .8;
+ cursor: move
+ }
+
+ .s-tool-column-item .s-tool-column-handle .anticon-more {
+ font-size: 12px;
+ margin-top: 2px
+ }
+
+ .s-tool-column-item .s-tool-column-handle .anticon-more + .anticon-more {
+ margin: 2px 4px 0 -8px
+ }
+
+.s-tool-column-header {
+ padding: 5px 16px 10px 24px;
+ min-width: 180px
+}
+
+.s-tool-column .ant-divider {
+ margin: 0
+}
+
+.s-tool-column .ant-checkbox-group {
+ padding: 4px 0;
+ display: block
+}
+
+.result[data-v-4aa70533] {
+ text-align: center;
+ width: 72%;
+ margin: 0 auto;
+ padding: 24px 0 8px
+}
+
+.result .icon[data-v-4aa70533] {
+ font-size: 72px;
+ line-height: 72px;
+ margin-bottom: 24px
+}
+
+.result .success[data-v-4aa70533] {
+ color: #52c41a
+}
+
+.result .error[data-v-4aa70533] {
+ color: red
+}
+
+.result .title[data-v-4aa70533] {
+ font-size: 24px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 32px;
+ margin-bottom: 16px
+}
+
+.result .description[data-v-4aa70533] {
+ font-size: 14px;
+ line-height: 22px;
+ color: rgba(0,0,0,.45);
+ margin-bottom: 24px
+}
+
+.result .extra[data-v-4aa70533] {
+ background: #fafafa;
+ padding: 24px 40px;
+ border-radius: 2px;
+ text-align: left
+}
+
+.result .action[data-v-4aa70533] {
+ margin-top: 32px
+}
+
+.mobile .result[data-v-4aa70533] {
+ width: 100%;
+ margin: 0 auto;
+ padding: unset
+}
+
+body[data-v-74e4dc71], html[data-v-74e4dc71] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-74e4dc71]::-ms-clear, input[data-v-74e4dc71]::-ms-reveal {
+ display: none
+}
+
+[data-v-74e4dc71], [data-v-74e4dc71]:after, [data-v-74e4dc71]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-74e4dc71] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-74e4dc71], aside[data-v-74e4dc71], dialog[data-v-74e4dc71], figcaption[data-v-74e4dc71], figure[data-v-74e4dc71], footer[data-v-74e4dc71], header[data-v-74e4dc71], hgroup[data-v-74e4dc71], main[data-v-74e4dc71], nav[data-v-74e4dc71], section[data-v-74e4dc71] {
+ display: block
+}
+
+body[data-v-74e4dc71] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-74e4dc71]:focus {
+ outline: none !important
+}
+
+hr[data-v-74e4dc71] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-74e4dc71], h2[data-v-74e4dc71], h3[data-v-74e4dc71], h4[data-v-74e4dc71], h5[data-v-74e4dc71], h6[data-v-74e4dc71] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-74e4dc71] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-74e4dc71], abbr[title][data-v-74e4dc71] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-74e4dc71] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-74e4dc71], input[type=password][data-v-74e4dc71], input[type=text][data-v-74e4dc71], textarea[data-v-74e4dc71] {
+ -webkit-appearance: none
+}
+
+dl[data-v-74e4dc71], ol[data-v-74e4dc71], ul[data-v-74e4dc71] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-74e4dc71], ol ul[data-v-74e4dc71], ul ol[data-v-74e4dc71], ul ul[data-v-74e4dc71] {
+ margin-bottom: 0
+}
+
+dt[data-v-74e4dc71] {
+ font-weight: 500
+}
+
+dd[data-v-74e4dc71] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-74e4dc71] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-74e4dc71] {
+ font-style: italic
+}
+
+b[data-v-74e4dc71], strong[data-v-74e4dc71] {
+ font-weight: bolder
+}
+
+small[data-v-74e4dc71] {
+ font-size: 80%
+}
+
+sub[data-v-74e4dc71], sup[data-v-74e4dc71] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-74e4dc71] {
+ bottom: -.25em
+}
+
+sup[data-v-74e4dc71] {
+ top: -.5em
+}
+
+a[data-v-74e4dc71] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-74e4dc71]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-74e4dc71]:active {
+ color: #d4380d
+ }
+
+ a[data-v-74e4dc71]:active, a[data-v-74e4dc71]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-74e4dc71] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-74e4dc71], kbd[data-v-74e4dc71], pre[data-v-74e4dc71], samp[data-v-74e4dc71] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-74e4dc71] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-74e4dc71] {
+ margin: 0 0 1em
+}
+
+img[data-v-74e4dc71] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-74e4dc71]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-74e4dc71], a[data-v-74e4dc71], area[data-v-74e4dc71], button[data-v-74e4dc71], input[data-v-74e4dc71]:not([type=range]), label[data-v-74e4dc71], select[data-v-74e4dc71], summary[data-v-74e4dc71], textarea[data-v-74e4dc71] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-74e4dc71] {
+ border-collapse: collapse
+}
+
+caption[data-v-74e4dc71] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-74e4dc71] {
+ text-align: inherit
+}
+
+button[data-v-74e4dc71], input[data-v-74e4dc71], optgroup[data-v-74e4dc71], select[data-v-74e4dc71], textarea[data-v-74e4dc71] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-74e4dc71], input[data-v-74e4dc71] {
+ overflow: visible
+}
+
+button[data-v-74e4dc71], select[data-v-74e4dc71] {
+ text-transform: none
+}
+
+[type=reset][data-v-74e4dc71], [type=submit][data-v-74e4dc71], button[data-v-74e4dc71], html [type=button][data-v-74e4dc71] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-74e4dc71]::-moz-focus-inner, [type=reset][data-v-74e4dc71]::-moz-focus-inner, [type=submit][data-v-74e4dc71]::-moz-focus-inner, button[data-v-74e4dc71]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-74e4dc71], input[type=radio][data-v-74e4dc71] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-74e4dc71], input[type=datetime-local][data-v-74e4dc71], input[type=month][data-v-74e4dc71], input[type=time][data-v-74e4dc71] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-74e4dc71] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-74e4dc71] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-74e4dc71] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-74e4dc71] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-74e4dc71]::-webkit-inner-spin-button, [type=number][data-v-74e4dc71]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-74e4dc71] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-74e4dc71]::-webkit-search-cancel-button, [type=search][data-v-74e4dc71]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-74e4dc71]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-74e4dc71] {
+ display: inline-block
+}
+
+summary[data-v-74e4dc71] {
+ display: list-item
+}
+
+template[data-v-74e4dc71] {
+ display: none
+}
+
+[hidden][data-v-74e4dc71] {
+ display: none !important
+}
+
+mark[data-v-74e4dc71] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-74e4dc71]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-74e4dc71]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-74e4dc71] {
+ zoom: 1
+}
+
+ .clearfix[data-v-74e4dc71]:after, .clearfix[data-v-74e4dc71]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-74e4dc71]:after {
+ clear: both
+ }
+
+.anticon[data-v-74e4dc71] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-74e4dc71] {
+ line-height: 1
+}
+
+.anticon svg[data-v-74e4dc71] {
+ display: inline-block
+}
+
+.anticon[data-v-74e4dc71]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-74e4dc71] {
+ display: block
+}
+
+.anticon[tabindex][data-v-74e4dc71] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-74e4dc71], .anticon-spin[data-v-74e4dc71]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-74e4dc71 1s linear infinite;
+ animation: loadingCircle-data-v-74e4dc71 1s linear infinite
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71], .fade-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-74e4dc71], .fade-enter.fade-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antFadeIn-data-v-74e4dc71;
+ animation-name: antFadeIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antFadeOut-data-v-74e4dc71;
+ animation-name: antFadeOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71] {
+ opacity: 0
+}
+
+.fade-appear[data-v-74e4dc71], .fade-enter[data-v-74e4dc71], .fade-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-74e4dc71 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-74e4dc71 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-74e4dc71 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-74e4dc71 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-74e4dc71], .move-up-enter[data-v-74e4dc71], .move-up-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-74e4dc71], .move-up-enter.move-up-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveUpIn-data-v-74e4dc71;
+ animation-name: antMoveUpIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveUpOut-data-v-74e4dc71;
+ animation-name: antMoveUpOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-74e4dc71], .move-up-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-74e4dc71], .move-down-enter[data-v-74e4dc71], .move-down-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-74e4dc71], .move-down-enter.move-down-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveDownIn-data-v-74e4dc71;
+ animation-name: antMoveDownIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveDownOut-data-v-74e4dc71;
+ animation-name: antMoveDownOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-74e4dc71], .move-down-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-74e4dc71], .move-left-enter[data-v-74e4dc71], .move-left-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-74e4dc71], .move-left-enter.move-left-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveLeftIn-data-v-74e4dc71;
+ animation-name: antMoveLeftIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveLeftOut-data-v-74e4dc71;
+ animation-name: antMoveLeftOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-74e4dc71], .move-left-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-74e4dc71], .move-right-enter[data-v-74e4dc71], .move-right-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-74e4dc71], .move-right-enter.move-right-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveRightIn-data-v-74e4dc71;
+ animation-name: antMoveRightIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antMoveRightOut-data-v-74e4dc71;
+ animation-name: antMoveRightOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-74e4dc71], .move-right-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-74e4dc71 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-74e4dc71 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-74e4dc71], [ant-click-animating=true][data-v-74e4dc71] {
+ position: relative
+}
+
+html[data-v-74e4dc71] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-74e4dc71], [ant-click-animating-without-extra-node=true][data-v-74e4dc71]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-74e4dc71 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-74e4dc71 .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-74e4dc71 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-74e4dc71 .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-74e4dc71 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-74e4dc71 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-74e4dc71 {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-74e4dc71 {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-74e4dc71], .slide-up-enter[data-v-74e4dc71], .slide-up-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-74e4dc71], .slide-up-enter.slide-up-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideUpIn-data-v-74e4dc71;
+ animation-name: antSlideUpIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideUpOut-data-v-74e4dc71;
+ animation-name: antSlideUpOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-74e4dc71], .slide-up-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-74e4dc71], .slide-down-enter[data-v-74e4dc71], .slide-down-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-74e4dc71], .slide-down-enter.slide-down-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideDownIn-data-v-74e4dc71;
+ animation-name: antSlideDownIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideDownOut-data-v-74e4dc71;
+ animation-name: antSlideDownOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-74e4dc71], .slide-down-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-74e4dc71], .slide-left-enter[data-v-74e4dc71], .slide-left-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-74e4dc71], .slide-left-enter.slide-left-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideLeftIn-data-v-74e4dc71;
+ animation-name: antSlideLeftIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideLeftOut-data-v-74e4dc71;
+ animation-name: antSlideLeftOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-74e4dc71], .slide-left-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-74e4dc71], .slide-right-enter[data-v-74e4dc71], .slide-right-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-74e4dc71], .slide-right-enter.slide-right-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideRightIn-data-v-74e4dc71;
+ animation-name: antSlideRightIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSlideRightOut-data-v-74e4dc71;
+ animation-name: antSlideRightOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-74e4dc71], .slide-right-enter[data-v-74e4dc71] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-74e4dc71], .swing-enter[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-74e4dc71], .swing-enter.swing-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antSwingIn-data-v-74e4dc71;
+ animation-name: antSwingIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-74e4dc71 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-74e4dc71 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-74e4dc71], .zoom-enter[data-v-74e4dc71], .zoom-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-74e4dc71], .zoom-enter.zoom-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomIn-data-v-74e4dc71;
+ animation-name: antZoomIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomOut-data-v-74e4dc71;
+ animation-name: antZoomOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-74e4dc71], .zoom-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-74e4dc71], .zoom-big-enter[data-v-74e4dc71], .zoom-big-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-74e4dc71], .zoom-big-enter.zoom-big-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomBigIn-data-v-74e4dc71;
+ animation-name: antZoomBigIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomBigOut-data-v-74e4dc71;
+ animation-name: antZoomBigOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-74e4dc71], .zoom-big-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-74e4dc71], .zoom-big-fast-enter[data-v-74e4dc71], .zoom-big-fast-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-74e4dc71], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomBigIn-data-v-74e4dc71;
+ animation-name: antZoomBigIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomBigOut-data-v-74e4dc71;
+ animation-name: antZoomBigOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-74e4dc71], .zoom-big-fast-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-74e4dc71], .zoom-up-enter[data-v-74e4dc71], .zoom-up-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-74e4dc71], .zoom-up-enter.zoom-up-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomUpIn-data-v-74e4dc71;
+ animation-name: antZoomUpIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomUpOut-data-v-74e4dc71;
+ animation-name: antZoomUpOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-74e4dc71], .zoom-up-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-74e4dc71], .zoom-down-enter[data-v-74e4dc71], .zoom-down-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-74e4dc71], .zoom-down-enter.zoom-down-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomDownIn-data-v-74e4dc71;
+ animation-name: antZoomDownIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomDownOut-data-v-74e4dc71;
+ animation-name: antZoomDownOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-74e4dc71], .zoom-down-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-74e4dc71], .zoom-left-enter[data-v-74e4dc71], .zoom-left-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-74e4dc71], .zoom-left-enter.zoom-left-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomLeftIn-data-v-74e4dc71;
+ animation-name: antZoomLeftIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomLeftOut-data-v-74e4dc71;
+ animation-name: antZoomLeftOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-74e4dc71], .zoom-left-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-74e4dc71], .zoom-right-enter[data-v-74e4dc71], .zoom-right-leave[data-v-74e4dc71] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-74e4dc71], .zoom-right-enter.zoom-right-enter-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomRightIn-data-v-74e4dc71;
+ animation-name: antZoomRightIn-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-74e4dc71] {
+ -webkit-animation-name: antZoomRightOut-data-v-74e4dc71;
+ animation-name: antZoomRightOut-data-v-74e4dc71;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-74e4dc71], .zoom-right-enter[data-v-74e4dc71] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-74e4dc71] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-74e4dc71 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-74e4dc71] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-74e4dc71], .ant-motion-collapse[data-v-74e4dc71] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-74e4dc71] {
+ overflow: hidden
+}
+
+ul[data-v-74e4dc71] {
+ list-style: none;
+ padding: 0;
+ overflow-y: scroll;
+ height: 250px
+}
+
+ul li[data-v-74e4dc71] {
+ display: inline-block;
+ padding: 12px;
+ margin: 3px 0;
+ border-radius: 2px
+}
+
+ ul li.active[data-v-74e4dc71], ul li[data-v-74e4dc71]:hover {
+ cursor: pointer;
+ color: #fff;
+ background-color: #fa541c
+ }
+
+body, html {
+ width: 100%;
+ height: 100%
+}
+
+input::-ms-clear, input::-ms-reveal {
+ display: none
+}
+
+*, :after, :before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
+ display: block
+}
+
+body {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"]:focus {
+ outline: none !important
+}
+
+hr {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title], abbr[title] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number], input[type=password], input[type=text], textarea {
+ -webkit-appearance: none
+}
+
+dl, ol, ul {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ ol ol, ol ul, ul ol, ul ul {
+ margin-bottom: 0
+ }
+
+dt {
+ font-weight: 500
+}
+
+dd {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote {
+ margin: 0 0 1em
+}
+
+dfn {
+ font-style: italic
+}
+
+b, strong {
+ font-weight: bolder
+}
+
+small {
+ font-size: 80%
+}
+
+sub, sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub {
+ bottom: -.25em
+}
+
+sup {
+ top: -.5em
+}
+
+a {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a:hover {
+ color: #ff7a45
+ }
+
+ a:active {
+ color: #d4380d
+ }
+
+ a:active, a:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+ a[disabled] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+ }
+
+code, kbd, pre, samp {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure {
+ margin: 0 0 1em
+}
+
+img {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg:not(:root) {
+ overflow: hidden
+}
+
+[role=button], a, area, button, input:not([type=range]), label, select, summary, textarea {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table {
+ border-collapse: collapse
+}
+
+caption {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th {
+ text-align: inherit
+}
+
+button, input, optgroup, select, textarea {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button, input {
+ overflow: visible
+}
+
+button, select {
+ text-transform: none
+}
+
+[type=reset], [type=submit], button, html [type=button] {
+ -webkit-appearance: button
+}
+
+ [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox], input[type=radio] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date], input[type=datetime-local], input[type=month], input[type=time] {
+ -webkit-appearance: listbox
+}
+
+textarea {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress {
+ vertical-align: baseline
+}
+
+[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output {
+ display: inline-block
+}
+
+summary {
+ display: list-item
+}
+
+template {
+ display: none
+}
+
+[hidden] {
+ display: none !important
+}
+
+mark {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix {
+ zoom: 1
+}
+
+ .clearfix:after, .clearfix:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix:after {
+ clear: both
+ }
+
+.anticon {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+ .anticon > * {
+ line-height: 1
+ }
+
+ .anticon svg {
+ display: inline-block
+ }
+
+ .anticon:before {
+ display: none
+ }
+
+ .anticon .anticon-icon {
+ display: block
+ }
+
+ .anticon[tabindex] {
+ cursor: pointer
+ }
+
+.anticon-spin, .anticon-spin:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle 1s linear infinite;
+ animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .fade-appear.fade-appear-active, .fade-enter.fade-enter-active {
+ -webkit-animation-name: antFadeIn;
+ animation-name: antFadeIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .fade-leave.fade-leave-active {
+ -webkit-animation-name: antFadeOut;
+ animation-name: antFadeOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.fade-appear, .fade-enter {
+ opacity: 0
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear, .move-up-enter, .move-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-up-appear.move-up-appear-active, .move-up-enter.move-up-enter-active {
+ -webkit-animation-name: antMoveUpIn;
+ animation-name: antMoveUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-up-leave.move-up-leave-active {
+ -webkit-animation-name: antMoveUpOut;
+ animation-name: antMoveUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-up-appear, .move-up-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-down-appear.move-down-appear-active, .move-down-enter.move-down-enter-active {
+ -webkit-animation-name: antMoveDownIn;
+ animation-name: antMoveDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-down-leave.move-down-leave-active {
+ -webkit-animation-name: antMoveDownOut;
+ animation-name: antMoveDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-down-appear, .move-down-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear, .move-left-enter, .move-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-left-appear.move-left-appear-active, .move-left-enter.move-left-enter-active {
+ -webkit-animation-name: antMoveLeftIn;
+ animation-name: antMoveLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-left-leave.move-left-leave-active {
+ -webkit-animation-name: antMoveLeftOut;
+ animation-name: antMoveLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-left-appear, .move-left-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear, .move-right-enter, .move-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-right-appear.move-right-appear-active, .move-right-enter.move-right-enter-active {
+ -webkit-animation-name: antMoveRightIn;
+ animation-name: antMoveRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-right-leave.move-right-leave-active {
+ -webkit-animation-name: antMoveRightOut;
+ animation-name: antMoveRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-right-appear, .move-right-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true], [ant-click-animating=true] {
+ position: relative
+}
+
+html {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear, .slide-up-enter, .slide-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-up-appear.slide-up-appear-active, .slide-up-enter.slide-up-enter-active {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-up-leave.slide-up-leave-active {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-up-appear, .slide-up-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-down-appear.slide-down-appear-active, .slide-down-enter.slide-down-enter-active {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-down-leave.slide-down-leave-active {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-down-appear, .slide-down-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear, .slide-left-enter, .slide-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-left-appear.slide-left-appear-active, .slide-left-enter.slide-left-enter-active {
+ -webkit-animation-name: antSlideLeftIn;
+ animation-name: antSlideLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-left-leave.slide-left-leave-active {
+ -webkit-animation-name: antSlideLeftOut;
+ animation-name: antSlideLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-left-appear, .slide-left-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear, .slide-right-enter, .slide-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-right-appear.slide-right-appear-active, .slide-right-enter.slide-right-enter-active {
+ -webkit-animation-name: antSlideRightIn;
+ animation-name: antSlideRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-right-leave.slide-right-leave-active {
+ -webkit-animation-name: antSlideRightOut;
+ animation-name: antSlideRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-right-appear, .slide-right-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear, .swing-enter {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .swing-appear.swing-appear-active, .swing-enter.swing-enter-active {
+ -webkit-animation-name: antSwingIn;
+ animation-name: antSwingIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+@-webkit-keyframes antSwingIn {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear, .zoom-enter, .zoom-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-appear.zoom-appear-active, .zoom-enter.zoom-enter-active {
+ -webkit-animation-name: antZoomIn;
+ animation-name: antZoomIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-leave.zoom-leave-active {
+ -webkit-animation-name: antZoomOut;
+ animation-name: antZoomOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-appear, .zoom-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear, .zoom-big-enter, .zoom-big-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-big-appear.zoom-big-appear-active, .zoom-big-enter.zoom-big-enter-active {
+ -webkit-animation-name: antZoomBigIn;
+ animation-name: antZoomBigIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-big-leave.zoom-big-leave-active {
+ -webkit-animation-name: antZoomBigOut;
+ animation-name: antZoomBigOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-big-appear, .zoom-big-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-big-fast-appear.zoom-big-fast-appear-active, .zoom-big-fast-enter.zoom-big-fast-enter-active {
+ -webkit-animation-name: antZoomBigIn;
+ animation-name: antZoomBigIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-big-fast-leave.zoom-big-fast-leave-active {
+ -webkit-animation-name: antZoomBigOut;
+ animation-name: antZoomBigOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-big-fast-appear, .zoom-big-fast-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-up-appear.zoom-up-appear-active, .zoom-up-enter.zoom-up-enter-active {
+ -webkit-animation-name: antZoomUpIn;
+ animation-name: antZoomUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-up-leave.zoom-up-leave-active {
+ -webkit-animation-name: antZoomUpOut;
+ animation-name: antZoomUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-up-appear, .zoom-up-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-down-appear.zoom-down-appear-active, .zoom-down-enter.zoom-down-enter-active {
+ -webkit-animation-name: antZoomDownIn;
+ animation-name: antZoomDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-down-leave.zoom-down-leave-active {
+ -webkit-animation-name: antZoomDownOut;
+ animation-name: antZoomDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-down-appear, .zoom-down-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear, .zoom-left-enter, .zoom-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-left-appear.zoom-left-appear-active, .zoom-left-enter.zoom-left-enter-active {
+ -webkit-animation-name: antZoomLeftIn;
+ animation-name: antZoomLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-left-leave.zoom-left-leave-active {
+ -webkit-animation-name: antZoomLeftOut;
+ animation-name: antZoomLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-left-appear, .zoom-left-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear, .zoom-right-enter, .zoom-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-right-appear.zoom-right-appear-active, .zoom-right-enter.zoom-right-enter-active {
+ -webkit-animation-name: antZoomRightIn;
+ animation-name: antZoomRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-right-leave.zoom-right-leave-active {
+ -webkit-animation-name: antZoomRightOut;
+ animation-name: antZoomRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-right-appear, .zoom-right-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy {
+ overflow: hidden
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse {
+ overflow: hidden
+}
+
+.exception {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 80%;
+ min-height: 500px
+}
+
+ .exception .imgBlock {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 62.5%;
+ flex: 0 0 62.5%;
+ width: 62.5%;
+ padding-right: 152px;
+ zoom: 1
+ }
+
+ .exception .imgBlock:after, .exception .imgBlock:before {
+ content: " ";
+ display: table
+ }
+
+ .exception .imgBlock:after {
+ clear: both;
+ height: 0;
+ font-size: 0;
+ visibility: hidden
+ }
+
+ .exception .imgEle {
+ float: right;
+ width: 100%;
+ max-width: 430px;
+ height: 360px;
+ background-repeat: no-repeat;
+ background-position: 50% 50%;
+ background-size: contain
+ }
+
+ .exception .content {
+ -webkit-box-flex: 1;
+ -ms-flex: auto;
+ flex: auto
+ }
+
+ .exception .content h1 {
+ margin-bottom: 24px;
+ color: #434e59;
+ font-weight: 600;
+ font-size: 72px;
+ line-height: 72px
+ }
+
+ .exception .content .desc {
+ margin-bottom: 16px;
+ color: rgba(0,0,0,.45);
+ font-size: 20px;
+ line-height: 28px
+ }
+
+ .exception .content .actions button:not(:last-child) {
+ margin-right: 8px
+ }
+
+@media screen and (max-width:1200px) {
+ .exception .imgBlock {
+ padding-right: 88px
+ }
+}
+
+@media screen and (max-width:576px) {
+ .exception {
+ display: block;
+ text-align: center
+ }
+
+ .exception .imgBlock {
+ margin: 0 auto 24px;
+ padding-right: 0
+ }
+}
+
+@media screen and (max-width:480px) {
+ .exception .imgBlock {
+ margin-bottom: -24px;
+ overflow: hidden
+ }
+}
+
+body[data-v-400fd39c], html[data-v-400fd39c] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-400fd39c]::-ms-clear, input[data-v-400fd39c]::-ms-reveal {
+ display: none
+}
+
+[data-v-400fd39c], [data-v-400fd39c]:after, [data-v-400fd39c]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-400fd39c] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+article[data-v-400fd39c], aside[data-v-400fd39c], dialog[data-v-400fd39c], figcaption[data-v-400fd39c], figure[data-v-400fd39c], footer[data-v-400fd39c], header[data-v-400fd39c], hgroup[data-v-400fd39c], main[data-v-400fd39c], nav[data-v-400fd39c], section[data-v-400fd39c] {
+ display: block
+}
+
+body[data-v-400fd39c] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-400fd39c]:focus {
+ outline: none !important
+}
+
+hr[data-v-400fd39c] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-400fd39c], h2[data-v-400fd39c], h3[data-v-400fd39c], h4[data-v-400fd39c], h5[data-v-400fd39c], h6[data-v-400fd39c] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-400fd39c] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-400fd39c], abbr[title][data-v-400fd39c] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-400fd39c] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-400fd39c], input[type=password][data-v-400fd39c], input[type=text][data-v-400fd39c], textarea[data-v-400fd39c] {
+ -webkit-appearance: none
+}
+
+dl[data-v-400fd39c], ol[data-v-400fd39c], ul[data-v-400fd39c] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-400fd39c], ol ul[data-v-400fd39c], ul ol[data-v-400fd39c], ul ul[data-v-400fd39c] {
+ margin-bottom: 0
+}
+
+dt[data-v-400fd39c] {
+ font-weight: 500
+}
+
+dd[data-v-400fd39c] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-400fd39c] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-400fd39c] {
+ font-style: italic
+}
+
+b[data-v-400fd39c], strong[data-v-400fd39c] {
+ font-weight: bolder
+}
+
+small[data-v-400fd39c] {
+ font-size: 80%
+}
+
+sub[data-v-400fd39c], sup[data-v-400fd39c] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-400fd39c] {
+ bottom: -.25em
+}
+
+sup[data-v-400fd39c] {
+ top: -.5em
+}
+
+a[data-v-400fd39c] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-400fd39c]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-400fd39c]:active {
+ color: #d4380d
+ }
+
+ a[data-v-400fd39c]:active, a[data-v-400fd39c]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-400fd39c] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-400fd39c], kbd[data-v-400fd39c], pre[data-v-400fd39c], samp[data-v-400fd39c] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-400fd39c] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-400fd39c] {
+ margin: 0 0 1em
+}
+
+img[data-v-400fd39c] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-400fd39c]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-400fd39c], a[data-v-400fd39c], area[data-v-400fd39c], button[data-v-400fd39c], input[data-v-400fd39c]:not([type=range]), label[data-v-400fd39c], select[data-v-400fd39c], summary[data-v-400fd39c], textarea[data-v-400fd39c] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-400fd39c] {
+ border-collapse: collapse
+}
+
+caption[data-v-400fd39c] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-400fd39c] {
+ text-align: inherit
+}
+
+button[data-v-400fd39c], input[data-v-400fd39c], optgroup[data-v-400fd39c], select[data-v-400fd39c], textarea[data-v-400fd39c] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-400fd39c], input[data-v-400fd39c] {
+ overflow: visible
+}
+
+button[data-v-400fd39c], select[data-v-400fd39c] {
+ text-transform: none
+}
+
+[type=reset][data-v-400fd39c], [type=submit][data-v-400fd39c], button[data-v-400fd39c], html [type=button][data-v-400fd39c] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-400fd39c]::-moz-focus-inner, [type=reset][data-v-400fd39c]::-moz-focus-inner, [type=submit][data-v-400fd39c]::-moz-focus-inner, button[data-v-400fd39c]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-400fd39c], input[type=radio][data-v-400fd39c] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-400fd39c], input[type=datetime-local][data-v-400fd39c], input[type=month][data-v-400fd39c], input[type=time][data-v-400fd39c] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-400fd39c] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-400fd39c] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-400fd39c] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-400fd39c] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-400fd39c]::-webkit-inner-spin-button, [type=number][data-v-400fd39c]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-400fd39c] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-400fd39c]::-webkit-search-cancel-button, [type=search][data-v-400fd39c]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-400fd39c]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-400fd39c] {
+ display: inline-block
+}
+
+summary[data-v-400fd39c] {
+ display: list-item
+}
+
+template[data-v-400fd39c] {
+ display: none
+}
+
+[hidden][data-v-400fd39c] {
+ display: none !important
+}
+
+mark[data-v-400fd39c] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-400fd39c]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-400fd39c]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-400fd39c] {
+ zoom: 1
+}
+
+ .clearfix[data-v-400fd39c]:after, .clearfix[data-v-400fd39c]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-400fd39c]:after {
+ clear: both
+ }
+
+.anticon[data-v-400fd39c] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-400fd39c] {
+ line-height: 1
+}
+
+.anticon svg[data-v-400fd39c] {
+ display: inline-block
+}
+
+.anticon[data-v-400fd39c]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-400fd39c] {
+ display: block
+}
+
+.anticon[tabindex][data-v-400fd39c] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-400fd39c], .anticon-spin[data-v-400fd39c]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-400fd39c 1s linear infinite;
+ animation: loadingCircle-data-v-400fd39c 1s linear infinite
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c], .fade-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-400fd39c], .fade-enter.fade-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antFadeIn-data-v-400fd39c;
+ animation-name: antFadeIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antFadeOut-data-v-400fd39c;
+ animation-name: antFadeOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c] {
+ opacity: 0
+}
+
+.fade-appear[data-v-400fd39c], .fade-enter[data-v-400fd39c], .fade-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-400fd39c {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-400fd39c {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-400fd39c {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-400fd39c {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-400fd39c], .move-up-enter[data-v-400fd39c], .move-up-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-400fd39c], .move-up-enter.move-up-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveUpIn-data-v-400fd39c;
+ animation-name: antMoveUpIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveUpOut-data-v-400fd39c;
+ animation-name: antMoveUpOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-400fd39c], .move-up-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-400fd39c], .move-down-enter[data-v-400fd39c], .move-down-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-400fd39c], .move-down-enter.move-down-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveDownIn-data-v-400fd39c;
+ animation-name: antMoveDownIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveDownOut-data-v-400fd39c;
+ animation-name: antMoveDownOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-400fd39c], .move-down-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-400fd39c], .move-left-enter[data-v-400fd39c], .move-left-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-400fd39c], .move-left-enter.move-left-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveLeftIn-data-v-400fd39c;
+ animation-name: antMoveLeftIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveLeftOut-data-v-400fd39c;
+ animation-name: antMoveLeftOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-400fd39c], .move-left-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-400fd39c], .move-right-enter[data-v-400fd39c], .move-right-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-400fd39c], .move-right-enter.move-right-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveRightIn-data-v-400fd39c;
+ animation-name: antMoveRightIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antMoveRightOut-data-v-400fd39c;
+ animation-name: antMoveRightOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-400fd39c], .move-right-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-400fd39c {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-400fd39c {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-400fd39c], [ant-click-animating=true][data-v-400fd39c] {
+ position: relative
+}
+
+html[data-v-400fd39c] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-400fd39c], [ant-click-animating-without-extra-node=true][data-v-400fd39c]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-400fd39c 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-400fd39c .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-400fd39c 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-400fd39c .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-400fd39c {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-400fd39c {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-400fd39c {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-400fd39c {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-400fd39c], .slide-up-enter[data-v-400fd39c], .slide-up-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-400fd39c], .slide-up-enter.slide-up-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideUpIn-data-v-400fd39c;
+ animation-name: antSlideUpIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideUpOut-data-v-400fd39c;
+ animation-name: antSlideUpOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-400fd39c], .slide-up-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-400fd39c], .slide-down-enter[data-v-400fd39c], .slide-down-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-400fd39c], .slide-down-enter.slide-down-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideDownIn-data-v-400fd39c;
+ animation-name: antSlideDownIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideDownOut-data-v-400fd39c;
+ animation-name: antSlideDownOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-400fd39c], .slide-down-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-400fd39c], .slide-left-enter[data-v-400fd39c], .slide-left-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-400fd39c], .slide-left-enter.slide-left-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideLeftIn-data-v-400fd39c;
+ animation-name: antSlideLeftIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideLeftOut-data-v-400fd39c;
+ animation-name: antSlideLeftOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-400fd39c], .slide-left-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-400fd39c], .slide-right-enter[data-v-400fd39c], .slide-right-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-400fd39c], .slide-right-enter.slide-right-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideRightIn-data-v-400fd39c;
+ animation-name: antSlideRightIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antSlideRightOut-data-v-400fd39c;
+ animation-name: antSlideRightOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-400fd39c], .slide-right-enter[data-v-400fd39c] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-400fd39c], .swing-enter[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-400fd39c], .swing-enter.swing-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antSwingIn-data-v-400fd39c;
+ animation-name: antSwingIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-400fd39c {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-400fd39c {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-400fd39c], .zoom-enter[data-v-400fd39c], .zoom-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-400fd39c], .zoom-enter.zoom-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomIn-data-v-400fd39c;
+ animation-name: antZoomIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomOut-data-v-400fd39c;
+ animation-name: antZoomOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-400fd39c], .zoom-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-400fd39c], .zoom-big-enter[data-v-400fd39c], .zoom-big-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-400fd39c], .zoom-big-enter.zoom-big-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomBigIn-data-v-400fd39c;
+ animation-name: antZoomBigIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomBigOut-data-v-400fd39c;
+ animation-name: antZoomBigOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-400fd39c], .zoom-big-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-400fd39c], .zoom-big-fast-enter[data-v-400fd39c], .zoom-big-fast-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-400fd39c], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomBigIn-data-v-400fd39c;
+ animation-name: antZoomBigIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomBigOut-data-v-400fd39c;
+ animation-name: antZoomBigOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-400fd39c], .zoom-big-fast-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-400fd39c], .zoom-up-enter[data-v-400fd39c], .zoom-up-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-400fd39c], .zoom-up-enter.zoom-up-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomUpIn-data-v-400fd39c;
+ animation-name: antZoomUpIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomUpOut-data-v-400fd39c;
+ animation-name: antZoomUpOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-400fd39c], .zoom-up-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-400fd39c], .zoom-down-enter[data-v-400fd39c], .zoom-down-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-400fd39c], .zoom-down-enter.zoom-down-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomDownIn-data-v-400fd39c;
+ animation-name: antZoomDownIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomDownOut-data-v-400fd39c;
+ animation-name: antZoomDownOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-400fd39c], .zoom-down-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-400fd39c], .zoom-left-enter[data-v-400fd39c], .zoom-left-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-400fd39c], .zoom-left-enter.zoom-left-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomLeftIn-data-v-400fd39c;
+ animation-name: antZoomLeftIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomLeftOut-data-v-400fd39c;
+ animation-name: antZoomLeftOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-400fd39c], .zoom-left-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-400fd39c], .zoom-right-enter[data-v-400fd39c], .zoom-right-leave[data-v-400fd39c] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-400fd39c], .zoom-right-enter.zoom-right-enter-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomRightIn-data-v-400fd39c;
+ animation-name: antZoomRightIn-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-400fd39c] {
+ -webkit-animation-name: antZoomRightOut-data-v-400fd39c;
+ animation-name: antZoomRightOut-data-v-400fd39c;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-400fd39c], .zoom-right-enter[data-v-400fd39c] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-400fd39c] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-400fd39c {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-400fd39c] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-400fd39c], .ant-motion-collapse[data-v-400fd39c] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-400fd39c] {
+ overflow: hidden
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ margin-bottom: 16px;
+ padding-bottom: 16px;
+ border-bottom: 1px dashed #e8e8e8
+}
+
+ .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item {
+ margin-right: 24px
+ }
+
+ .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item-label label {
+ margin-right: 0;
+ color: rgba(0,0,0,.65)
+ }
+
+ .antd-pro-components-standard-form-row-index-standardFormRow .ant-form-item-control[data-v-400fd39c], .antd-pro-components-standard-form-row-index-standardFormRow[data-v-400fd39c] .ant-form-item-label {
+ padding: 0;
+ line-height: 32px
+ }
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label[data-v-400fd39c] {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ margin-right: 24px;
+ color: rgba(0,0,0,.85);
+ font-size: 14px;
+ text-align: right
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label > span[data-v-400fd39c] {
+ display: inline-block;
+ height: 32px;
+ line-height: 32px
+}
+
+ .antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-label > span[data-v-400fd39c]:after {
+ content: "锛�"
+ }
+
+.antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-content[data-v-400fd39c] {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 0px;
+ flex: 1 1 0
+}
+
+ .antd-pro-components-standard-form-row-index-standardFormRow .antd-pro-components-standard-form-row-index-content[data-v-400fd39c] .ant-form-item:last-child {
+ margin-right: 0
+ }
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowLast[data-v-400fd39c] {
+ margin-bottom: 0;
+ padding-bottom: 0;
+ border: none
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowBlock[data-v-400fd39c] .ant-form-item, .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowBlock div.ant-form-item-control-wrapper[data-v-400fd39c], .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid[data-v-400fd39c] .ant-form-item, .antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid div.ant-form-item-control-wrapper[data-v-400fd39c] {
+ display: block
+}
+
+.antd-pro-components-standard-form-row-index-standardFormRow.antd-pro-components-standard-form-row-index-standardFormRowGrid[data-v-400fd39c] .ant-form-item-label {
+ float: left
+}
+
+body[data-v-0d752822], html[data-v-0d752822] {
+ width: 100%;
+ height: 100%
+}
+
+input[data-v-0d752822]::-ms-clear, input[data-v-0d752822]::-ms-reveal {
+ display: none
+}
+
+[data-v-0d752822], [data-v-0d752822]:after, [data-v-0d752822]:before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html[data-v-0d752822] {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+@-ms-viewport {
+ width: device-width
+}
+
+article[data-v-0d752822], aside[data-v-0d752822], dialog[data-v-0d752822], figcaption[data-v-0d752822], figure[data-v-0d752822], footer[data-v-0d752822], header[data-v-0d752822], hgroup[data-v-0d752822], main[data-v-0d752822], nav[data-v-0d752822], section[data-v-0d752822] {
+ display: block
+}
+
+body[data-v-0d752822] {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"][data-v-0d752822]:focus {
+ outline: none !important
+}
+
+hr[data-v-0d752822] {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1[data-v-0d752822], h2[data-v-0d752822], h3[data-v-0d752822], h4[data-v-0d752822], h5[data-v-0d752822], h6[data-v-0d752822] {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p[data-v-0d752822] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title][data-v-0d752822], abbr[title][data-v-0d752822] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address[data-v-0d752822] {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number][data-v-0d752822], input[type=password][data-v-0d752822], input[type=text][data-v-0d752822], textarea[data-v-0d752822] {
+ -webkit-appearance: none
+}
+
+dl[data-v-0d752822], ol[data-v-0d752822], ul[data-v-0d752822] {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ol ol[data-v-0d752822], ol ul[data-v-0d752822], ul ol[data-v-0d752822], ul ul[data-v-0d752822] {
+ margin-bottom: 0
+}
+
+dt[data-v-0d752822] {
+ font-weight: 500
+}
+
+dd[data-v-0d752822] {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote[data-v-0d752822] {
+ margin: 0 0 1em
+}
+
+dfn[data-v-0d752822] {
+ font-style: italic
+}
+
+b[data-v-0d752822], strong[data-v-0d752822] {
+ font-weight: bolder
+}
+
+small[data-v-0d752822] {
+ font-size: 80%
+}
+
+sub[data-v-0d752822], sup[data-v-0d752822] {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub[data-v-0d752822] {
+ bottom: -.25em
+}
+
+sup[data-v-0d752822] {
+ top: -.5em
+}
+
+a[data-v-0d752822] {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a[data-v-0d752822]:hover {
+ color: #ff7a45
+ }
+
+ a[data-v-0d752822]:active {
+ color: #d4380d
+ }
+
+ a[data-v-0d752822]:active, a[data-v-0d752822]:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+a[disabled][data-v-0d752822] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+}
+
+code[data-v-0d752822], kbd[data-v-0d752822], pre[data-v-0d752822], samp[data-v-0d752822] {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre[data-v-0d752822] {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure[data-v-0d752822] {
+ margin: 0 0 1em
+}
+
+img[data-v-0d752822] {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg[data-v-0d752822]:not(:root) {
+ overflow: hidden
+}
+
+[role=button][data-v-0d752822], a[data-v-0d752822], area[data-v-0d752822], button[data-v-0d752822], input[data-v-0d752822]:not([type=range]), label[data-v-0d752822], select[data-v-0d752822], summary[data-v-0d752822], textarea[data-v-0d752822] {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table[data-v-0d752822] {
+ border-collapse: collapse
+}
+
+caption[data-v-0d752822] {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th[data-v-0d752822] {
+ text-align: inherit
+}
+
+button[data-v-0d752822], input[data-v-0d752822], optgroup[data-v-0d752822], select[data-v-0d752822], textarea[data-v-0d752822] {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button[data-v-0d752822], input[data-v-0d752822] {
+ overflow: visible
+}
+
+button[data-v-0d752822], select[data-v-0d752822] {
+ text-transform: none
+}
+
+[type=reset][data-v-0d752822], [type=submit][data-v-0d752822], button[data-v-0d752822], html [type=button][data-v-0d752822] {
+ -webkit-appearance: button
+}
+
+ [type=button][data-v-0d752822]::-moz-focus-inner, [type=reset][data-v-0d752822]::-moz-focus-inner, [type=submit][data-v-0d752822]::-moz-focus-inner, button[data-v-0d752822]::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox][data-v-0d752822], input[type=radio][data-v-0d752822] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date][data-v-0d752822], input[type=datetime-local][data-v-0d752822], input[type=month][data-v-0d752822], input[type=time][data-v-0d752822] {
+ -webkit-appearance: listbox
+}
+
+textarea[data-v-0d752822] {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset[data-v-0d752822] {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend[data-v-0d752822] {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress[data-v-0d752822] {
+ vertical-align: baseline
+}
+
+[type=number][data-v-0d752822]::-webkit-inner-spin-button, [type=number][data-v-0d752822]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search][data-v-0d752822] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search][data-v-0d752822]::-webkit-search-cancel-button, [type=search][data-v-0d752822]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+[data-v-0d752822]::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output[data-v-0d752822] {
+ display: inline-block
+}
+
+summary[data-v-0d752822] {
+ display: list-item
+}
+
+template[data-v-0d752822] {
+ display: none
+}
+
+[hidden][data-v-0d752822] {
+ display: none !important
+}
+
+mark[data-v-0d752822] {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+[data-v-0d752822]::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+[data-v-0d752822]::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix[data-v-0d752822] {
+ zoom: 1
+}
+
+ .clearfix[data-v-0d752822]:after, .clearfix[data-v-0d752822]:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix[data-v-0d752822]:after {
+ clear: both
+ }
+
+.anticon[data-v-0d752822] {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+.anticon > [data-v-0d752822] {
+ line-height: 1
+}
+
+.anticon svg[data-v-0d752822] {
+ display: inline-block
+}
+
+.anticon[data-v-0d752822]:before {
+ display: none
+}
+
+.anticon .anticon-icon[data-v-0d752822] {
+ display: block
+}
+
+.anticon[tabindex][data-v-0d752822] {
+ cursor: pointer
+}
+
+.anticon-spin[data-v-0d752822], .anticon-spin[data-v-0d752822]:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle-data-v-0d752822 1s linear infinite;
+ animation: loadingCircle-data-v-0d752822 1s linear infinite
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822], .fade-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.fade-appear.fade-appear-active[data-v-0d752822], .fade-enter.fade-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antFadeIn-data-v-0d752822;
+ animation-name: antFadeIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.fade-leave.fade-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antFadeOut-data-v-0d752822;
+ animation-name: antFadeOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822] {
+ opacity: 0
+}
+
+.fade-appear[data-v-0d752822], .fade-enter[data-v-0d752822], .fade-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn-data-v-0d752822 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn-data-v-0d752822 {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut-data-v-0d752822 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut-data-v-0d752822 {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear[data-v-0d752822], .move-up-enter[data-v-0d752822], .move-up-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-up-appear.move-up-appear-active[data-v-0d752822], .move-up-enter.move-up-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveUpIn-data-v-0d752822;
+ animation-name: antMoveUpIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-up-leave.move-up-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveUpOut-data-v-0d752822;
+ animation-name: antMoveUpOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-up-appear[data-v-0d752822], .move-up-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear[data-v-0d752822], .move-down-enter[data-v-0d752822], .move-down-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-down-appear.move-down-appear-active[data-v-0d752822], .move-down-enter.move-down-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveDownIn-data-v-0d752822;
+ animation-name: antMoveDownIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-down-leave.move-down-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveDownOut-data-v-0d752822;
+ animation-name: antMoveDownOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-down-appear[data-v-0d752822], .move-down-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear[data-v-0d752822], .move-left-enter[data-v-0d752822], .move-left-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-left-appear.move-left-appear-active[data-v-0d752822], .move-left-enter.move-left-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveLeftIn-data-v-0d752822;
+ animation-name: antMoveLeftIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-left-leave.move-left-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveLeftOut-data-v-0d752822;
+ animation-name: antMoveLeftOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-left-appear[data-v-0d752822], .move-left-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear[data-v-0d752822], .move-right-enter[data-v-0d752822], .move-right-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.move-right-appear.move-right-appear-active[data-v-0d752822], .move-right-enter.move-right-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveRightIn-data-v-0d752822;
+ animation-name: antMoveRightIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.move-right-leave.move-right-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antMoveRightOut-data-v-0d752822;
+ animation-name: antMoveRightOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.move-right-appear[data-v-0d752822], .move-right-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle-data-v-0d752822 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle-data-v-0d752822 {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true][data-v-0d752822], [ant-click-animating=true][data-v-0d752822] {
+ position: relative
+}
+
+html[data-v-0d752822] {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node[data-v-0d752822], [ant-click-animating-without-extra-node=true][data-v-0d752822]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect-data-v-0d752822 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-0d752822 .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect-data-v-0d752822 2s cubic-bezier(.08,.82,.17,1),waveEffect-data-v-0d752822 .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect-data-v-0d752822 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect-data-v-0d752822 {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect-data-v-0d752822 {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect-data-v-0d752822 {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear[data-v-0d752822], .slide-up-enter[data-v-0d752822], .slide-up-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-up-appear.slide-up-appear-active[data-v-0d752822], .slide-up-enter.slide-up-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideUpIn-data-v-0d752822;
+ animation-name: antSlideUpIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-up-leave.slide-up-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideUpOut-data-v-0d752822;
+ animation-name: antSlideUpOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-up-appear[data-v-0d752822], .slide-up-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear[data-v-0d752822], .slide-down-enter[data-v-0d752822], .slide-down-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-down-appear.slide-down-appear-active[data-v-0d752822], .slide-down-enter.slide-down-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideDownIn-data-v-0d752822;
+ animation-name: antSlideDownIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-down-leave.slide-down-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideDownOut-data-v-0d752822;
+ animation-name: antSlideDownOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-down-appear[data-v-0d752822], .slide-down-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear[data-v-0d752822], .slide-left-enter[data-v-0d752822], .slide-left-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-left-appear.slide-left-appear-active[data-v-0d752822], .slide-left-enter.slide-left-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideLeftIn-data-v-0d752822;
+ animation-name: antSlideLeftIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-left-leave.slide-left-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideLeftOut-data-v-0d752822;
+ animation-name: antSlideLeftOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-left-appear[data-v-0d752822], .slide-left-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear[data-v-0d752822], .slide-right-enter[data-v-0d752822], .slide-right-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.slide-right-appear.slide-right-appear-active[data-v-0d752822], .slide-right-enter.slide-right-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideRightIn-data-v-0d752822;
+ animation-name: antSlideRightIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.slide-right-leave.slide-right-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antSlideRightOut-data-v-0d752822;
+ animation-name: antSlideRightOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.slide-right-appear[data-v-0d752822], .slide-right-enter[data-v-0d752822] {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear[data-v-0d752822], .swing-enter[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.swing-appear.swing-appear-active[data-v-0d752822], .swing-enter.swing-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antSwingIn-data-v-0d752822;
+ animation-name: antSwingIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes antSwingIn-data-v-0d752822 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn-data-v-0d752822 {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear[data-v-0d752822], .zoom-enter[data-v-0d752822], .zoom-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-appear.zoom-appear-active[data-v-0d752822], .zoom-enter.zoom-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomIn-data-v-0d752822;
+ animation-name: antZoomIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-leave.zoom-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomOut-data-v-0d752822;
+ animation-name: antZoomOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-appear[data-v-0d752822], .zoom-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear[data-v-0d752822], .zoom-big-enter[data-v-0d752822], .zoom-big-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-appear.zoom-big-appear-active[data-v-0d752822], .zoom-big-enter.zoom-big-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomBigIn-data-v-0d752822;
+ animation-name: antZoomBigIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-leave.zoom-big-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomBigOut-data-v-0d752822;
+ animation-name: antZoomBigOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-appear[data-v-0d752822], .zoom-big-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear[data-v-0d752822], .zoom-big-fast-enter[data-v-0d752822], .zoom-big-fast-leave[data-v-0d752822] {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear.zoom-big-fast-appear-active[data-v-0d752822], .zoom-big-fast-enter.zoom-big-fast-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomBigIn-data-v-0d752822;
+ animation-name: antZoomBigIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-big-fast-leave.zoom-big-fast-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomBigOut-data-v-0d752822;
+ animation-name: antZoomBigOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-big-fast-appear[data-v-0d752822], .zoom-big-fast-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear[data-v-0d752822], .zoom-up-enter[data-v-0d752822], .zoom-up-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-up-appear.zoom-up-appear-active[data-v-0d752822], .zoom-up-enter.zoom-up-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomUpIn-data-v-0d752822;
+ animation-name: antZoomUpIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-up-leave.zoom-up-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomUpOut-data-v-0d752822;
+ animation-name: antZoomUpOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-up-appear[data-v-0d752822], .zoom-up-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear[data-v-0d752822], .zoom-down-enter[data-v-0d752822], .zoom-down-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear.zoom-down-appear-active[data-v-0d752822], .zoom-down-enter.zoom-down-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomDownIn-data-v-0d752822;
+ animation-name: antZoomDownIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-down-leave.zoom-down-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomDownOut-data-v-0d752822;
+ animation-name: antZoomDownOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-down-appear[data-v-0d752822], .zoom-down-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear[data-v-0d752822], .zoom-left-enter[data-v-0d752822], .zoom-left-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-left-appear.zoom-left-appear-active[data-v-0d752822], .zoom-left-enter.zoom-left-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomLeftIn-data-v-0d752822;
+ animation-name: antZoomLeftIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-left-leave.zoom-left-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomLeftOut-data-v-0d752822;
+ animation-name: antZoomLeftOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-left-appear[data-v-0d752822], .zoom-left-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear[data-v-0d752822], .zoom-right-enter[data-v-0d752822], .zoom-right-leave[data-v-0d752822] {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-right-appear.zoom-right-appear-active[data-v-0d752822], .zoom-right-enter.zoom-right-enter-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomRightIn-data-v-0d752822;
+ animation-name: antZoomRightIn-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.zoom-right-leave.zoom-right-leave-active[data-v-0d752822] {
+ -webkit-animation-name: antZoomRightOut-data-v-0d752822;
+ animation-name: antZoomRightOut-data-v-0d752822;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+}
+
+.zoom-right-appear[data-v-0d752822], .zoom-right-enter[data-v-0d752822] {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave[data-v-0d752822] {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut-data-v-0d752822 {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy[data-v-0d752822] {
+ overflow: hidden
+}
+
+.ant-motion-collapse-legacy-active[data-v-0d752822], .ant-motion-collapse[data-v-0d752822] {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse[data-v-0d752822] {
+ overflow: hidden
+}
+
+.antd-pro-components-article-list-content-index-listContent .description[data-v-0d752822] {
+ max-width: 720px;
+ line-height: 22px
+}
+
+.antd-pro-components-article-list-content-index-listContent .extra[data-v-0d752822] {
+ margin-top: 16px;
+ color: rgba(0,0,0,.45);
+ line-height: 22px
+}
+
+ .antd-pro-components-article-list-content-index-listContent .extra[data-v-0d752822] .ant-avatar {
+ position: relative;
+ top: 1px;
+ width: 20px;
+ height: 20px;
+ margin-right: 8px;
+ vertical-align: top
+ }
+
+.antd-pro-components-article-list-content-index-listContent .extra > em[data-v-0d752822] {
+ margin-left: 16px;
+ color: rgba(0,0,0,.25);
+ font-style: normal
+}
+
+@media screen and (max-width:480px) {
+ .antd-pro-components-article-list-content-index-listContent .extra > em[data-v-0d752822] {
+ display: block;
+ margin-top: 8px;
+ margin-left: 0
+ }
+}
+
+.w-e-toolbar {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz
new file mode 100644
index 0000000..8f5f25f
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/app.7633af46.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css
new file mode 100644
index 0000000..73014bb
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css
@@ -0,0 +1,845 @@
+.leaflet-image-layer, .leaflet-layer, .leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-pane, .leaflet-pane > canvas, .leaflet-pane > svg, .leaflet-tile, .leaflet-tile-container, .leaflet-zoom-box {
+ position: absolute;
+ left: 0;
+ top: 0
+}
+
+.leaflet-container {
+ overflow: hidden
+}
+
+.leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-tile {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-user-drag: none
+}
+
+ .leaflet-tile::-moz-selection {
+ background: transparent
+ }
+
+ .leaflet-tile::selection {
+ background: transparent
+ }
+
+.leaflet-safari .leaflet-tile {
+ image-rendering: -webkit-optimize-contrast
+}
+
+.leaflet-safari .leaflet-tile-container {
+ width: 1600px;
+ height: 1600px;
+ -webkit-transform-origin: 0 0
+}
+
+.leaflet-marker-icon, .leaflet-marker-shadow {
+ display: block
+}
+
+.leaflet-container .leaflet-marker-pane img, .leaflet-container .leaflet-overlay-pane svg, .leaflet-container .leaflet-shadow-pane img, .leaflet-container .leaflet-tile, .leaflet-container .leaflet-tile-pane img, .leaflet-container img.leaflet-image-layer {
+ max-width: none !important;
+ max-height: none !important
+}
+
+.leaflet-container.leaflet-touch-zoom {
+ -ms-touch-action: pan-x pan-y;
+ touch-action: pan-x pan-y
+}
+
+.leaflet-container.leaflet-touch-drag {
+ -ms-touch-action: pinch-zoom;
+ touch-action: none;
+ touch-action: pinch-zoom
+}
+
+ .leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
+ -ms-touch-action: none;
+ touch-action: none
+ }
+
+.leaflet-container {
+ -webkit-tap-highlight-color: transparent
+}
+
+ .leaflet-container a {
+ -webkit-tap-highlight-color: rgba(51,181,229,.4)
+ }
+
+.leaflet-tile {
+ -webkit-filter: inherit;
+ filter: inherit;
+ visibility: hidden
+}
+
+.leaflet-tile-loaded {
+ visibility: inherit
+}
+
+.leaflet-zoom-box {
+ width: 0;
+ height: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ z-index: 800
+}
+
+.leaflet-overlay-pane svg {
+ -moz-user-select: none
+}
+
+.leaflet-pane {
+ z-index: 400
+}
+
+.leaflet-tile-pane {
+ z-index: 200
+}
+
+.leaflet-overlay-pane {
+ z-index: 400
+}
+
+.leaflet-shadow-pane {
+ z-index: 500
+}
+
+.leaflet-marker-pane {
+ z-index: 600
+}
+
+.leaflet-tooltip-pane {
+ z-index: 650
+}
+
+.leaflet-popup-pane {
+ z-index: 700
+}
+
+.leaflet-map-pane canvas {
+ z-index: 100
+}
+
+.leaflet-map-pane svg {
+ z-index: 200
+}
+
+.leaflet-vml-shape {
+ width: 1px;
+ height: 1px
+}
+
+.lvml {
+ behavior: url(#default#VML);
+ display: inline-block;
+ position: absolute
+}
+
+.leaflet-control {
+ position: relative;
+ z-index: 800;
+ pointer-events: visiblePainted;
+ pointer-events: auto
+}
+
+.leaflet-bottom, .leaflet-top {
+ position: absolute;
+ z-index: 1000;
+ pointer-events: none
+}
+
+.leaflet-top {
+ top: 0
+}
+
+.leaflet-right {
+ right: 0
+}
+
+.leaflet-bottom {
+ bottom: 0
+}
+
+.leaflet-left {
+ left: 0
+}
+
+.leaflet-control {
+ float: left;
+ clear: both
+}
+
+.leaflet-right .leaflet-control {
+ float: right
+}
+
+.leaflet-top .leaflet-control {
+ margin-top: 10px
+}
+
+.leaflet-bottom .leaflet-control {
+ margin-bottom: 10px
+}
+
+.leaflet-left .leaflet-control {
+ margin-left: 10px
+}
+
+.leaflet-right .leaflet-control {
+ margin-right: 10px
+}
+
+.leaflet-fade-anim .leaflet-tile {
+ will-change: opacity
+}
+
+.leaflet-fade-anim .leaflet-popup {
+ opacity: 0;
+ -webkit-transition: opacity .2s linear;
+ transition: opacity .2s linear
+}
+
+.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
+ opacity: 1
+}
+
+.leaflet-zoom-animated {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+}
+
+.leaflet-zoom-anim .leaflet-zoom-animated {
+ will-change: transform;
+ -webkit-transition: -webkit-transform .25s cubic-bezier(0,0,.25,1);
+ transition: -webkit-transform .25s cubic-bezier(0,0,.25,1);
+ transition: transform .25s cubic-bezier(0,0,.25,1);
+ transition: transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)
+}
+
+.leaflet-pan-anim .leaflet-tile, .leaflet-zoom-anim .leaflet-tile {
+ -webkit-transition: none;
+ transition: none
+}
+
+.leaflet-zoom-anim .leaflet-zoom-hide {
+ visibility: hidden
+}
+
+.leaflet-interactive {
+ cursor: pointer
+}
+
+.leaflet-grab {
+ cursor: -webkit-grab;
+ cursor: grab
+}
+
+.leaflet-crosshair, .leaflet-crosshair .leaflet-interactive {
+ cursor: crosshair
+}
+
+.leaflet-control, .leaflet-popup-pane {
+ cursor: auto
+}
+
+.leaflet-dragging .leaflet-grab, .leaflet-dragging .leaflet-grab .leaflet-interactive, .leaflet-dragging .leaflet-marker-draggable {
+ cursor: move;
+ cursor: -webkit-grabbing;
+ cursor: grabbing
+}
+
+.leaflet-image-layer, .leaflet-marker-icon, .leaflet-marker-shadow, .leaflet-pane > svg path, .leaflet-tile-container {
+ pointer-events: none
+}
+
+ .leaflet-image-layer.leaflet-interactive, .leaflet-marker-icon.leaflet-interactive, .leaflet-pane > svg path.leaflet-interactive, svg.leaflet-image-layer.leaflet-interactive path {
+ pointer-events: visiblePainted;
+ pointer-events: auto
+ }
+
+.leaflet-container {
+ background: #ddd;
+ outline: 0
+}
+
+ .leaflet-container a {
+ color: #0078a8
+ }
+
+ .leaflet-container a.leaflet-active {
+ outline: 2px solid orange
+ }
+
+.leaflet-zoom-box {
+ border: 2px dotted #38f;
+ background: hsla(0,0%,100%,.5)
+}
+
+.leaflet-container {
+ font: 12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif
+}
+
+.leaflet-bar {
+ -webkit-box-shadow: 0 1px 5px rgba(0,0,0,.65);
+ box-shadow: 0 1px 5px rgba(0,0,0,.65);
+ border-radius: 4px
+}
+
+ .leaflet-bar a, .leaflet-bar a:hover {
+ background-color: #fff;
+ border-bottom: 1px solid #ccc;
+ width: 26px;
+ height: 26px;
+ line-height: 26px;
+ display: block;
+ text-align: center;
+ text-decoration: none;
+ color: #000
+ }
+
+ .leaflet-bar a, .leaflet-control-layers-toggle {
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+ display: block
+ }
+
+ .leaflet-bar a:hover {
+ background-color: #f4f4f4
+ }
+
+ .leaflet-bar a:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px
+ }
+
+ .leaflet-bar a:last-child {
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ border-bottom: none
+ }
+
+ .leaflet-bar a.leaflet-disabled {
+ cursor: default;
+ background-color: #f4f4f4;
+ color: #bbb
+ }
+
+.leaflet-touch .leaflet-bar a {
+ width: 30px;
+ height: 30px;
+ line-height: 30px
+}
+
+ .leaflet-touch .leaflet-bar a:first-child {
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px
+ }
+
+ .leaflet-touch .leaflet-bar a:last-child {
+ border-bottom-left-radius: 2px;
+ border-bottom-right-radius: 2px
+ }
+
+.leaflet-control-zoom-in, .leaflet-control-zoom-out {
+ font: 700 18px Lucida Console,Monaco,monospace;
+ text-indent: 1px
+}
+
+.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {
+ font-size: 22px
+}
+
+.leaflet-control-layers {
+ -webkit-box-shadow: 0 1px 5px rgba(0,0,0,.4);
+ box-shadow: 0 1px 5px rgba(0,0,0,.4);
+ background: #fff;
+ border-radius: 5px
+}
+
+.leaflet-control-layers-toggle {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);
+ width: 36px;
+ height: 36px
+}
+
+.leaflet-retina .leaflet-control-layers-toggle {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);
+ background-size: 26px 26px
+}
+
+.leaflet-touch .leaflet-control-layers-toggle {
+ width: 44px;
+ height: 44px
+}
+
+.leaflet-control-layers-expanded .leaflet-control-layers-toggle, .leaflet-control-layers .leaflet-control-layers-list {
+ display: none
+}
+
+.leaflet-control-layers-expanded .leaflet-control-layers-list {
+ display: block;
+ position: relative
+}
+
+.leaflet-control-layers-expanded {
+ padding: 6px 10px 6px 6px;
+ color: #333;
+ background: #fff
+}
+
+.leaflet-control-layers-scrollbar {
+ overflow-y: scroll;
+ overflow-x: hidden;
+ padding-right: 5px
+}
+
+.leaflet-control-layers-selector {
+ margin-top: 2px;
+ position: relative;
+ top: 1px
+}
+
+.leaflet-control-layers label {
+ display: block
+}
+
+.leaflet-control-layers-separator {
+ height: 0;
+ border-top: 1px solid #ddd;
+ margin: 5px -10px 5px -6px
+}
+
+.leaflet-default-icon-path {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)
+}
+
+.leaflet-container .leaflet-control-attribution {
+ background: #fff;
+ background: hsla(0,0%,100%,.7);
+ margin: 0
+}
+
+.leaflet-control-attribution, .leaflet-control-scale-line {
+ padding: 0 5px;
+ color: #333
+}
+
+ .leaflet-control-attribution a {
+ text-decoration: none
+ }
+
+ .leaflet-control-attribution a:hover {
+ text-decoration: underline
+ }
+
+.leaflet-container .leaflet-control-attribution, .leaflet-container .leaflet-control-scale {
+ font-size: 11px
+}
+
+.leaflet-left .leaflet-control-scale {
+ margin-left: 5px
+}
+
+.leaflet-bottom .leaflet-control-scale {
+ margin-bottom: 5px
+}
+
+.leaflet-control-scale-line {
+ border: 2px solid #777;
+ border-top: none;
+ line-height: 1.1;
+ padding: 2px 5px 1px;
+ font-size: 11px;
+ white-space: nowrap;
+ overflow: hidden;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ background: #fff;
+ background: hsla(0,0%,100%,.5)
+}
+
+ .leaflet-control-scale-line:not(:first-child) {
+ border-top: 2px solid #777;
+ border-bottom: none;
+ margin-top: -2px
+ }
+
+ .leaflet-control-scale-line:not(:first-child):not(:last-child) {
+ border-bottom: 2px solid #777
+ }
+
+.leaflet-touch .leaflet-bar, .leaflet-touch .leaflet-control-attribution, .leaflet-touch .leaflet-control-layers {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.leaflet-touch .leaflet-bar, .leaflet-touch .leaflet-control-layers {
+ border: 2px solid rgba(0,0,0,.2);
+ background-clip: padding-box
+}
+
+.leaflet-popup {
+ position: absolute;
+ text-align: center;
+ margin-bottom: 20px
+}
+
+.leaflet-popup-content-wrapper {
+ padding: 1px;
+ text-align: left;
+ border-radius: 12px
+}
+
+.leaflet-popup-content {
+ margin: 13px 19px;
+ line-height: 1.4
+}
+
+ .leaflet-popup-content p {
+ margin: 18px 0
+ }
+
+.leaflet-popup-tip-container {
+ width: 40px;
+ height: 20px;
+ position: absolute;
+ left: 50%;
+ margin-left: -20px;
+ overflow: hidden;
+ pointer-events: none
+}
+
+.leaflet-popup-tip {
+ width: 17px;
+ height: 17px;
+ padding: 1px;
+ margin: -10px auto 0;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg)
+}
+
+.leaflet-popup-content-wrapper, .leaflet-popup-tip {
+ background: #fff;
+ color: #333;
+ -webkit-box-shadow: 0 3px 14px rgba(0,0,0,.4);
+ box-shadow: 0 3px 14px rgba(0,0,0,.4)
+}
+
+.leaflet-container a.leaflet-popup-close-button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 4px 4px 0 0;
+ border: none;
+ text-align: center;
+ width: 18px;
+ height: 14px;
+ font: 16px/14px Tahoma,Verdana,sans-serif;
+ color: #c3c3c3;
+ text-decoration: none;
+ font-weight: 700;
+ background: transparent
+}
+
+ .leaflet-container a.leaflet-popup-close-button:hover {
+ color: #999
+ }
+
+.leaflet-popup-scrolled {
+ overflow: auto;
+ border-bottom: 1px solid #ddd;
+ border-top: 1px solid #ddd
+}
+
+.leaflet-oldie .leaflet-popup-content-wrapper {
+ -ms-zoom: 1
+}
+
+.leaflet-oldie .leaflet-popup-tip {
+ width: 24px;
+ margin: 0 auto;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
+ filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678,M12=0.70710678,M21=-0.70710678,M22=0.70710678)
+}
+
+.leaflet-oldie .leaflet-popup-tip-container {
+ margin-top: -1px
+}
+
+.leaflet-oldie .leaflet-control-layers, .leaflet-oldie .leaflet-control-zoom, .leaflet-oldie .leaflet-popup-content-wrapper, .leaflet-oldie .leaflet-popup-tip {
+ border: 1px solid #999
+}
+
+.leaflet-div-icon {
+ background: #fff;
+ border: 1px solid #666
+}
+
+.leaflet-tooltip {
+ position: absolute;
+ padding: 6px;
+ background-color: #fff;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ color: #222;
+ white-space: nowrap;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none;
+ -webkit-box-shadow: 0 1px 3px rgba(0,0,0,.4);
+ box-shadow: 0 1px 3px rgba(0,0,0,.4)
+}
+
+ .leaflet-tooltip.leaflet-clickable {
+ cursor: pointer;
+ pointer-events: auto
+ }
+
+.leaflet-tooltip-bottom:before, .leaflet-tooltip-left:before, .leaflet-tooltip-right:before, .leaflet-tooltip-top:before {
+ position: absolute;
+ pointer-events: none;
+ border: 6px solid transparent;
+ background: transparent;
+ content: ""
+}
+
+.leaflet-tooltip-bottom {
+ margin-top: 6px
+}
+
+.leaflet-tooltip-top {
+ margin-top: -6px
+}
+
+ .leaflet-tooltip-bottom:before, .leaflet-tooltip-top:before {
+ left: 50%;
+ margin-left: -6px
+ }
+
+ .leaflet-tooltip-top:before {
+ bottom: 0;
+ margin-bottom: -12px;
+ border-top-color: #fff
+ }
+
+.leaflet-tooltip-bottom:before {
+ top: 0;
+ margin-top: -12px;
+ margin-left: -6px;
+ border-bottom-color: #fff
+}
+
+.leaflet-tooltip-left {
+ margin-left: -6px
+}
+
+.leaflet-tooltip-right {
+ margin-left: 6px
+}
+
+ .leaflet-tooltip-left:before, .leaflet-tooltip-right:before {
+ top: 50%;
+ margin-top: -6px
+ }
+
+.leaflet-tooltip-left:before {
+ right: 0;
+ margin-right: -12px;
+ border-left-color: #fff
+}
+
+.leaflet-tooltip-right:before {
+ left: 0;
+ margin-left: -12px;
+ border-right-color: #fff
+}
+
+.marker-icon, .marker-icon:focus {
+ background-color: #fff;
+ border: 1px solid #38f;
+ border-radius: 50%;
+ margin: -8px 0 0 -8px !important;
+ width: 14px !important;
+ height: 14px !important;
+ outline: 0;
+ -webkit-transition: opacity .3s ease;
+ transition: opacity .3s ease
+}
+
+.marker-icon-middle, .marker-icon-middle:focus {
+ opacity: .7;
+ margin: -6px 0 0 -6px !important;
+ width: 10px !important;
+ height: 10px !important
+}
+
+.leaflet-pm-draggable {
+ cursor: move !important
+}
+
+.cursor-marker {
+ cursor: crosshair;
+ pointer-events: none;
+ display: none
+}
+
+ .cursor-marker.visible {
+ display: block !important
+ }
+
+.leaflet-pm-invalid {
+ stroke: red;
+ -webkit-transition: fill 0s ease,stroke 0s ease;
+ transition: fill 0s ease,stroke 0s ease
+}
+
+.rect-start-marker, .rect-style-marker {
+ opacity: 0
+}
+
+ .rect-start-marker.visible, .rect-style-marker.visible {
+ opacity: 1 !important
+ }
+
+.hidden {
+ display: none
+}
+
+.leaflet-pm-toolbar .leaflet-buttons-control-button {
+ padding: 5px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ position: relative;
+ z-index: 3
+}
+
+.leaflet-pm-toolbar .control-fa-icon {
+ font-size: 19px;
+ line-height: 24px
+}
+
+.leaflet-pm-toolbar .control-icon {
+ width: 100%;
+ height: 100%;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: 50%
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-marker {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xNS41IDI0Ljg3OGMtLjIxIDAtLjMyNi0uMDMxLS44NC0uNjQzQzEwLjIyIDE5LjQxMiA4IDE1LjUwMSA4IDEyLjUwNUE3LjUwMiA3LjUwMiAwIDAxMTUuNSA1YzQuMTQyIDAgNy41IDMuMzYgNy41IDcuNTA0IDAgNC40OTYtNC43MTIgOS40MjMtNi42NjYgMTEuNzQtLjUxMi42MDYtLjYyNS42MzUtLjgzNC42MzR6bTAtOS4zNDVjMS43NzUgMCAzLjIxNC0xLjQxNSAzLjIxNC0zLjE2cy0xLjQzOS0zLjE2LTMuMjE0LTMuMTYtMy4yMTQgMS40MTUtMy4yMTQgMy4xNiAxLjQzOSAzLjE2IDMuMjE0IDMuMTZ6IiBpZD0iYSIvPjwvZGVmcz48dXNlIGZpbGw9IiM1QjVCNUIiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI2EiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSIvPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-polygon {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMTkuNDIgOS4xNjVhMy41IDMuNSAwIDExMy41OCAxLjh2OC4wN0EzLjUgMy41IDAgMTExOS4wMzUgMjNoLTguMDdhMy41IDMuNSAwIDExLTEuOC0zLjU4TDE5LjQyMSA5LjE2NnptMS40MTUgMS40MTRMMTAuNTc5IDIwLjgzNWMuMDMuMDU0LjA1OC4xMS4wODQuMTY1aDguNjc0QTMuNTE0IDMuNTE0IDAgMDEyMSAxOS4zMzd2LTguNjc0YTMuNDg4IDMuNDg4IDAgMDEtLjE2NS0uMDg0ek0yMi41IDlhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3ptMCAxNWExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTUgMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-polyline {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNOS4xNjUgMTkuNDJsOS4yNTYtOS4yNTVhMy41IDMuNSAwIDExMS40MTQgMS40MTRsLTkuMjU2IDkuMjU2YTMuNSAzLjUgMCAxMS0xLjQxNC0xLjQxNHpNMjEuNSAxMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTQgMTRhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3oiLz48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMyAtMykiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIvPjxnIGZpbGw9IiM1QjVCNUIiIG1hc2s9InVybCgjYikiPjxwYXRoIGQ9Ik0wIDBoMzB2MzBIMHoiLz48L2c+PC9nPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-circle {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xOC4yOSA2Ljc4NmEzLjUgMy41IDAgMDE0LjkyNCA0LjkyNEE5LjQ2OCA5LjQ2OCAwIDAxMjQgMTUuNSA5LjUgOS41IDAgMTExNC41IDZjMS4zNDcgMCAyLjYyOS4yOCAzLjc5Ljc4NnptLTEuMTQgMS42OTZhNy41IDcuNSAwIDEwNC4zNjggNC4zNjggMy41IDMuNSAwIDAxLTQuMzY4LTQuMzY4ek0xNC41IDE3YTEuNSAxLjUgMCAxMTAtMyAxLjUgMS41IDAgMDEwIDN6bTYtNmExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIgaWQ9ImEiLz48L2RlZnM+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj48dXNlIHhsaW5rOmhyZWY9IiNhIi8+PC9tYXNrPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIvPjxnIG1hc2s9InVybCgjYikiIGZpbGw9IiM1QjVCNUIiPjxwYXRoIGQ9Ik0wIDBoMzB2MzBIMHoiLz48L2c+PC9nPjwvc3ZnPg==)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-circle-marker {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBzdHJva2U9IiM1QjVCNUIiIHN0cm9rZS13aWR0aD0iOCIgZmlsbD0ibm9uZSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iMzUiLz48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIzIiBmaWxsPSIjNUI1QjVCIi8+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-rectangle {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMjMgMTAuOTY1djguMDdBMy41IDMuNSAwIDExMTkuMDM1IDIzaC04LjA3QTMuNSAzLjUgMCAxMTcgMTkuMDM1di04LjA3QTMuNSAzLjUgMCAxMTEwLjk2NSA3aDguMDdBMy41IDMuNSAwIDExMjMgMTAuOTY1em0tMi0uMzAyQTMuNTE0IDMuNTE0IDAgMDExOS4zMzcgOWgtOC42NzRBMy41MTQgMy41MTQgMCAwMTkgMTAuNjYzdjguNjc0QTMuNTE0IDMuNTE0IDAgMDExMC42NjMgMjFoOC42NzRBMy41MTQgMy41MTQgMCAwMTIxIDE5LjMzN3YtOC42NzR6TTcuNSA5YTEuNSAxLjUgMCAxMDAtMyAxLjUgMS41IDAgMDAwIDN6bTE1IDBhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3ptMCAxNWExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzem0tMTUgMGExLjUgMS41IDAgMTAwLTMgMS41IDEuNSAwIDAwMCAzeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-delete {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xNy43ODcgMTguNDgxbC02LjEzOS01LjEzMS01LjI0MyA2LjAzMiA0LjE0OSAzLjYwNmgzLjMxNWwzLjkxOC00LjUwN3ptLTEuMjggNC41MDdIMjZ2Mkg5LjgwN2wtNC43MTQtNC4wOTdhMiAyIDAgMDEtLjE5OC0yLjgyMkwxNi4wNDggNS4yNGEyIDIgMCAwMTIuODIyLS4xOTdsNi4wMzcgNS4yNDlhMiAyIDAgMDEuMTk4IDIuODIxbC04LjU5OCA5Ljg3NnoiIGlkPSJhIi8+PC9kZWZzPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB4bGluazpocmVmPSIjYSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIi8+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-edit {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMTMuNSAxMWEzLjUgMy41IDAgMTEwLTcgMy41IDMuNSAwIDAxMCA3em0wLTJhMS41IDEuNSAwIDEwMC0zIDEuNSAxLjUgMCAwMDAgM3pNMTIgNy41M2ExLjUgMS41IDAgMDAuOTggMS4zNzhMMyAxNXYtMmw5LTUuNDd6bTIuMjE3LTEuMzQ4TDE5LjQ1MyAzaDMuMjA2bC03LjY3IDQuNjgyYTEuNSAxLjUgMCAwMC0uNzcyLTEuNXptOS4yMjYgMTMuMTAzaC0zLjMxNWwxLjc0NSA0LjI1YS41OC41OCAwIDAxLS4yOTUuNzVsLTEuNTM3LjY3YS41NTMuNTUzIDAgMDEtLjcyOS0uMzA0bC0xLjY1OC00LjAzNi0yLjcwOCAyLjc4NmMtLjM2LjM3MS0uOTQ2LjA4NS0uOTQ2LS40MDJWOS41NzJjMC0uNTEzLjYyMy0uNzYzLjk0Ni0uNDAybDguODg4IDkuMTQyYy4zNTkuMzUuMDk0Ljk3My0uMzkuOTczeiIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zIC0zKSI+PG1hc2sgaWQ9ImIiIGZpbGw9IiNmZmYiPjx1c2UgeGxpbms6aHJlZj0iI2EiLz48L21hc2s+PHVzZSBmaWxsPSIjNUI1QjVCIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-drag {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJNMjEgMTR2LTRsNiA1LTYgNXYtNGgtNXY1aDRsLTUgNi01LTZoNHYtNUg5djRsLTYtNSA2LTV2NGg1VjloLTRsNS02IDUgNmgtNHY1aDV6Ii8+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMgLTMpIj48bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYSIvPjwvbWFzaz48dXNlIGZpbGw9IiNEOEQ4RDgiIHhsaW5rOmhyZWY9IiNhIi8+PGcgZmlsbD0iIzVCNUI1QiIgbWFzaz0idXJsKCNiKSI+PHBhdGggZD0iTTAgMGgzMHYzMEgweiIvPjwvZz48L2c+PC9zdmc+)
+}
+
+.leaflet-pm-toolbar .leaflet-pm-icon-cut {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0xMi45NyAxMy40OTRsOC4wNjItNy45NTIgMi40MzMuMTM1LTYuNDE4IDguODM0IDEwLjUxOSAyLjYyMi0xLjc3NyAxLjY2OC0xMS4yMDQtLjkwMi0uOTM2IDEuMjg5YTMuNSAzLjUgMCAxMS0yLjIxNS0uMzU0bDEuMjQ3LTEuNzE2LS4xNTctLjc0My0uNTczLTEuMDc0LTIuMDU4LS41MTNhMy41IDMuNSAwIDExMS40NjktMS42OTVsMS42MDcuNHptLTUuMjEyLS4yNjlhMS41IDEuNSAwIDEwLjcyNi0yLjkxIDEuNSAxLjUgMCAwMC0uNzI2IDIuOTF6bTMuMDQ1IDguMTc4YTEuNSAxLjUgMCAxMDIuNDI3IDEuNzYzIDEuNSAxLjUgMCAwMC0yLjQyNy0xLjc2M3oiIGlkPSJhIi8+PC9kZWZzPjx1c2UgZmlsbD0iIzVCNUI1QiIgZmlsbC1ydWxlPSJub256ZXJvIiB0cmFuc2Zvcm09InJvdGF0ZSgtMzIgOS4zNjIgMTkuMzk0KSIgeGxpbms6aHJlZj0iI2EiLz48L3N2Zz4=)
+}
+
+.leaflet-buttons-control-button:hover {
+ cursor: pointer;
+ background-color: #f4f4f4
+}
+
+.active .leaflet-buttons-control-button {
+ -webkit-box-shadow: inset 0 -1px 5px 2px rgba(81,77,77,.31);
+ box-shadow: inset 0 -1px 5px 2px rgba(81,77,77,.31)
+}
+
+.leaflet-buttons-control-text-hide {
+ display: none
+}
+
+.button-container {
+ position: relative
+}
+
+ .button-container .leaflet-pm-actions-container {
+ z-index: 2;
+ position: absolute;
+ top: 0;
+ left: 31px;
+ display: none;
+ white-space: nowrap
+ }
+
+.leaflet-right .leaflet-pm-toolbar .button-container .leaflet-pm-actions-container {
+ right: 31px;
+ left: auto
+}
+
+.button-container.active .leaflet-pm-actions-container {
+ display: block
+}
+
+.button-container .leaflet-pm-actions-container .leaflet-pm-action:last-child {
+ border-radius: 0 3px 3px 0;
+ border-right: 0
+}
+
+.button-container .leaflet-pm-actions-container .leaflet-pm-action {
+ padding: 0 10px;
+ background-color: #666;
+ color: #fff;
+ display: inline-block;
+ width: auto;
+ border-right: 1px solid #eee;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .button-container .leaflet-pm-actions-container .leaflet-pm-action:hover {
+ cursor: pointer;
+ background-color: #777
+ }
+
+#map {
+ width: 100%;
+ height: 100vh;
+ z-index: 1;
+ margin-left: -24px;
+ margin-top: -24px;
+ position: fixed
+}
+
+.leaflet-right .leaflet-control {
+ position: fixed;
+ right: -5px
+}
\ No newline at end of file
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz
new file mode 100644
index 0000000..9166682
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-b7a16696.677134ab.css.gz
Binary files differ
diff --git a/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css
new file mode 100644
index 0000000..3ed1a5a
--- /dev/null
+++ b/iWare_RawMaterialWarehouse_Wms/Admin.NET.Web.Entry/wwwroot/css/chunk-vendors.4659697d.css
@@ -0,0 +1,30745 @@
+a {
+ color: #13c2c2
+}
+
+ a:hover {
+ color: #36cfc9
+ }
+
+ a:active {
+ color: #08979c
+ }
+
+::-moz-selection {
+ background: #13c2c2
+}
+
+::selection {
+ background: #13c2c2
+}
+
+.anticon-spin, .anticon-spin:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle 1s linear infinite;
+ animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused;
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave, .move-left-appear, .move-left-enter, .move-left-leave, .move-right-appear, .move-right-enter, .move-right-leave, .move-up-appear, .move-up-enter, .move-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+html {
+ --antd-wave-shadow-color: #13c2c2
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+ -webkit-box-shadow: 0 0 0 0 #13c2c2;
+ box-shadow: 0 0 0 0 #13c2c2
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave, .slide-left-appear, .slide-left-enter, .slide-left-leave, .slide-right-appear, .slide-right-enter, .slide-right-leave, .slide-up-appear, .slide-up-enter, .slide-up-leave, .zoom-appear, .zoom-big-appear, .zoom-big-enter, .zoom-big-leave, .zoom-enter, .zoom-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave, .zoom-left-appear, .zoom-left-enter, .zoom-left-leave, .zoom-right-appear, .zoom-right-enter, .zoom-right-leave, .zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-message-notice-content, .ant-upload.ant-upload-select-picture-card {
+ border-radius: 4px
+}
+
+ .ant-upload.ant-upload-select-picture-card:hover {
+ border-color: #13c2c2
+ }
+
+.ant-upload.ant-upload-drag {
+ border-radius: 4px
+}
+
+ .ant-upload.ant-upload-drag.ant-upload-drag-hover:not(.ant-upload-disabled) {
+ border-color: #08979c
+ }
+
+ .ant-upload.ant-upload-drag:not(.ant-upload-disabled):hover {
+ border-color: #36cfc9
+ }
+
+ .ant-upload.ant-upload-drag p.ant-upload-drag-icon .anticon {
+ color: #36cfc9
+ }
+
+ .ant-upload.ant-upload-drag .anticon-plus:hover, .ant-upload.ant-upload-drag:hover .anticon-plus {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-upload-list-item:hover .ant-upload-list-item-info {
+ background-color: #e6fffb
+}
+
+.ant-upload-list-item:hover .ant-upload-list-item-card-actions, .ant-upload-list-item:hover .anticon-close {
+ opacity: 1
+}
+
+.ant-upload-list-picture-card .ant-upload-list-item, .ant-upload-list-picture .ant-upload-list-item {
+ border-radius: 4px
+}
+
+.ant-upload-list-picture-card-container, .ant-upload-list-picture-card .ant-upload-list-item {
+ float: left;
+ width: 104px;
+ height: 104px;
+ margin: 0 8px 8px 0
+}
+
+.ant-time-picker-panel-inner, .ant-tooltip-inner {
+ border-radius: 4px
+}
+
+.ant-time-picker-panel-select li:focus {
+ color: #13c2c2
+}
+
+.ant-time-picker-panel-select li:hover {
+ background: #e6fffb
+}
+
+.ant-time-picker, .ant-time-picker-input {
+ color: rgba(0,0,0,.65);
+ line-height: 1.5;
+ position: relative;
+ display: inline-block
+}
+
+.ant-time-picker-input {
+ border-radius: 4px
+}
+
+ .ant-time-picker-input:focus, .ant-time-picker-input:hover {
+ border-color: #36cfc9;
+ border-right-width: 1px !important
+ }
+
+ .ant-time-picker-input:focus {
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
+ border-color: #36cfc9
+}
+
+.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-calendar {
+ border-radius: 4px
+}
+
+.ant-calendar-header a:hover {
+ color: #36cfc9
+}
+
+.ant-calendar-date:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-date:active {
+ background: #36cfc9
+}
+
+.ant-calendar-today .ant-calendar-date {
+ color: #13c2c2;
+ border-color: #13c2c2
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+ background: #b5f5ec
+}
+
+.ant-calendar .ant-calendar-ok-btn {
+ background-color: #13c2c2;
+ border-color: #13c2c2;
+ border-radius: 4px
+}
+
+.ant-calendar .ant-calendar-ok-btn-lg, .ant-calendar .ant-calendar-ok-btn-sm {
+ border-radius: 4px
+}
+
+.ant-calendar .ant-calendar-ok-btn:focus, .ant-calendar .ant-calendar-ok-btn:hover {
+ background-color: #36cfc9;
+ border-color: #36cfc9
+}
+
+.ant-calendar .ant-calendar-ok-btn.active, .ant-calendar .ant-calendar-ok-btn:active {
+ background-color: #08979c;
+ border-color: #08979c
+}
+
+.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {
+ color: #13c2c2;
+ background: #b5f5ec;
+ border-color: #13c2c2
+}
+
+.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover {
+ background: #13c2c2
+}
+
+.ant-calendar-range .ant-calendar-input, .ant-calendar-range .ant-calendar-time-picker-input {
+ border-radius: 4px
+}
+
+ .ant-calendar-range .ant-calendar-input:hover, .ant-calendar-range .ant-calendar-time-picker-input:hover {
+ border-color: #36cfc9
+ }
+
+ .ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-calendar-range .ant-calendar-in-range-cell:before {
+ background: #e6fffb
+}
+
+.ant-calendar-time-picker-column-1, .ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select, .ant-calendar-time-picker-combobox {
+ width: 100%
+}
+
+.ant-calendar-time-picker-select li:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-time-picker-select li:focus {
+ color: #13c2c2
+}
+
+.ant-calendar-month-panel {
+ border-radius: 4px
+}
+
+.ant-calendar-month-panel-header a:hover {
+ color: #36cfc9
+}
+
+.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month, .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
+ color: #fff;
+ background: #13c2c2
+}
+
+.ant-calendar-month-panel-month:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-year-panel {
+ border-radius: 4px
+}
+
+.ant-calendar-year-panel-header a:hover {
+ color: #36cfc9
+}
+
+.ant-calendar-year-panel-year:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
+ color: #fff;
+ background: #13c2c2
+}
+
+.ant-calendar-decade-panel {
+ border-radius: 4px
+}
+
+.ant-calendar-decade-panel-header a:hover {
+ color: #36cfc9
+}
+
+.ant-calendar-decade-panel-decade:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
+ color: #fff;
+ background: #13c2c2
+}
+
+.ant-calendar-week-number .ant-calendar-body tr:hover {
+ background: #e6fffb
+}
+
+.ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
+ background: #b5f5ec
+}
+
+.ant-input {
+ border-radius: 4px
+}
+
+ .ant-input:focus, .ant-input:hover {
+ border-color: #36cfc9;
+ border-right-width: 1px !important
+ }
+
+ .ant-input:focus {
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-input-group .ant-input:focus, .ant-input-group .ant-input:hover {
+ z-index: 1;
+ border-right-width: 1px
+}
+
+.ant-input-group-addon {
+ border-radius: 4px
+}
+
+ .ant-input-group-addon .ant-select-focused .ant-select-selection, .ant-input-group-addon .ant-select-open .ant-select-selection {
+ color: #13c2c2
+ }
+
+ .ant-input-group-addon:first-child, .ant-input-group-addon:first-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:first-child, .ant-input-group > .ant-input:first-child .ant-select .ant-select-selection {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+ }
+
+ .ant-input-group-addon:last-child, .ant-input-group-addon:last-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:last-child, .ant-input-group > .ant-input:last-child .ant-select .ant-select-selection {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+.ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-select-focused, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {
+ z-index: 1
+}
+
+.ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :first-child {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px
+}
+
+.ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :last-child {
+ border-right-width: 1px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px
+}
+
+.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+ border-color: #36cfc9
+}
+
+.ant-btn, .ant-btn-lg, .ant-btn-sm {
+ border-radius: 4px
+}
+
+ .ant-btn:focus, .ant-btn:hover {
+ color: #36cfc9;
+ border-color: #36cfc9
+ }
+
+ .ant-btn.active, .ant-btn:active {
+ color: #08979c;
+ border-color: #08979c
+ }
+
+.ant-btn-primary {
+ background-color: #13c2c2;
+ border-color: #13c2c2
+}
+
+ .ant-btn-primary:focus, .ant-btn-primary:hover {
+ background-color: #36cfc9;
+ border-color: #36cfc9
+ }
+
+ .ant-btn-primary.active, .ant-btn-primary:active {
+ background-color: #08979c;
+ border-color: #08979c
+ }
+
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+ border-right-color: #36cfc9;
+ border-left-color: #36cfc9
+}
+
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+ border-right-color: #36cfc9
+}
+
+.ant-btn-group .ant-btn-primary + .ant-btn-primary, .ant-btn-group .ant-btn-primary:last-child:not(:first-child) {
+ border-left-color: #36cfc9
+}
+
+.ant-btn-ghost:focus, .ant-btn-ghost:hover {
+ color: #36cfc9;
+ border-color: #36cfc9
+}
+
+.ant-btn-ghost.active, .ant-btn-ghost:active {
+ color: #08979c;
+ border-color: #08979c
+}
+
+.ant-btn-dashed:focus, .ant-btn-dashed:hover {
+ color: #36cfc9;
+ border-color: #36cfc9
+}
+
+.ant-btn-dashed.active, .ant-btn-dashed:active {
+ color: #08979c;
+ border-color: #08979c
+}
+
+.ant-btn-link {
+ color: #13c2c2
+}
+
+ .ant-btn-link:focus, .ant-btn-link:hover {
+ color: #36cfc9;
+ border-color: #36cfc9
+ }
+
+ .ant-btn-link.active, .ant-btn-link:active {
+ color: #08979c;
+ border-color: #08979c
+ }
+
+.ant-btn-icon-only, .ant-btn-icon-only.ant-btn-lg, .ant-btn-icon-only.ant-btn-sm {
+ border-radius: 4px
+}
+
+.ant-btn-group, .ant-btn-group > .ant-btn, .ant-btn-group > span > .ant-btn {
+ position: relative
+}
+
+ .ant-btn-group > .ant-btn:only-child, .ant-btn-group > span:only-child > .ant-btn {
+ border-radius: 4px
+ }
+
+ .ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px
+ }
+
+ .ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px
+ }
+
+.ant-btn-group-sm > .ant-btn:only-child, .ant-btn-group-sm > span:only-child > .ant-btn {
+ border-radius: 4px
+}
+
+.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px
+}
+
+.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px
+}
+
+.ant-btn-background-ghost.ant-btn-primary {
+ color: #13c2c2;
+ border-color: #13c2c2
+}
+
+ .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover {
+ color: #36cfc9;
+ border-color: #36cfc9
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary.active, .ant-btn-background-ghost.ant-btn-primary:active {
+ color: #08979c;
+ border-color: #08979c
+ }
+
+.ant-btn-background-ghost.ant-btn-link {
+ color: #13c2c2
+}
+
+ .ant-btn-background-ghost.ant-btn-link:focus, .ant-btn-background-ghost.ant-btn-link:hover {
+ color: #36cfc9
+ }
+
+ .ant-btn-background-ghost.ant-btn-link.active, .ant-btn-background-ghost.ant-btn-link:active {
+ color: #08979c
+ }
+
+.ant-tag {
+ border-radius: 4px
+}
+
+.ant-tag-checkable:not(.ant-tag-checkable-checked):hover {
+ color: #13c2c2
+}
+
+.ant-tag-checkable-checked {
+ background-color: #13c2c2
+}
+
+.ant-tag-checkable:active {
+ background-color: #08979c
+}
+
+.ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+ top: 50%;
+ width: 95%
+}
+
+.ant-alert, .ant-alert-with-description {
+ border-radius: 4px
+}
+
+.ant-steps-item-icon > .ant-steps-icon {
+ color: #13c2c2
+}
+
+.ant-steps-item-description, .ant-steps-item-subtitle {
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+ border-color: #13c2c2
+}
+
+ .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+ color: #13c2c2
+ }
+
+ .ant-steps-item-process .ant-steps-item-icon, .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #13c2c2
+ }
+
+.ant-steps-item-finish .ant-steps-item-icon {
+ border-color: #13c2c2
+}
+
+ .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+ color: #13c2c2
+ }
+
+ .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #13c2c2
+ }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after, .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail:after {
+ background-color: #13c2c2
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-title {
+ color: #13c2c2
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon {
+ border-color: #13c2c2
+}
+
+ .ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon, .ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon {
+ color: #13c2c2
+ }
+
+.ant-steps-navigation .ant-steps-item:before {
+ background-color: #13c2c2
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active, .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {
+ color: #13c2c2
+}
+
+.ant-tabs-extra-content .ant-tabs-new-tab:hover {
+ color: #13c2c2;
+ border-color: #13c2c2
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {
+ border-radius: 4px 0 0 4px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+ border-radius: 0 4px 4px 0
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {
+ border-radius: 0 0 4px 4px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
+ color: #13c2c2
+}
+
+.ant-tabs-ink-bar {
+ background-color: #13c2c2
+}
+
+.ant-tabs-bar, .ant-tabs-nav-container {
+ -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+ transition: padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-nav .ant-tabs-tab:before {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-tabs-nav .ant-tabs-tab:hover {
+ color: #36cfc9
+}
+
+.ant-tabs-nav .ant-tabs-tab:active {
+ color: #08979c
+}
+
+.ant-tabs-nav .ant-tabs-tab-active {
+ color: #13c2c2
+}
+
+.ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap {
+ margin-right: -1px
+}
+
+.ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+ margin-left: -1px
+}
+
+.ant-table table {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on, .ant-table-thead > tr > th .ant-table-filter-selected.anticon {
+ color: #13c2c2
+}
+
+.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover {
+ color: rgba(0,0,0,.45);
+ background: #e5e5e5
+}
+
+.ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter {
+ background: #f2f2f2
+}
+
+.ant-table-thead > tr:first-child > th:first-child {
+ border-top-left-radius: 4px
+}
+
+.ant-table-thead > tr:first-child > th:last-child {
+ border-top-right-radius: 4px
+}
+
+.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+ background: #e6fffb
+}
+
+.ant-table-tbody > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-tbody > tr:hover.ant-table-row-selected > td, .ant-table-tbody > tr:hover.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr:hover.ant-table-row-selected > td, .ant-table-thead > tr:hover.ant-table-row-selected > td.ant-table-column-sort {
+ background: #fafafa
+}
+
+.ant-table-footer {
+ border-radius: 0 0 4px 4px
+}
+
+.ant-table-title, .ant-table-title + .ant-table-content {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-table-bordered .ant-table-title + .ant-table-content, .ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th, .ant-table-bordered .ant-table-title + .ant-table-content table, .ant-table-without-column-header .ant-table-title + .ant-table-content, .ant-table-without-column-header table {
+ border-radius: 0
+}
+
+.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+ border-radius: 4px
+}
+
+.ant-table-header table {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-table-placeholder {
+ border-radius: 0 0 4px 4px
+}
+
+.ant-table-filter-dropdown {
+ border-radius: 4px
+}
+
+ .ant-table-filter-dropdown .ant-dropdown-menu {
+ border-radius: 4px 4px 0 0
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu-sub {
+ border-radius: 4px
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
+ color: #13c2c2;
+ text-shadow: 0 0 2px #b5f5ec
+ }
+
+.ant-table-filter-dropdown-link {
+ color: #13c2c2
+}
+
+ .ant-table-filter-dropdown-link:hover {
+ color: #36cfc9
+ }
+
+ .ant-table-filter-dropdown-link:active {
+ color: #08979c
+ }
+
+.ant-table-selection-menu {
+ border-radius: 4px
+}
+
+.ant-table-row-expand-icon {
+ color: #13c2c2
+}
+
+ .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+ color: #36cfc9
+ }
+
+ .ant-table-row-expand-icon:active {
+ color: #08979c
+ }
+
+.ant-table-fixed-left, .ant-table-fixed-left table {
+ border-radius: 4px 0 0 0
+}
+
+.ant-table-fixed-right, .ant-table-fixed-right table {
+ border-radius: 0 4px 0 0
+}
+
+.ant-table.ant-table-scroll-position-left .ant-table-fixed-left, .ant-table.ant-table-scroll-position-right .ant-table-fixed-right {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-footer, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-title {
+ padding: 12px 8px
+}
+
+.ant-table-small {
+ border-radius: 4px
+}
+
+ .ant-table-small > .ant-table-content .ant-table-header {
+ border-radius: 4px 4px 0 0
+ }
+
+ .ant-table-small.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+ border-radius: 0 0 4px 4px
+ }
+
+.ant-radio, .ant-radio-wrapper {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ white-space: nowrap;
+ cursor: pointer
+}
+
+ .ant-radio-input:focus + .ant-radio-inner, .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner {
+ border-color: #13c2c2
+ }
+
+.ant-radio-input:focus + .ant-radio-inner {
+ -webkit-box-shadow: 0 0 0 3px rgba(19,194,194,.08);
+ box-shadow: 0 0 0 3px rgba(19,194,194,.08)
+}
+
+.ant-radio-checked:after {
+ border: 1px solid #13c2c2
+}
+
+.ant-radio-inner:after {
+ background-color: #13c2c2
+}
+
+.ant-radio-checked .ant-radio-inner {
+ border-color: #13c2c2
+}
+
+.ant-radio-button-wrapper:first-child {
+ border-radius: 4px 0 0 4px
+}
+
+.ant-radio-button-wrapper:last-child {
+ border-radius: 0 4px 4px 0
+}
+
+.ant-radio-button-wrapper:first-child:last-child {
+ border-radius: 4px
+}
+
+.ant-radio-button-wrapper:hover {
+ color: #13c2c2
+}
+
+.ant-radio-button-wrapper:focus-within {
+ outline: 3px solid rgba(19,194,194,.06)
+}
+
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+ color: #13c2c2;
+ border-color: #13c2c2;
+ -webkit-box-shadow: -1px 0 0 0 #13c2c2;
+ box-shadow: -1px 0 0 0 #13c2c2
+}
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before {
+ background-color: #13c2c2 !important
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+ border-color: #13c2c2
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+ color: #36cfc9;
+ border-color: #36cfc9;
+ -webkit-box-shadow: -1px 0 0 0 #36cfc9;
+ box-shadow: -1px 0 0 0 #36cfc9
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+ color: #08979c;
+ border-color: #08979c;
+ -webkit-box-shadow: -1px 0 0 0 #08979c;
+ box-shadow: -1px 0 0 0 #08979c
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+ outline: 3px solid rgba(19,194,194,.06)
+ }
+
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+ background: #13c2c2;
+ border-color: #13c2c2
+}
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+ background: #36cfc9;
+ border-color: #36cfc9
+ }
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+ background: #08979c;
+ border-color: #08979c
+ }
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+ outline: 3px solid rgba(19,194,194,.06)
+ }
+
+.ant-radio-button-wrapper-disabled, .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9
+}
+
+.ant-checkbox-input:focus + .ant-checkbox-inner, .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner {
+ border-color: #13c2c2
+}
+
+.ant-checkbox-checked:after {
+ border: 1px solid #13c2c2
+}
+
+.ant-checkbox-checked .ant-checkbox-inner {
+ background-color: #13c2c2;
+ border-color: #13c2c2
+}
+
+.ant-checkbox-indeterminate .ant-checkbox-inner:after {
+ background-color: #13c2c2
+}
+
+.ant-dropdown-menu {
+ border-radius: 4px
+}
+
+.ant-dropdown-menu-item-selected, .ant-dropdown-menu-item-selected > a, .ant-dropdown-menu-submenu-title-selected, .ant-dropdown-menu-submenu-title-selected > a {
+ color: #13c2c2;
+ background-color: #e6fffb
+}
+
+.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover {
+ background-color: #e6fffb
+}
+
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+ color: #13c2c2
+}
+
+.ant-dropdown-menu-dark .ant-dropdown-menu-item, .ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after {
+ color: hsla(0,0%,100%,.65)
+}
+
+.ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+ background: #13c2c2
+}
+
+.ant-spin {
+ color: #13c2c2
+}
+
+.ant-spin-dot-item {
+ background-color: #13c2c2
+}
+
+.ant-pagination, .ant-pagination ol, .ant-pagination ul {
+ margin: 0;
+ padding: 0;
+ list-style: none
+}
+
+.ant-pagination-item, .ant-pagination-total-text {
+ display: inline-block;
+ height: 32px;
+ margin-right: 8px;
+ line-height: 30px;
+ vertical-align: middle
+}
+
+.ant-pagination-item {
+ border-radius: 4px
+}
+
+ .ant-pagination-item:focus, .ant-pagination-item:hover {
+ border-color: #13c2c2
+ }
+
+ .ant-pagination-item:focus a, .ant-pagination-item:hover a {
+ color: #13c2c2
+ }
+
+.ant-pagination-item-active {
+ border-color: #13c2c2
+}
+
+ .ant-pagination-item-active a {
+ color: #13c2c2
+ }
+
+ .ant-pagination-item-active:focus, .ant-pagination-item-active:hover {
+ border-color: #36cfc9
+ }
+
+ .ant-pagination-item-active:focus a, .ant-pagination-item-active:hover a {
+ color: #36cfc9
+ }
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+ color: #13c2c2
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-next, .ant-pagination-prev {
+ border-radius: 4px
+}
+
+ .ant-pagination-next:hover a, .ant-pagination-prev:hover a {
+ border-color: #36cfc9
+ }
+
+ .ant-pagination-next .ant-pagination-item-link, .ant-pagination-prev .ant-pagination-item-link {
+ border-radius: 4px
+ }
+
+ .ant-pagination-next:focus .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link, .ant-pagination-prev:focus .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link {
+ color: #13c2c2;
+ border-color: #13c2c2
+ }
+
+.ant-pagination-options-quick-jumper input {
+ border-radius: 4px
+}
+
+ .ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input:hover {
+ border-color: #36cfc9;
+ border-right-width: 1px !important
+ }
+
+ .ant-pagination-options-quick-jumper input:focus {
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-pagination-simple .ant-pagination-simple-pager input {
+ border-radius: 4px
+}
+
+ .ant-pagination-simple .ant-pagination-simple-pager input:hover {
+ border-color: #13c2c2
+ }
+
+.ant-select, .ant-select ol, .ant-select ul {
+ margin: 0;
+ padding: 0;
+ list-style: none
+}
+
+.ant-select-selection {
+ border-radius: 4px
+}
+
+ .ant-select-selection:hover {
+ border-color: #36cfc9
+ }
+
+ .ant-select-focused .ant-select-selection, .ant-select-selection:active, .ant-select-selection:focus {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-select-search--inline .ant-select-search__field {
+ border-radius: 4px
+}
+
+.ant-select-open .ant-select-selection {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-select-dropdown {
+ border-radius: 4px
+}
+
+.ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
+ background-color: #e6fffb
+}
+
+.ant-select-dropdown-menu-item-disabled, .ant-select-dropdown-menu-item-disabled:hover {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
+ background-color: #e6fffb
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
+ color: #13c2c2
+}
+
+.ant-modal-content {
+ border-radius: 4px
+}
+
+.ant-modal-header {
+ border-radius: 4px 4px 0 0
+}
+
+.ant-modal-footer {
+ border-radius: 0 0 4px 4px
+}
+
+.ant-row + .ant-row:before, .ant-row:after {
+ clear: both
+}
+
+.ant-row-flex, .ant-row-flex:after, .ant-row-flex:before {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.ant-card-actions > li > span:hover, .ant-card-actions > li > span > .anticon:hover, .ant-card-actions > li > span a:not(.ant-btn):hover {
+ color: #13c2c2
+}
+
+.ant-layout-sider-zero-width-trigger {
+ border-radius: 0 4px 4px 0
+}
+
+.ant-layout-sider-zero-width-trigger-right {
+ border-radius: 4px 0 0 4px
+}
+
+.ant-layout-sider-light .ant-layout-sider-trigger, .ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
+ color: rgba(0,0,0,.65);
+ background: #fff
+}
+
+.ant-collapse {
+ border-radius: 4px
+}
+
+ .ant-collapse-item:last-child > .ant-collapse-content, .ant-collapse > .ant-collapse-item:last-child, .ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
+ border-radius: 0 0 4px 4px
+ }
+
+form .has-feedback .ant-calendar-picker-clear, form .has-feedback .ant-calendar-picker-icon, form .has-feedback .ant-cascader-picker-clear, form .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix, form .has-feedback .ant-time-picker-clear, form .has-feedback .ant-time-picker-icon {
+ right: 28px
+}
+
+.ant-form-inline .ant-form-text, .ant-form-inline .has-feedback {
+ display: inline-block
+}
+
+.has-warning .ant-select-selection, .has-warning .ant-select-selection:hover {
+ border-color: #faad14
+}
+
+.has-error .ant-input-number:not([disabled]):hover, .has-error .ant-mention-wrapper .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover, .has-error .ant-select-selection, .has-error .ant-select-selection:hover, .has-error .ant-time-picker-input:not([disabled]):hover {
+ border-color: #f5222d
+}
+
+ .has-error .ant-cascader-picker:focus .ant-cascader-input, .has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+ }
+
+.has-error .ant-cascader-picker:hover .ant-cascader-input, .has-error .ant-transfer-list {
+ border-color: #f5222d
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):hover {
+ border-color: #36cfc9
+}
+
+.has-error .ant-transfer-list-search:not([disabled]):focus {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.is-validating.has-feedback .ant-form-item-children-icon {
+ color: #13c2c2
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+ -webkit-animation-duration: .3s;
+ animation-duration: .3s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused;
+ -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ animation-timing-function: cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-cascader-picker {
+ border-radius: 4px
+}
+
+ .ant-cascader-picker:focus .ant-cascader-input {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-cascader-picker-label:hover + .ant-cascader-input {
+ border-color: #36cfc9
+}
+
+.ant-cascader-menus {
+ border-radius: 4px
+}
+
+.ant-cascader-menu:first-child {
+ border-radius: 4px 0 0 4px
+}
+
+.ant-cascader-menu:last-child {
+ border-radius: 0 4px 4px 0
+}
+
+.ant-cascader-menu:only-child {
+ border-radius: 4px
+}
+
+.ant-cascader-menu-item:hover {
+ background: #e6fffb
+}
+
+.ant-select-tree-checkbox-input:focus + .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox-wrapper:hover .ant-select-tree-checkbox-inner, .ant-select-tree-checkbox:hover .ant-select-tree-checkbox-inner {
+ border-color: #13c2c2
+}
+
+.ant-select-tree-checkbox-checked:after {
+ border: 1px solid #13c2c2
+}
+
+.ant-select-tree-checkbox-checked .ant-select-tree-checkbox-inner {
+ background-color: #13c2c2;
+ border-color: #13c2c2
+}
+
+.ant-select-tree-checkbox-indeterminate .ant-select-tree-checkbox-inner:after {
+ background-color: #13c2c2
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper:hover {
+ background-color: #e6fffb
+}
+
+.ant-select-tree li .ant-select-tree-node-content-wrapper.ant-select-tree-node-selected {
+ background-color: #b5f5ec
+}
+
+.ant-select-tree li span.ant-select-icon_loading .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_close .ant-select-switcher-loading-icon, .ant-select-tree li span.ant-select-tree-switcher.ant-select-tree-switcher_open .ant-select-switcher-loading-icon {
+ color: #13c2c2
+}
+
+.ant-select-tree-child-tree, .ant-select-tree .ant-select-tree-treenode-loading .ant-select-tree-iconEle {
+ display: none
+}
+
+.ant-select-tree-icon__close, .ant-select-tree-icon__open {
+ margin-right: 2px;
+ vertical-align: top
+}
+
+.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
+ color: #13c2c2
+}
+
+.ant-switch:focus {
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-switch-checked {
+ background-color: #13c2c2
+}
+
+.ant-switch-disabled *, .ant-switch-disabled:after, .ant-switch-disabled:before, .ant-switch-loading *, .ant-switch-loading:after, .ant-switch-loading:before {
+ cursor: not-allowed
+}
+
+.ant-slider-rail, .ant-slider-track {
+ position: absolute;
+ height: 4px;
+ -webkit-transition: background-color .3s;
+ transition: background-color .3s
+}
+
+.ant-slider-track {
+ background-color: #87e8de;
+ border-radius: 4px
+}
+
+.ant-slider-handle {
+ border: 2px solid #87e8de
+}
+
+ .ant-slider-handle:focus {
+ border-color: #42cece;
+ -webkit-box-shadow: 0 0 0 5px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 5px rgba(19,194,194,.2)
+ }
+
+ .ant-slider-handle.ant-tooltip-open {
+ border-color: #13c2c2
+ }
+
+.ant-slider:hover .ant-slider-track {
+ background-color: #5cdbd3
+}
+
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+ border-color: #5cdbd3
+}
+
+.ant-slider-dot, .ant-slider-dot:first-child, .ant-slider-dot:last-child {
+ margin-left: -4px
+}
+
+.ant-slider-dot-active {
+ border-color: #89e1e1
+}
+
+.ant-input-number {
+ border-radius: 4px
+}
+
+ .ant-input-number:focus {
+ border-color: #36cfc9;
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+ }
+
+.ant-input-number-handler:hover .ant-input-number-handler-down-inner, .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+ color: #36cfc9
+}
+
+.ant-input-number-focused, .ant-input-number:hover {
+ border-color: #36cfc9;
+ border-right-width: 1px !important
+}
+
+.ant-input-number-focused {
+ -webkit-box-shadow: 0 0 0 2px rgba(19,194,194,.2);
+ box-shadow: 0 0 0 2px rgba(19,194,194,.2)
+}
+
+.ant-input-number-input {
+ border-radius: 4px
+}
+
+.ant-input-number-handler-wrap {
+ border-radius: 0 4px 4px 0
+}
+
+.ant-input-number-handler-up {
+ border-top-right-radius: 4px
+}
+
+.ant-input-number-handler-down {
+ border-bottom-right-radius: 4px
+}
+
+.upload-img-box-9136076486841527 .ant-upload-select-picture-card i {
+ font-size: 32px;
+ color: #999
+}
+
+.upload-img-box-9136076486841527 .ant-upload-select-picture-card .ant-upload-text {
+ margin-top: 8px;
+ color: #666
+}
+
+.slider-box[data-v-6f1c9c0c] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.slider-box > .slider[data-v-6f1c9c0c] {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin-right: 16px
+}
+
+.slider-box > .number[data-v-6f1c9c0c] {
+ width: 70px
+}
+
+.dynamic-opr-button[data-v-3c514c7c]:last {
+ margin-left: 0
+}
+
+.dynamic-opr-button[data-v-3c514c7c] {
+ cursor: pointer;
+ position: relative;
+ top: 4px;
+ font-size: 16px;
+ color: #999;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ margin-left: 6px
+}
+
+ .dynamic-opr-button[data-v-3c514c7c]:hover {
+ color: #e89
+ }
+
+.dynamic-opr-button[disabled][data-v-3c514c7c] {
+ cursor: not-allowed;
+ opacity: .5
+}
+
+.slider-box[data-v-c2f27656] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.slider-box > .slider[data-v-c2f27656] {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin-right: 16px
+}
+
+.slider-box > .number[data-v-c2f27656] {
+ width: 70px
+}
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */ .ql-snow.ql-toolbar:after, .ql-snow .ql-toolbar:after {
+ clear: both;
+ content: "";
+ display: table
+}
+
+.ql-snow.ql-toolbar button, .ql-snow .ql-toolbar button {
+ background: none;
+ border: none;
+ cursor: pointer;
+ display: inline-block;
+ float: left;
+ height: 24px;
+ padding: 3px 5px;
+ width: 28px
+}
+
+ .ql-snow.ql-toolbar button svg, .ql-snow .ql-toolbar button svg {
+ float: left;
+ height: 100%
+ }
+
+ .ql-snow.ql-toolbar button:active:hover, .ql-snow .ql-toolbar button:active:hover {
+ outline: none
+ }
+
+.ql-snow.ql-toolbar input.ql-image[type=file], .ql-snow .ql-toolbar input.ql-image[type=file] {
+ display: none
+}
+
+.ql-snow.ql-toolbar .ql-picker-item.ql-selected, .ql-snow .ql-toolbar .ql-picker-item.ql-selected, .ql-snow.ql-toolbar .ql-picker-item:hover, .ql-snow .ql-toolbar .ql-picker-item:hover, .ql-snow.ql-toolbar .ql-picker-label.ql-active, .ql-snow .ql-toolbar .ql-picker-label.ql-active, .ql-snow.ql-toolbar .ql-picker-label:hover, .ql-snow .ql-toolbar .ql-picker-label:hover, .ql-snow.ql-toolbar button.ql-active, .ql-snow .ql-toolbar button.ql-active, .ql-snow.ql-toolbar button:focus, .ql-snow .ql-toolbar button:focus, .ql-snow.ql-toolbar button:hover, .ql-snow .ql-toolbar button:hover {
+ color: #06c
+}
+
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-fill, .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:focus .ql-fill, .ql-snow .ql-toolbar button:focus .ql-fill, .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-snow.ql-toolbar button:hover .ql-fill, .ql-snow .ql-toolbar button:hover .ql-fill, .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill {
+ fill: #06c
+ }
+
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-snow.ql-toolbar button.ql-active .ql-stroke, .ql-snow .ql-toolbar button.ql-active .ql-stroke, .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter, .ql-snow.ql-toolbar button:focus .ql-stroke, .ql-snow .ql-toolbar button:focus .ql-stroke, .ql-snow.ql-toolbar button:focus .ql-stroke-miter, .ql-snow .ql-toolbar button:focus .ql-stroke-miter, .ql-snow.ql-toolbar button:hover .ql-stroke, .ql-snow .ql-toolbar button:hover .ql-stroke, .ql-snow.ql-toolbar button:hover .ql-stroke-miter, .ql-snow .ql-toolbar button:hover .ql-stroke-miter {
+ stroke: #06c
+ }
+
+@media (pointer:coarse) {
+ .ql-snow.ql-toolbar button:hover:not(.ql-active), .ql-snow .ql-toolbar button:hover:not(.ql-active) {
+ color: #444
+ }
+
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
+ fill: #444
+ }
+
+ .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, .ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
+ stroke: #444
+ }
+}
+
+.ql-snow, .ql-snow * {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+ .ql-snow .ql-hidden {
+ display: none
+ }
+
+ .ql-snow .ql-out-bottom, .ql-snow .ql-out-top {
+ visibility: hidden
+ }
+
+ .ql-snow .ql-tooltip {
+ position: absolute;
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px)
+ }
+
+ .ql-snow .ql-tooltip a {
+ cursor: pointer;
+ text-decoration: none
+ }
+
+ .ql-snow .ql-tooltip.ql-flip {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px)
+ }
+
+ .ql-snow .ql-formats {
+ display: inline-block;
+ vertical-align: middle
+ }
+
+ .ql-snow .ql-formats:after {
+ clear: both;
+ content: "";
+ display: table
+ }
+
+ .ql-snow .ql-stroke {
+ fill: none;
+ stroke: #444;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ stroke-width: 2
+ }
+
+ .ql-snow .ql-stroke-miter {
+ fill: none;
+ stroke: #444;
+ stroke-miterlimit: 10;
+ stroke-width: 2
+ }
+
+ .ql-snow .ql-fill, .ql-snow .ql-stroke.ql-fill {
+ fill: #444
+ }
+
+ .ql-snow .ql-empty {
+ fill: none
+ }
+
+ .ql-snow .ql-even {
+ fill-rule: evenodd
+ }
+
+ .ql-snow .ql-stroke.ql-thin, .ql-snow .ql-thin {
+ stroke-width: 1
+ }
+
+ .ql-snow .ql-transparent {
+ opacity: .4
+ }
+
+ .ql-snow .ql-direction svg:last-child {
+ display: none
+ }
+
+ .ql-snow .ql-direction.ql-active svg:last-child {
+ display: inline
+ }
+
+ .ql-snow .ql-direction.ql-active svg:first-child {
+ display: none
+ }
+
+ .ql-snow .ql-editor h1 {
+ font-size: 2em
+ }
+
+ .ql-snow .ql-editor h2 {
+ font-size: 1.5em
+ }
+
+ .ql-snow .ql-editor h3 {
+ font-size: 1.17em
+ }
+
+ .ql-snow .ql-editor h4 {
+ font-size: 1em
+ }
+
+ .ql-snow .ql-editor h5 {
+ font-size: .83em
+ }
+
+ .ql-snow .ql-editor h6 {
+ font-size: .67em
+ }
+
+ .ql-snow .ql-editor a {
+ text-decoration: underline
+ }
+
+ .ql-snow .ql-editor blockquote {
+ border-left: 4px solid #ccc;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 16px
+ }
+
+ .ql-snow .ql-editor code, .ql-snow .ql-editor pre {
+ background-color: #f0f0f0;
+ border-radius: 3px
+ }
+
+ .ql-snow .ql-editor pre {
+ white-space: pre-wrap;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding: 5px 10px
+ }
+
+ .ql-snow .ql-editor code {
+ font-size: 85%;
+ padding: 2px 4px
+ }
+
+ .ql-snow .ql-editor pre.ql-syntax {
+ background-color: #23241f;
+ color: #f8f8f2;
+ overflow: visible
+ }
+
+ .ql-snow .ql-editor img {
+ max-width: 100%
+ }
+
+ .ql-snow .ql-picker {
+ color: #444;
+ display: inline-block;
+ float: left;
+ font-size: 14px;
+ font-weight: 500;
+ height: 24px;
+ position: relative;
+ vertical-align: middle
+ }
+
+ .ql-snow .ql-picker-label {
+ cursor: pointer;
+ display: inline-block;
+ height: 100%;
+ padding-left: 8px;
+ padding-right: 2px;
+ position: relative;
+ width: 100%
+ }
+
+ .ql-snow .ql-picker-label:before {
+ display: inline-block;
+ line-height: 22px
+ }
+
+ .ql-snow .ql-picker-options {
+ background-color: #fff;
+ display: none;
+ min-width: 100%;
+ padding: 4px 8px;
+ position: absolute;
+ white-space: nowrap
+ }
+
+ .ql-snow .ql-picker-options .ql-picker-item {
+ cursor: pointer;
+ display: block;
+ padding-bottom: 5px;
+ padding-top: 5px
+ }
+
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label {
+ color: #ccc;
+ z-index: 2
+ }
+
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+ fill: #ccc
+ }
+
+ .ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+ stroke: #ccc
+ }
+
+ .ql-snow .ql-picker.ql-expanded .ql-picker-options {
+ display: block;
+ margin-top: -1px;
+ top: 100%;
+ z-index: 1
+ }
+
+ .ql-snow .ql-color-picker, .ql-snow .ql-icon-picker {
+ width: 28px
+ }
+
+ .ql-snow .ql-color-picker .ql-picker-label, .ql-snow .ql-icon-picker .ql-picker-label {
+ padding: 2px 4px
+ }
+
+ .ql-snow .ql-color-picker .ql-picker-label svg, .ql-snow .ql-icon-picker .ql-picker-label svg {
+ right: 4px
+ }
+
+ .ql-snow .ql-icon-picker .ql-picker-options {
+ padding: 4px 0
+ }
+
+ .ql-snow .ql-icon-picker .ql-picker-item {
+ height: 24px;
+ width: 24px;
+ padding: 2px 4px
+ }
+
+ .ql-snow .ql-color-picker .ql-picker-options {
+ padding: 3px 5px;
+ width: 152px
+ }
+
+ .ql-snow .ql-color-picker .ql-picker-item {
+ border: 1px solid transparent;
+ float: left;
+ height: 16px;
+ margin: 2px;
+ padding: 0;
+ width: 16px
+ }
+
+ .ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
+ position: absolute;
+ margin-top: -9px;
+ right: 0;
+ top: 50%;
+ width: 18px
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before {
+ content: attr(data-label)
+ }
+
+ .ql-snow .ql-picker.ql-header {
+ width: 98px
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item:before, .ql-snow .ql-picker.ql-header .ql-picker-label:before {
+ content: "Normal"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+ content: "Heading 1"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+ content: "Heading 2"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+ content: "Heading 3"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+ content: "Heading 4"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+ content: "Heading 5"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+ content: "Heading 6"
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
+ font-size: 2em
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
+ font-size: 1.5em
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
+ font-size: 1.17em
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
+ font-size: 1em
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
+ font-size: .83em
+ }
+
+ .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
+ font-size: .67em
+ }
+
+ .ql-snow .ql-picker.ql-font {
+ width: 108px
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item:before, .ql-snow .ql-picker.ql-font .ql-picker-label:before {
+ content: "Sans Serif"
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+ content: "Serif"
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+ content: "Monospace"
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
+ font-family: Georgia,Times New Roman,serif
+ }
+
+ .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
+ font-family: Monaco,Courier New,monospace
+ }
+
+ .ql-snow .ql-picker.ql-size {
+ width: 98px
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item:before, .ql-snow .ql-picker.ql-size .ql-picker-label:before {
+ content: "Normal"
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+ content: "Small"
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+ content: "Large"
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+ content: "Huge"
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
+ font-size: 10px
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
+ font-size: 18px
+ }
+
+ .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
+ font-size: 32px
+ }
+
+ .ql-snow .ql-color-picker.ql-background .ql-picker-item {
+ background-color: #fff
+ }
+
+ .ql-snow .ql-color-picker.ql-color .ql-picker-item {
+ background-color: #000
+ }
+
+.ql-toolbar.ql-snow {
+ border: 1px solid #ccc;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-family: Helvetica Neue,Helvetica,Arial,sans-serif;
+ padding: 8px
+}
+
+ .ql-toolbar.ql-snow .ql-formats {
+ margin-right: 15px
+ }
+
+ .ql-toolbar.ql-snow .ql-picker-label {
+ border: 1px solid transparent
+ }
+
+ .ql-toolbar.ql-snow .ql-picker-options {
+ border: 1px solid transparent;
+ -webkit-box-shadow: rgba(0,0,0,.2) 0 2px 8px;
+ box-shadow: 0 2px 8px rgba(0,0,0,.2)
+ }
+
+ .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label, .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options {
+ border-color: #ccc
+ }
+
+ .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected, .ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover {
+ border-color: #000
+ }
+
+ .ql-toolbar.ql-snow + .ql-container.ql-snow {
+ border-top: 0
+ }
+
+.ql-snow .ql-tooltip {
+ background-color: #fff;
+ border: 1px solid #ccc;
+ -webkit-box-shadow: 0 0 5px #ddd;
+ box-shadow: 0 0 5px #ddd;
+ color: #444;
+ padding: 5px 12px;
+ white-space: nowrap
+}
+
+ .ql-snow .ql-tooltip:before {
+ content: "Visit URL:";
+ line-height: 26px;
+ margin-right: 8px
+ }
+
+ .ql-snow .ql-tooltip input[type=text] {
+ display: none;
+ border: 1px solid #ccc;
+ font-size: 13px;
+ height: 26px;
+ margin: 0;
+ padding: 3px 5px;
+ width: 170px
+ }
+
+ .ql-snow .ql-tooltip a.ql-preview {
+ display: inline-block;
+ max-width: 200px;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ vertical-align: top
+ }
+
+ .ql-snow .ql-tooltip a.ql-action:after {
+ border-right: 1px solid #ccc;
+ content: "Edit";
+ margin-left: 16px;
+ padding-right: 8px
+ }
+
+ .ql-snow .ql-tooltip a.ql-remove:before {
+ content: "Remove";
+ margin-left: 8px
+ }
+
+ .ql-snow .ql-tooltip a {
+ line-height: 26px
+ }
+
+ .ql-snow .ql-tooltip.ql-editing a.ql-preview, .ql-snow .ql-tooltip.ql-editing a.ql-remove {
+ display: none
+ }
+
+ .ql-snow .ql-tooltip.ql-editing input[type=text] {
+ display: inline-block
+ }
+
+ .ql-snow .ql-tooltip.ql-editing a.ql-action:after {
+ border-right: 0;
+ content: "Save";
+ padding-right: 0
+ }
+
+ .ql-snow .ql-tooltip[data-mode=link]:before {
+ content: "Enter link:"
+ }
+
+ .ql-snow .ql-tooltip[data-mode=formula]:before {
+ content: "Enter formula:"
+ }
+
+ .ql-snow .ql-tooltip[data-mode=video]:before {
+ content: "Enter video:"
+ }
+
+.ql-snow a {
+ color: #06c
+}
+
+.ql-container.ql-snow {
+ border: 1px solid #ccc
+}
+
+/*!
+ * Quill Editor v1.3.7
+ * https://quilljs.com/
+ * Copyright (c) 2014, Jason Chen
+ * Copyright (c) 2013, salesforce.com
+ */ .ql-container {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-family: Helvetica,Arial,sans-serif;
+ font-size: 13px;
+ height: 100%;
+ margin: 0;
+ position: relative
+}
+
+ .ql-container.ql-disabled .ql-tooltip {
+ visibility: hidden
+ }
+
+ .ql-container.ql-disabled .ql-editor ul[data-checked] > li:before {
+ pointer-events: none
+ }
+
+.ql-clipboard {
+ left: -100000px;
+ height: 1px;
+ overflow-y: hidden;
+ position: absolute;
+ top: 50%
+}
+
+ .ql-clipboard p {
+ margin: 0;
+ padding: 0
+ }
+
+.ql-editor {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ line-height: 1.42;
+ height: 100%;
+ outline: none;
+ overflow-y: auto;
+ padding: 12px 15px;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -moz-tab-size: 4;
+ text-align: left;
+ white-space: pre-wrap;
+ word-wrap: break-word
+}
+
+ .ql-editor > * {
+ cursor: text
+ }
+
+ .ql-editor blockquote, .ql-editor h1, .ql-editor h2, .ql-editor h3, .ql-editor h4, .ql-editor h5, .ql-editor h6, .ql-editor ol, .ql-editor p, .ql-editor pre, .ql-editor ul {
+ margin: 0;
+ padding: 0;
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol, .ql-editor ul {
+ padding-left: 1.5em
+ }
+
+ .ql-editor ol > li, .ql-editor ul > li {
+ list-style-type: none
+ }
+
+ .ql-editor ul > li:before {
+ content: "\2022"
+ }
+
+ .ql-editor ul[data-checked=false], .ql-editor ul[data-checked=true] {
+ pointer-events: none
+ }
+
+ .ql-editor ul[data-checked=false] > li *, .ql-editor ul[data-checked=true] > li * {
+ pointer-events: all
+ }
+
+ .ql-editor ul[data-checked=false] > li:before, .ql-editor ul[data-checked=true] > li:before {
+ color: #777;
+ cursor: pointer;
+ pointer-events: all
+ }
+
+ .ql-editor ul[data-checked=true] > li:before {
+ content: "\2611"
+ }
+
+ .ql-editor ul[data-checked=false] > li:before {
+ content: "\2610"
+ }
+
+ .ql-editor li:before {
+ display: inline-block;
+ white-space: nowrap;
+ width: 1.2em
+ }
+
+ .ql-editor li:not(.ql-direction-rtl):before {
+ margin-left: -1.5em;
+ margin-right: .3em;
+ text-align: right
+ }
+
+ .ql-editor li.ql-direction-rtl:before {
+ margin-left: .3em;
+ margin-right: -1.5em
+ }
+
+ .ql-editor ol li:not(.ql-direction-rtl), .ql-editor ul li:not(.ql-direction-rtl) {
+ padding-left: 1.5em
+ }
+
+ .ql-editor ol li.ql-direction-rtl, .ql-editor ul li.ql-direction-rtl {
+ padding-right: 1.5em
+ }
+
+ .ql-editor ol li {
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+ counter-increment: list-0
+ }
+
+ .ql-editor ol li:before {
+ content: counter(list-0,decimal) ". "
+ }
+
+ .ql-editor ol li.ql-indent-1 {
+ counter-increment: list-1
+ }
+
+ .ql-editor ol li.ql-indent-1:before {
+ content: counter(list-1,lower-alpha) ". "
+ }
+
+ .ql-editor ol li.ql-indent-1 {
+ counter-reset: list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-2 {
+ counter-increment: list-2
+ }
+
+ .ql-editor ol li.ql-indent-2:before {
+ content: counter(list-2,lower-roman) ". "
+ }
+
+ .ql-editor ol li.ql-indent-2 {
+ counter-reset: list-3 list-4 list-5 list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-3 {
+ counter-increment: list-3
+ }
+
+ .ql-editor ol li.ql-indent-3:before {
+ content: counter(list-3,decimal) ". "
+ }
+
+ .ql-editor ol li.ql-indent-3 {
+ counter-reset: list-4 list-5 list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-4 {
+ counter-increment: list-4
+ }
+
+ .ql-editor ol li.ql-indent-4:before {
+ content: counter(list-4,lower-alpha) ". "
+ }
+
+ .ql-editor ol li.ql-indent-4 {
+ counter-reset: list-5 list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-5 {
+ counter-increment: list-5
+ }
+
+ .ql-editor ol li.ql-indent-5:before {
+ content: counter(list-5,lower-roman) ". "
+ }
+
+ .ql-editor ol li.ql-indent-5 {
+ counter-reset: list-6 list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-6 {
+ counter-increment: list-6
+ }
+
+ .ql-editor ol li.ql-indent-6:before {
+ content: counter(list-6,decimal) ". "
+ }
+
+ .ql-editor ol li.ql-indent-6 {
+ counter-reset: list-7 list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-7 {
+ counter-increment: list-7
+ }
+
+ .ql-editor ol li.ql-indent-7:before {
+ content: counter(list-7,lower-alpha) ". "
+ }
+
+ .ql-editor ol li.ql-indent-7 {
+ counter-reset: list-8 list-9
+ }
+
+ .ql-editor ol li.ql-indent-8 {
+ counter-increment: list-8
+ }
+
+ .ql-editor ol li.ql-indent-8:before {
+ content: counter(list-8,lower-roman) ". "
+ }
+
+ .ql-editor ol li.ql-indent-8 {
+ counter-reset: list-9
+ }
+
+ .ql-editor ol li.ql-indent-9 {
+ counter-increment: list-9
+ }
+
+ .ql-editor ol li.ql-indent-9:before {
+ content: counter(list-9,decimal) ". "
+ }
+
+ .ql-editor .ql-indent-1:not(.ql-direction-rtl) {
+ padding-left: 3em
+ }
+
+ .ql-editor li.ql-indent-1:not(.ql-direction-rtl) {
+ padding-left: 4.5em
+ }
+
+ .ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right {
+ padding-right: 3em
+ }
+
+ .ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right {
+ padding-right: 4.5em
+ }
+
+ .ql-editor .ql-indent-2:not(.ql-direction-rtl) {
+ padding-left: 6em
+ }
+
+ .ql-editor li.ql-indent-2:not(.ql-direction-rtl) {
+ padding-left: 7.5em
+ }
+
+ .ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right {
+ padding-right: 6em
+ }
+
+ .ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right {
+ padding-right: 7.5em
+ }
+
+ .ql-editor .ql-indent-3:not(.ql-direction-rtl) {
+ padding-left: 9em
+ }
+
+ .ql-editor li.ql-indent-3:not(.ql-direction-rtl) {
+ padding-left: 10.5em
+ }
+
+ .ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right {
+ padding-right: 9em
+ }
+
+ .ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right {
+ padding-right: 10.5em
+ }
+
+ .ql-editor .ql-indent-4:not(.ql-direction-rtl) {
+ padding-left: 12em
+ }
+
+ .ql-editor li.ql-indent-4:not(.ql-direction-rtl) {
+ padding-left: 13.5em
+ }
+
+ .ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right {
+ padding-right: 12em
+ }
+
+ .ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right {
+ padding-right: 13.5em
+ }
+
+ .ql-editor .ql-indent-5:not(.ql-direction-rtl) {
+ padding-left: 15em
+ }
+
+ .ql-editor li.ql-indent-5:not(.ql-direction-rtl) {
+ padding-left: 16.5em
+ }
+
+ .ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right {
+ padding-right: 15em
+ }
+
+ .ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right {
+ padding-right: 16.5em
+ }
+
+ .ql-editor .ql-indent-6:not(.ql-direction-rtl) {
+ padding-left: 18em
+ }
+
+ .ql-editor li.ql-indent-6:not(.ql-direction-rtl) {
+ padding-left: 19.5em
+ }
+
+ .ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right {
+ padding-right: 18em
+ }
+
+ .ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right {
+ padding-right: 19.5em
+ }
+
+ .ql-editor .ql-indent-7:not(.ql-direction-rtl) {
+ padding-left: 21em
+ }
+
+ .ql-editor li.ql-indent-7:not(.ql-direction-rtl) {
+ padding-left: 22.5em
+ }
+
+ .ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right {
+ padding-right: 21em
+ }
+
+ .ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right {
+ padding-right: 22.5em
+ }
+
+ .ql-editor .ql-indent-8:not(.ql-direction-rtl) {
+ padding-left: 24em
+ }
+
+ .ql-editor li.ql-indent-8:not(.ql-direction-rtl) {
+ padding-left: 25.5em
+ }
+
+ .ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right {
+ padding-right: 24em
+ }
+
+ .ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right {
+ padding-right: 25.5em
+ }
+
+ .ql-editor .ql-indent-9:not(.ql-direction-rtl) {
+ padding-left: 27em
+ }
+
+ .ql-editor li.ql-indent-9:not(.ql-direction-rtl) {
+ padding-left: 28.5em
+ }
+
+ .ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right {
+ padding-right: 27em
+ }
+
+ .ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right {
+ padding-right: 28.5em
+ }
+
+ .ql-editor .ql-video {
+ display: block;
+ max-width: 100%
+ }
+
+ .ql-editor .ql-video.ql-align-center {
+ margin: 0 auto
+ }
+
+ .ql-editor .ql-video.ql-align-right {
+ margin: 0 0 0 auto
+ }
+
+ .ql-editor .ql-bg-black {
+ background-color: #000
+ }
+
+ .ql-editor .ql-bg-red {
+ background-color: #e60000
+ }
+
+ .ql-editor .ql-bg-orange {
+ background-color: #f90
+ }
+
+ .ql-editor .ql-bg-yellow {
+ background-color: #ff0
+ }
+
+ .ql-editor .ql-bg-green {
+ background-color: #008a00
+ }
+
+ .ql-editor .ql-bg-blue {
+ background-color: #06c
+ }
+
+ .ql-editor .ql-bg-purple {
+ background-color: #93f
+ }
+
+ .ql-editor .ql-color-white {
+ color: #fff
+ }
+
+ .ql-editor .ql-color-red {
+ color: #e60000
+ }
+
+ .ql-editor .ql-color-orange {
+ color: #f90
+ }
+
+ .ql-editor .ql-color-yellow {
+ color: #ff0
+ }
+
+ .ql-editor .ql-color-green {
+ color: #008a00
+ }
+
+ .ql-editor .ql-color-blue {
+ color: #06c
+ }
+
+ .ql-editor .ql-color-purple {
+ color: #93f
+ }
+
+ .ql-editor .ql-font-serif {
+ font-family: Georgia,Times New Roman,serif
+ }
+
+ .ql-editor .ql-font-monospace {
+ font-family: Monaco,Courier New,monospace
+ }
+
+ .ql-editor .ql-size-small {
+ font-size: .75em
+ }
+
+ .ql-editor .ql-size-large {
+ font-size: 1.5em
+ }
+
+ .ql-editor .ql-size-huge {
+ font-size: 2.5em
+ }
+
+ .ql-editor .ql-direction-rtl {
+ direction: rtl;
+ text-align: inherit
+ }
+
+ .ql-editor .ql-align-center {
+ text-align: center
+ }
+
+ .ql-editor .ql-align-justify {
+ text-align: justify
+ }
+
+ .ql-editor .ql-align-right {
+ text-align: right
+ }
+
+ .ql-editor.ql-blank:before {
+ color: rgba(0,0,0,.6);
+ content: attr(data-placeholder);
+ font-style: italic;
+ left: 15px;
+ pointer-events: none;
+ position: absolute;
+ right: 15px
+ }
+
+.ql-bubble.ql-toolbar:after, .ql-bubble .ql-toolbar:after {
+ clear: both;
+ content: "";
+ display: table
+}
+
+.ql-bubble.ql-toolbar button, .ql-bubble .ql-toolbar button {
+ background: none;
+ border: none;
+ cursor: pointer;
+ display: inline-block;
+ float: left;
+ height: 24px;
+ padding: 3px 5px;
+ width: 28px
+}
+
+ .ql-bubble.ql-toolbar button svg, .ql-bubble .ql-toolbar button svg {
+ float: left;
+ height: 100%
+ }
+
+ .ql-bubble.ql-toolbar button:active:hover, .ql-bubble .ql-toolbar button:active:hover {
+ outline: none
+ }
+
+.ql-bubble.ql-toolbar input.ql-image[type=file], .ql-bubble .ql-toolbar input.ql-image[type=file] {
+ display: none
+}
+
+.ql-bubble.ql-toolbar .ql-picker-item.ql-selected, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected, .ql-bubble.ql-toolbar .ql-picker-item:hover, .ql-bubble .ql-toolbar .ql-picker-item:hover, .ql-bubble.ql-toolbar .ql-picker-label.ql-active, .ql-bubble .ql-toolbar .ql-picker-label.ql-active, .ql-bubble.ql-toolbar .ql-picker-label:hover, .ql-bubble .ql-toolbar .ql-picker-label:hover, .ql-bubble.ql-toolbar button.ql-active, .ql-bubble .ql-toolbar button.ql-active, .ql-bubble.ql-toolbar button:focus, .ql-bubble .ql-toolbar button:focus, .ql-bubble.ql-toolbar button:hover, .ql-bubble .ql-toolbar button:hover {
+ color: #fff
+}
+
+ .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill, .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button.ql-active .ql-fill, .ql-bubble .ql-toolbar button.ql-active .ql-fill, .ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button:focus .ql-fill, .ql-bubble .ql-toolbar button:focus .ql-fill, .ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill, .ql-bubble.ql-toolbar button:hover .ql-fill, .ql-bubble .ql-toolbar button:hover .ql-fill, .ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill {
+ fill: #fff
+ }
+
+ .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke, .ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter, .ql-bubble.ql-toolbar button.ql-active .ql-stroke, .ql-bubble .ql-toolbar button.ql-active .ql-stroke, .ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter, .ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter, .ql-bubble.ql-toolbar button:focus .ql-stroke, .ql-bubble .ql-toolbar button:focus .ql-stroke, .ql-bubble.ql-toolbar button:focus .ql-stroke-miter, .ql-bubble .ql-toolbar button:focus .ql-stroke-miter, .ql-bubble.ql-toolbar button:hover .ql-stroke, .ql-bubble .ql-toolbar button:hover .ql-stroke, .ql-bubble.ql-toolbar button:hover .ql-stroke-miter, .ql-bubble .ql-toolbar button:hover .ql-stroke-miter {
+ stroke: #fff
+ }
+
+@media (pointer:coarse) {
+ .ql-bubble.ql-toolbar button:hover:not(.ql-active), .ql-bubble .ql-toolbar button:hover:not(.ql-active) {
+ color: #ccc
+ }
+
+ .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill, .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill {
+ fill: #ccc
+ }
+
+ .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke, .ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter, .ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter {
+ stroke: #ccc
+ }
+}
+
+.ql-bubble, .ql-bubble * {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+ .ql-bubble .ql-hidden {
+ display: none
+ }
+
+ .ql-bubble .ql-out-bottom, .ql-bubble .ql-out-top {
+ visibility: hidden
+ }
+
+ .ql-bubble .ql-tooltip {
+ position: absolute;
+ -webkit-transform: translateY(10px);
+ transform: translateY(10px)
+ }
+
+ .ql-bubble .ql-tooltip a {
+ cursor: pointer;
+ text-decoration: none
+ }
+
+ .ql-bubble .ql-tooltip.ql-flip {
+ -webkit-transform: translateY(-10px);
+ transform: translateY(-10px)
+ }
+
+ .ql-bubble .ql-formats {
+ display: inline-block;
+ vertical-align: middle
+ }
+
+ .ql-bubble .ql-formats:after {
+ clear: both;
+ content: "";
+ display: table
+ }
+
+ .ql-bubble .ql-stroke {
+ fill: none;
+ stroke: #ccc;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ stroke-width: 2
+ }
+
+ .ql-bubble .ql-stroke-miter {
+ fill: none;
+ stroke: #ccc;
+ stroke-miterlimit: 10;
+ stroke-width: 2
+ }
+
+ .ql-bubble .ql-fill, .ql-bubble .ql-stroke.ql-fill {
+ fill: #ccc
+ }
+
+ .ql-bubble .ql-empty {
+ fill: none
+ }
+
+ .ql-bubble .ql-even {
+ fill-rule: evenodd
+ }
+
+ .ql-bubble .ql-stroke.ql-thin, .ql-bubble .ql-thin {
+ stroke-width: 1
+ }
+
+ .ql-bubble .ql-transparent {
+ opacity: .4
+ }
+
+ .ql-bubble .ql-direction svg:last-child {
+ display: none
+ }
+
+ .ql-bubble .ql-direction.ql-active svg:last-child {
+ display: inline
+ }
+
+ .ql-bubble .ql-direction.ql-active svg:first-child {
+ display: none
+ }
+
+ .ql-bubble .ql-editor h1 {
+ font-size: 2em
+ }
+
+ .ql-bubble .ql-editor h2 {
+ font-size: 1.5em
+ }
+
+ .ql-bubble .ql-editor h3 {
+ font-size: 1.17em
+ }
+
+ .ql-bubble .ql-editor h4 {
+ font-size: 1em
+ }
+
+ .ql-bubble .ql-editor h5 {
+ font-size: .83em
+ }
+
+ .ql-bubble .ql-editor h6 {
+ font-size: .67em
+ }
+
+ .ql-bubble .ql-editor a {
+ text-decoration: underline
+ }
+
+ .ql-bubble .ql-editor blockquote {
+ border-left: 4px solid #ccc;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 16px
+ }
+
+ .ql-bubble .ql-editor code, .ql-bubble .ql-editor pre {
+ background-color: #f0f0f0;
+ border-radius: 3px
+ }
+
+ .ql-bubble .ql-editor pre {
+ white-space: pre-wrap;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding: 5px 10px
+ }
+
+ .ql-bubble .ql-editor code {
+ font-size: 85%;
+ padding: 2px 4px
+ }
+
+ .ql-bubble .ql-editor pre.ql-syntax {
+ background-color: #23241f;
+ color: #f8f8f2;
+ overflow: visible
+ }
+
+ .ql-bubble .ql-editor img {
+ max-width: 100%
+ }
+
+ .ql-bubble .ql-picker {
+ color: #ccc;
+ display: inline-block;
+ float: left;
+ font-size: 14px;
+ font-weight: 500;
+ height: 24px;
+ position: relative;
+ vertical-align: middle
+ }
+
+ .ql-bubble .ql-picker-label {
+ cursor: pointer;
+ display: inline-block;
+ height: 100%;
+ padding-left: 8px;
+ padding-right: 2px;
+ position: relative;
+ width: 100%
+ }
+
+ .ql-bubble .ql-picker-label:before {
+ display: inline-block;
+ line-height: 22px
+ }
+
+ .ql-bubble .ql-picker-options {
+ background-color: #444;
+ display: none;
+ min-width: 100%;
+ padding: 4px 8px;
+ position: absolute;
+ white-space: nowrap
+ }
+
+ .ql-bubble .ql-picker-options .ql-picker-item {
+ cursor: pointer;
+ display: block;
+ padding-bottom: 5px;
+ padding-top: 5px
+ }
+
+ .ql-bubble .ql-picker.ql-expanded .ql-picker-label {
+ color: #777;
+ z-index: 2
+ }
+
+ .ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill {
+ fill: #777
+ }
+
+ .ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke {
+ stroke: #777
+ }
+
+ .ql-bubble .ql-picker.ql-expanded .ql-picker-options {
+ display: block;
+ margin-top: -1px;
+ top: 100%;
+ z-index: 1
+ }
+
+ .ql-bubble .ql-color-picker, .ql-bubble .ql-icon-picker {
+ width: 28px
+ }
+
+ .ql-bubble .ql-color-picker .ql-picker-label, .ql-bubble .ql-icon-picker .ql-picker-label {
+ padding: 2px 4px
+ }
+
+ .ql-bubble .ql-color-picker .ql-picker-label svg, .ql-bubble .ql-icon-picker .ql-picker-label svg {
+ right: 4px
+ }
+
+ .ql-bubble .ql-icon-picker .ql-picker-options {
+ padding: 4px 0
+ }
+
+ .ql-bubble .ql-icon-picker .ql-picker-item {
+ height: 24px;
+ width: 24px;
+ padding: 2px 4px
+ }
+
+ .ql-bubble .ql-color-picker .ql-picker-options {
+ padding: 3px 5px;
+ width: 152px
+ }
+
+ .ql-bubble .ql-color-picker .ql-picker-item {
+ border: 1px solid transparent;
+ float: left;
+ height: 16px;
+ margin: 2px;
+ padding: 0;
+ width: 16px
+ }
+
+ .ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg {
+ position: absolute;
+ margin-top: -9px;
+ right: 0;
+ top: 50%;
+ width: 18px
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before {
+ content: attr(data-label)
+ }
+
+ .ql-bubble .ql-picker.ql-header {
+ width: 98px
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item:before, .ql-bubble .ql-picker.ql-header .ql-picker-label:before {
+ content: "Normal"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+ content: "Heading 1"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+ content: "Heading 2"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+ content: "Heading 3"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+ content: "Heading 4"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+ content: "Heading 5"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+ content: "Heading 6"
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before {
+ font-size: 2em
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before {
+ font-size: 1.5em
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before {
+ font-size: 1.17em
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before {
+ font-size: 1em
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before {
+ font-size: .83em
+ }
+
+ .ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before {
+ font-size: .67em
+ }
+
+ .ql-bubble .ql-picker.ql-font {
+ width: 108px
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item:before, .ql-bubble .ql-picker.ql-font .ql-picker-label:before {
+ content: "Sans Serif"
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+ content: "Serif"
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+ content: "Monospace"
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before {
+ font-family: Georgia,Times New Roman,serif
+ }
+
+ .ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before {
+ font-family: Monaco,Courier New,monospace
+ }
+
+ .ql-bubble .ql-picker.ql-size {
+ width: 98px
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item:before, .ql-bubble .ql-picker.ql-size .ql-picker-label:before {
+ content: "Normal"
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+ content: "Small"
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+ content: "Large"
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+ content: "Huge"
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before {
+ font-size: 10px
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before {
+ font-size: 18px
+ }
+
+ .ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before {
+ font-size: 32px
+ }
+
+ .ql-bubble .ql-color-picker.ql-background .ql-picker-item {
+ background-color: #fff
+ }
+
+ .ql-bubble .ql-color-picker.ql-color .ql-picker-item {
+ background-color: #000
+ }
+
+ .ql-bubble .ql-toolbar .ql-formats {
+ margin: 8px 12px 8px 0
+ }
+
+ .ql-bubble .ql-toolbar .ql-formats:first-child {
+ margin-left: 12px
+ }
+
+ .ql-bubble .ql-color-picker svg {
+ margin: 1px
+ }
+
+ .ql-bubble .ql-color-picker .ql-picker-item.ql-selected, .ql-bubble .ql-color-picker .ql-picker-item:hover {
+ border-color: #fff
+ }
+
+ .ql-bubble .ql-tooltip {
+ background-color: #444;
+ border-radius: 25px;
+ color: #fff
+ }
+
+ .ql-bubble .ql-tooltip-arrow {
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ content: " ";
+ display: block;
+ left: 50%;
+ margin-left: -6px;
+ position: absolute
+ }
+
+ .ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow {
+ border-bottom: 6px solid #444;
+ top: -6px
+ }
+
+ .ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow {
+ border-top: 6px solid #444;
+ bottom: -6px
+ }
+
+ .ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor {
+ display: block
+ }
+
+ .ql-bubble .ql-tooltip.ql-editing .ql-formats {
+ visibility: hidden
+ }
+
+ .ql-bubble .ql-tooltip-editor {
+ display: none
+ }
+
+ .ql-bubble .ql-tooltip-editor input[type=text] {
+ background: transparent;
+ border: none;
+ color: #fff;
+ font-size: 13px;
+ height: 100%;
+ outline: none;
+ padding: 10px 20px;
+ position: absolute;
+ width: 100%
+ }
+
+ .ql-bubble .ql-tooltip-editor a {
+ top: 10px;
+ position: absolute;
+ right: 20px
+ }
+
+ .ql-bubble .ql-tooltip-editor a:before {
+ color: #ccc;
+ content: "\D7";
+ font-size: 16px;
+ font-weight: 700
+ }
+
+.ql-container.ql-bubble:not(.ql-disabled) a {
+ position: relative;
+ white-space: nowrap
+}
+
+ .ql-container.ql-bubble:not(.ql-disabled) a:before {
+ background-color: #444;
+ border-radius: 15px;
+ top: -5px;
+ font-size: 12px;
+ color: #fff;
+ content: attr(href);
+ font-weight: 400;
+ overflow: hidden;
+ padding: 5px 15px;
+ text-decoration: none;
+ z-index: 1
+ }
+
+ .ql-container.ql-bubble:not(.ql-disabled) a:after {
+ border-top: 6px solid #444;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ top: 0;
+ content: " ";
+ height: 0;
+ width: 0
+ }
+
+ .ql-container.ql-bubble:not(.ql-disabled) a:after, .ql-container.ql-bubble:not(.ql-disabled) a:before {
+ left: 0;
+ margin-left: 50%;
+ position: absolute;
+ -webkit-transform: translate(-50%,-100%);
+ transform: translate(-50%,-100%);
+ -webkit-transition: visibility 0s ease .2s;
+ transition: visibility 0s ease .2s;
+ visibility: hidden
+ }
+
+ .ql-container.ql-bubble:not(.ql-disabled) a:hover:after, .ql-container.ql-bubble:not(.ql-disabled) a:hover:before {
+ visibility: visible
+ }
+
+.ql-editor-class[data-v-a8cc5f22] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ line-height: 1.42;
+ height: 100%;
+ outline: none;
+ padding: 0 0 66px;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -moz-tab-size: 4;
+ text-align: left;
+ word-wrap: break-word
+}
+
+.kk-table-9136076486841527 {
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+ .kk-table-9136076486841527, .kk-table-9136076486841527 tr, .kk-table-9136076486841527 tr td {
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ border-collapse: collapse
+ }
+
+ .kk-table-9136076486841527 tr td {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 12px 12px;
+ vertical-align: top
+ }
+
+ .kk-table-9136076486841527.bordered tr td {
+ border: 1px solid #e8e8e8 !important
+ }
+
+ .kk-table-9136076486841527.bright tr:hover > td {
+ background: #e6f7ff
+ }
+
+ .kk-table-9136076486841527.small tr td {
+ padding: 8px 8px
+ }
+
+ .kk-table-9136076486841527 .ant-row.ant-form-item {
+ margin: 0 !important
+ }
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=link]:before {
+ content: "璇疯緭鍏ラ摼鎺ュ湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip.ql-editing a.ql-action:after {
+ border-right: 0;
+ content: "淇濆瓨";
+ padding-right: 0
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-tooltip[data-mode=video]:before {
+ content: "璇疯緭鍏ヨ棰戝湴鍧�:"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label:before {
+ content: "14px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before {
+ content: "10px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before {
+ content: "18px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before {
+ content: "32px"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label:before {
+ content: "鏂囨湰"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before {
+ content: "鏍囬1"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before {
+ content: "鏍囬2"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before {
+ content: "鏍囬3"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before {
+ content: "鏍囬4"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before {
+ content: "鏍囬5"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before {
+ content: "鏍囬6"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label:before {
+ content: "鏍囧噯瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before {
+ content: "琛嚎瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .form-designer-container-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before, .k-form-build-9136076486841527 .chinesization .ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before {
+ content: "绛夊瀛椾綋"
+}
+
+.form-designer-container-9136076486841527 {
+ height: 100vh;
+ width: 100%;
+ overflow: hidden
+}
+
+ .form-designer-container-9136076486841527 .header {
+ width: 100%;
+ height: 56px;
+ text-align: center;
+ background: #13c2c2;
+ color: #fff;
+ line-height: 56px;
+ font-size: 18px;
+ font-weight: 700
+ }
+
+ .form-designer-container-9136076486841527 .operating-area {
+ border-bottom: 2px solid #ccc;
+ font-size: 16px;
+ text-align: left;
+ height: 45px;
+ line-height: 45px;
+ padding: 0 12px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ -ms-flex-line-pack: center;
+ align-content: center
+ }
+
+ .form-designer-container-9136076486841527 .operating-area a {
+ color: #666;
+ margin: 0 5px
+ }
+
+ .form-designer-container-9136076486841527 .operating-area a.disabled, .form-designer-container-9136076486841527 .operating-area a.disabled:hover {
+ color: #ccc
+ }
+
+ .form-designer-container-9136076486841527 .operating-area a:hover {
+ color: #13c2c2
+ }
+
+ .form-designer-container-9136076486841527 .operating-area a > span {
+ font-size: 14px;
+ padding-left: 2px
+ }
+
+ .form-designer-container-9136076486841527 .icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -.15em;
+ fill: currentColor;
+ overflow: hidden
+ }
+
+ .form-designer-container-9136076486841527 .content {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ height: 100%;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+
+ .form-designer-container-9136076486841527 .content.show-head {
+ margin-top: 6px;
+ height: calc(100% - 62px)
+ }
+
+ .form-designer-container-9136076486841527 .content.toolbars-top {
+ margin-top: 6px;
+ height: calc(100% - 51px)
+ }
+
+ .form-designer-container-9136076486841527 .content.show-head-and-toolbars-top {
+ margin-top: 6px;
+ height: calc(100% - 107px)
+ }
+
+ .form-designer-container-9136076486841527 .content aside {
+ -webkit-box-shadow: 0 0 1px 1px #ccc;
+ box-shadow: 0 0 1px 1px #ccc;
+ width: 270px;
+ height: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left {
+ height: 100%;
+ overflow: auto;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left .ant-collapse-content-box {
+ padding: 0
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left .ant-collapse {
+ border: 0
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item {
+ border-color: #ccc
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+ padding: 7px 0 7px 40px
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left .ant-collapse > .ant-collapse-item > .ant-collapse-content {
+ border-color: #ccc
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left ul {
+ padding: 5px;
+ list-style: none;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ margin-bottom: 0;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left ul li {
+ border-radius: 0;
+ border: 0;
+ -webkit-box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,1px 0 0 0 #ccc inset,0 1px 0 0 #ccc inset;
+ box-shadow: 1px 0 0 0 #ccc,0 1px 0 0 #ccc,1px 1px 0 0 #ccc,inset 1px 0 0 0 #ccc,inset 0 1px 0 0 #ccc;
+ padding: 8px 12px;
+ width: calc(50% - 6px);
+ margin: 2.7px;
+ height: 36px;
+ line-height: 20px;
+ cursor: move;
+ border: 1px solid transparent;
+ border-radius: 3px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .content aside.left ul li:hover {
+ color: #13c2c2;
+ border: 1px solid #13c2c2;
+ position: relative;
+ z-index: 1;
+ -webkit-box-shadow: 0 2px 6px #13c2c2;
+ box-shadow: 0 2px 6px #13c2c2
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right {
+ height: 100%;
+ color: #fff;
+ overflow: hidden;
+ position: relative
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .form-item-properties {
+ width: 100%;
+ height: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .ant-tabs, .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content {
+ height: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .ant-tabs .ant-tabs-content .ant-tabs-tabpane {
+ height: calc(100% - 45px);
+ overflow: auto
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .properties-centent {
+ height: 100%;
+ overflow: hidden;
+ background: #fff
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .properties-centent .properties-body {
+ overflow: auto;
+ height: 100%;
+ padding: 8px 16px
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item {
+ margin-bottom: 0;
+ padding: 6px 0;
+ border-bottom: 1px solid #ccc
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .properties-centent .ant-form-item .ant-form-item-label {
+ line-height: 2
+ }
+
+ .form-designer-container-9136076486841527 .content aside.right .hint-box {
+ margin-top: 120px
+ }
+
+ .form-designer-container-9136076486841527 .content section {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ max-width: calc(100% - 540px);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ margin: 0 8px 0;
+ -webkit-box-shadow: 0 0 1px 1px #ccc;
+ box-shadow: 0 0 1px 1px #ccc
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel {
+ height: 100%;
+ background: #eee;
+ position: relative
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel.no-toolbars-top {
+ height: calc(100% - 50px)
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel > .hint-text {
+ position: absolute;
+ left: 0;
+ top: 50%;
+ width: 100%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+ font-size: 20px;
+ color: #aaa;
+ z-index: 16
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .a-form-box {
+ height: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box {
+ height: 100%;
+ overflow: auto
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main {
+ min-height: 100%;
+ padding: 5px;
+ position: relative;
+ background: #fafafa
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving {
+ min-height: 35px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ padding: 0 !important;
+ position: relative
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .moving:before {
+ content: "";
+ height: 5px;
+ width: 100%;
+ background: #13c2c2;
+ position: absolute;
+ top: 0;
+ right: 0
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 8px;
+ overflow: hidden;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ min-height: 36px
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:hover {
+ background: rgba(19,194,194,.2)
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box:before {
+ content: "";
+ height: 5px;
+ width: 100%;
+ background: #13c2c2;
+ position: absolute;
+ top: 0;
+ right: -100%;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active {
+ background: rgba(19,194,194,.2);
+ outline-offset: 0
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box.active:before {
+ right: 0
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ word-wrap: break-word
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box:before {
+ content: "";
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 888
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .form-item-box .ant-form-item {
+ margin: 0;
+ padding-bottom: 6px
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box .show-key-box {
+ position: absolute;
+ bottom: 2px;
+ right: 5px;
+ font-size: 14px;
+ z-index: 999;
+ color: #13c2c2
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+ position: absolute;
+ top: 0;
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ text-align: center;
+ color: #fff;
+ z-index: 989;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.unactivated {
+ opacity: 0 !important;
+ pointer-events: none
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete.active {
+ opacity: 1 !important
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .copy {
+ border-radius: 0 0 0 8px;
+ right: 30px;
+ background: #13c2c2
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .drag-move-box > .delete {
+ right: 0;
+ background: #13c2c2
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .batch-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .batch-label {
+ font-size: 16px;
+ font-weight: 500;
+ padding: 10px 10px
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box {
+ min-height: 60px;
+ width: 100%;
+ border: 1px dashed #ccc;
+ background: #fff
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main {
+ min-height: 60px;
+ position: relative;
+ border: 1px dashed #ccc;
+ overflow-x: auto;
+ overflow-y: auto;
+ white-space: nowrap
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main .moving, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main .moving {
+ width: 175px;
+ min-height: 94px;
+ display: inline-block
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div {
+ min-width: 185px;
+ display: inline-block;
+ vertical-align: top
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-control-wrapper, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-form-item > .ant-form-item-label {
+ text-align: left;
+ display: block
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .draggable-box .list-main > div .ant-col, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .list-main > div .ant-col {
+ width: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ width: 100%
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .check-box {
+ width: 80px
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .column-box .draggable-box {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .draggable-box .ant-form-item-label {
+ display: none !important
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 5px;
+ background: rgba(152,103,247,.12);
+ width: 100%;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ overflow: hidden
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .form-item-box .ant-form-item, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .form-item-box .ant-form-item {
+ margin: 0;
+ padding-bottom: 15px
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout {
+ background: rgba(152,103,247,.12)
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box {
+ min-height: 60px;
+ min-width: 50px;
+ border: 1px dashed #ccc;
+ background: #fff
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box .table-layout .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .grid-row .table-td .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .grid-col .draggable-box .list-main, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box .table-layout .table-td .draggable-box .list-main {
+ min-height: 60px;
+ position: relative;
+ border: 1px dashed #ccc
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box:before {
+ content: "";
+ height: 5px;
+ width: 100%;
+ background: transparent;
+ position: absolute;
+ top: 0;
+ right: -100%;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active {
+ background: rgba(152,103,247,.24);
+ outline-offset: 0
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box.active:before, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box.active:before {
+ background: #9867f7;
+ right: 0
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+ position: absolute;
+ top: 0;
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+ text-align: center;
+ color: #fff;
+ z-index: 989;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.unactivated, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.unactivated {
+ opacity: 0 !important;
+ pointer-events: none
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy.active, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete.active {
+ opacity: 1 !important
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .copy, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .copy {
+ border-radius: 0 0 0 8px;
+ right: 30px;
+ background: #9867f7
+ }
+
+ .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .batch-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .grid-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .select-input-list-box > .delete, .form-designer-container-9136076486841527 .content section .form-panel .draggable-box .list-main .table-box > .delete {
+ right: 0;
+ background: #9867f7
+ }
+
+ .form-designer-container-9136076486841527 .right-menu {
+ width: 160px;
+ background: #fff;
+ border: 1px solid #ccc;
+ position: fixed;
+ -webkit-transition: all 0s;
+ transition: all 0s;
+ -webkit-box-shadow: 3px 3px 8px #999;
+ box-shadow: 3px 3px 8px #999;
+ border-radius: 3px;
+ padding: 8px 0;
+ z-index: 2199
+ }
+
+ .form-designer-container-9136076486841527 .right-menu ul {
+ padding: 0;
+ margin: 0;
+ list-style: none
+ }
+
+ .form-designer-container-9136076486841527 .right-menu ul li {
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ padding: 0 15px;
+ height: 30px;
+ line-height: 30px;
+ font-size: 14px
+ }
+
+ .form-designer-container-9136076486841527 .right-menu ul li i {
+ margin-right: 4px
+ }
+
+ .form-designer-container-9136076486841527 .right-menu ul li:hover {
+ background: #eee
+ }
+
+ .form-designer-container-9136076486841527 .kk-checkbox .ant-checkbox-wrapper {
+ margin-left: 0 !important;
+ margin-right: 8px
+ }
+
+ .form-designer-container-9136076486841527 .list-enter-active {
+ -webkit-transition: all .5s;
+ transition: all .5s
+ }
+
+ .form-designer-container-9136076486841527 .list-leave-active {
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .form-designer-container-9136076486841527 .list-enter, .form-designer-container-9136076486841527 .list-leave-to {
+ opacity: 0;
+ -webkit-transform: translateX(-100px);
+ transform: translateX(-100px)
+ }
+
+ .form-designer-container-9136076486841527 .list-enter {
+ height: 30px
+ }
+
+ .form-designer-container-9136076486841527 ::-webkit-scrollbar {
+ width: 6px;
+ height: 6px;
+ scrollbar-arrow-color: red
+ }
+
+ .form-designer-container-9136076486841527 ::-webkit-scrollbar-thumb {
+ border-radius: 5px;
+ -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+ box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+ background: rgba(0,0,0,.2);
+ scrollbar-arrow-color: red
+ }
+
+ .form-designer-container-9136076486841527 ::-webkit-scrollbar-track {
+ -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+ box-shadow: inset 0 0 5px rgba(0,0,0,.2);
+ border-radius: 0;
+ background: rgba(0,0,0,.1)
+ }
+
+ .form-designer-container-9136076486841527 .ant-form-inline .list-main {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start
+ }
+
+ .form-designer-container-9136076486841527 .ant-form-inline .list-main .layout-width {
+ width: 100%
+ }
+
+ .form-designer-container-9136076486841527 .ant-form-inline .ant-form-item-control-wrapper {
+ width: 175px !important
+ }
+
+.json-box-9136076486841527 {
+ height: 570px;
+ overflow: auto
+}
+
+ .json-box-9136076486841527 .vue-codemirror-wrap {
+ height: 100%
+ }
+
+ .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap {
+ height: 100%;
+ background: #f6f6f6
+ }
+
+ .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-scroll {
+ height: 100%;
+ width: 100%
+ }
+
+ .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap .CodeMirror-linenumber, .json-box-9136076486841527 .vue-codemirror-wrap .CodeMirror-wrap pre.CodeMirror-line {
+ min-height: 21px;
+ line-height: 21px
+ }
+
+.code-modal-9136076486841527 .ant-modal-body {
+ padding: 12px
+}
+
+.copy-btn-box-9136076486841527 {
+ padding-top: 8px;
+ text-align: center
+}
+
+ .copy-btn-box-9136076486841527 .copy-btn {
+ margin-right: 8px
+ }
+
+.k-form-build-9136076486841527 .select-input-list-box {
+ color: rgba(0,0,0,.65);
+ font-size: 14px
+}
+
+ .k-form-build-9136076486841527 .select-input-list-box .ant-form-item {
+ margin-bottom: 2px;
+ margin-right: 8px
+ }
+
+ .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .ant-col.ant-form-item-control-wrapper {
+ height: 30px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center
+ }
+
+ .k-form-build-9136076486841527 .select-input-list-box.ant-form-horizontal .text-box {
+ height: 30px;
+ line-height: 30px
+ }
+
+.k-form-build-9136076486841527 .ant-form-item {
+ margin-bottom: 16px
+}
+
+.k-form-build-9136076486841527 .ant-form-item-control {
+ position: relative
+}
+
+ .k-form-build-9136076486841527 .ant-form-item-control .ant-form-explain {
+ bottom: -16px;
+ position: absolute;
+ z-index: 10
+ }
+
+.k-form-build-9136076486841527.ant-form-inline .ant-form-item-control-wrapper {
+ width: 175px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item {
+ margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-item-control-wrapper {
+ width: 170px !important
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-thead > tr > th {
+ padding: 12px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-tbody > tr > td {
+ padding: 8px
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-form-inline .ant-form-item-with-help {
+ margin: 0
+}
+
+.k-form-build-9136076486841527 .batch-table .ant-table-placeholder {
+ padding: 0
+}
+
+.k-form-build-9136076486841527 .hide-upload-drag .ant-upload.ant-upload-drag {
+ display: none
+}
+
+.m-colorPicker {
+ width: 25%;
+ vertical-align: bottom;
+ padding: 5px;
+ border: 1px solid #e6e6e6;
+ border-radius: 4px;
+ font-size: 0
+}
+
+ .m-colorPicker .colorBtn {
+ height: 22px !important;
+ width: 100% !important
+ }
+
+.slider-box[data-v-1e330349] {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.slider-box > .slider[data-v-1e330349] {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin-right: 16px
+}
+
+.slider-box > .number[data-v-1e330349] {
+ width: 70px
+}
+
+.anticon.anticon-question-circle-o[data-v-1e330349] {
+ margin-left: 5px
+}
+
+.CodeMirror {
+ font-family: monospace;
+ height: 300px;
+ color: #000;
+ direction: ltr
+}
+
+.CodeMirror-lines {
+ padding: 4px 0
+}
+
+.CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like {
+ padding: 0 4px
+}
+
+.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler {
+ background-color: #fff
+}
+
+.CodeMirror-gutters {
+ border-right: 1px solid #ddd;
+ background-color: #f7f7f7;
+ white-space: nowrap
+}
+
+.CodeMirror-linenumber {
+ padding: 0 3px 0 5px;
+ min-width: 20px;
+ text-align: right;
+ color: #999;
+ white-space: nowrap
+}
+
+.CodeMirror-guttermarker {
+ color: #000
+}
+
+.CodeMirror-guttermarker-subtle {
+ color: #999
+}
+
+.CodeMirror-cursor {
+ border-left: 1px solid #000;
+ border-right: none;
+ width: 0
+}
+
+.CodeMirror div.CodeMirror-secondarycursor {
+ border-left: 1px solid silver
+}
+
+.cm-fat-cursor .CodeMirror-cursor {
+ width: auto;
+ border: 0 !important;
+ background: #7e7
+}
+
+.cm-fat-cursor div.CodeMirror-cursors {
+ z-index: 1
+}
+
+.cm-fat-cursor-mark {
+ background-color: rgba(20,255,20,.5)
+}
+
+.cm-animate-fat-cursor, .cm-fat-cursor-mark {
+ -webkit-animation: blink 1.06s steps(1) infinite;
+ animation: blink 1.06s steps(1) infinite
+}
+
+.cm-animate-fat-cursor {
+ width: auto;
+ border: 0;
+ background-color: #7e7
+}
+
+@-webkit-keyframes blink {
+ 50% {
+ background-color: transparent
+ }
+}
+
+@keyframes blink {
+ 50% {
+ background-color: transparent
+ }
+}
+
+.cm-tab {
+ display: inline-block;
+ text-decoration: inherit
+}
+
+.CodeMirror-rulers {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: -50px;
+ bottom: 0;
+ overflow: hidden
+}
+
+.CodeMirror-ruler {
+ border-left: 1px solid #ccc;
+ top: 0;
+ bottom: 0;
+ position: absolute
+}
+
+.cm-s-default .cm-header {
+ color: #00f
+}
+
+.cm-s-default .cm-quote {
+ color: #090
+}
+
+.cm-negative {
+ color: #d44
+}
+
+.cm-positive {
+ color: #292
+}
+
+.cm-header, .cm-strong {
+ font-weight: 700
+}
+
+.cm-em {
+ font-style: italic
+}
+
+.cm-link {
+ text-decoration: underline
+}
+
+.cm-strikethrough {
+ text-decoration: line-through
+}
+
+.cm-s-default .cm-keyword {
+ color: #708
+}
+
+.cm-s-default .cm-atom {
+ color: #219
+}
+
+.cm-s-default .cm-number {
+ color: #164
+}
+
+.cm-s-default .cm-def {
+ color: #00f
+}
+
+.cm-s-default .cm-variable-2 {
+ color: #05a
+}
+
+.cm-s-default .cm-type, .cm-s-default .cm-variable-3 {
+ color: #085
+}
+
+.cm-s-default .cm-comment {
+ color: #a50
+}
+
+.cm-s-default .cm-string {
+ color: #a11
+}
+
+.cm-s-default .cm-string-2 {
+ color: #f50
+}
+
+.cm-s-default .cm-meta, .cm-s-default .cm-qualifier {
+ color: #555
+}
+
+.cm-s-default .cm-builtin {
+ color: #30a
+}
+
+.cm-s-default .cm-bracket {
+ color: #997
+}
+
+.cm-s-default .cm-tag {
+ color: #170
+}
+
+.cm-s-default .cm-attribute {
+ color: #00c
+}
+
+.cm-s-default .cm-hr {
+ color: #999
+}
+
+.cm-s-default .cm-link {
+ color: #00c
+}
+
+.cm-invalidchar, .cm-s-default .cm-error {
+ color: red
+}
+
+.CodeMirror-composing {
+ border-bottom: 2px solid
+}
+
+div.CodeMirror span.CodeMirror-matchingbracket {
+ color: #0b0
+}
+
+div.CodeMirror span.CodeMirror-nonmatchingbracket {
+ color: #a22
+}
+
+.CodeMirror-matchingtag {
+ background: rgba(255,150,0,.3)
+}
+
+.CodeMirror-activeline-background {
+ background: #e8f2ff
+}
+
+.CodeMirror {
+ position: relative;
+ overflow: hidden;
+ background: #fff
+}
+
+.CodeMirror-scroll {
+ overflow: scroll !important;
+ margin-bottom: -50px;
+ margin-right: -50px;
+ padding-bottom: 50px;
+ height: 100%;
+ outline: none;
+ position: relative
+}
+
+.CodeMirror-sizer {
+ position: relative;
+ border-right: 50px solid transparent
+}
+
+.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar {
+ position: absolute;
+ z-index: 6;
+ display: none;
+ outline: none
+}
+
+.CodeMirror-vscrollbar {
+ right: 0;
+ top: 0;
+ overflow-x: hidden;
+ overflow-y: scroll
+}
+
+.CodeMirror-hscrollbar {
+ bottom: 0;
+ left: 0;
+ overflow-y: hidden;
+ overflow-x: scroll
+}
+
+.CodeMirror-scrollbar-filler {
+ right: 0;
+ bottom: 0
+}
+
+.CodeMirror-gutter-filler {
+ left: 0;
+ bottom: 0
+}
+
+.CodeMirror-gutters {
+ position: absolute;
+ left: 0;
+ top: 0;
+ min-height: 100%;
+ z-index: 3
+}
+
+.CodeMirror-gutter {
+ white-space: normal;
+ height: 100%;
+ display: inline-block;
+ vertical-align: top;
+ margin-bottom: -50px
+}
+
+.CodeMirror-gutter-wrapper {
+ position: absolute;
+ z-index: 4;
+ background: none !important;
+ border: none !important
+}
+
+.CodeMirror-gutter-background {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ z-index: 4
+}
+
+.CodeMirror-gutter-elt {
+ position: absolute;
+ cursor: default;
+ z-index: 4
+}
+
+.CodeMirror-gutter-wrapper ::selection {
+ background-color: transparent
+}
+
+.CodeMirror-gutter-wrapper ::-moz-selection {
+ background-color: transparent
+}
+
+.CodeMirror-lines {
+ cursor: text;
+ min-height: 1px
+}
+
+.CodeMirror pre.CodeMirror-line, .CodeMirror pre.CodeMirror-line-like {
+ border-radius: 0;
+ border-width: 0;
+ background: transparent;
+ font-family: inherit;
+ font-size: inherit;
+ margin: 0;
+ white-space: pre;
+ word-wrap: normal;
+ line-height: inherit;
+ color: inherit;
+ z-index: 2;
+ position: relative;
+ overflow: visible;
+ -webkit-tap-highlight-color: transparent;
+ -webkit-font-variant-ligatures: contextual;
+ font-variant-ligatures: contextual
+}
+
+.CodeMirror-wrap pre.CodeMirror-line, .CodeMirror-wrap pre.CodeMirror-line-like {
+ word-wrap: break-word;
+ white-space: pre-wrap;
+ word-break: normal
+}
+
+.CodeMirror-linebackground {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ z-index: 0
+}
+
+.CodeMirror-linewidget {
+ position: relative;
+ z-index: 2;
+ padding: .1px
+}
+
+.CodeMirror-rtl pre {
+ direction: rtl
+}
+
+.CodeMirror-code {
+ outline: none
+}
+
+.CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber, .CodeMirror-scroll, .CodeMirror-sizer {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box
+}
+
+.CodeMirror-measure {
+ position: absolute;
+ width: 100%;
+ height: 0;
+ overflow: hidden;
+ visibility: hidden
+}
+
+.CodeMirror-cursor {
+ position: absolute;
+ pointer-events: none
+}
+
+.CodeMirror-measure pre {
+ position: static
+}
+
+div.CodeMirror-cursors {
+ visibility: hidden;
+ position: relative;
+ z-index: 3
+}
+
+.CodeMirror-focused div.CodeMirror-cursors, div.CodeMirror-dragcursors {
+ visibility: visible
+}
+
+.CodeMirror-selected {
+ background: #d9d9d9
+}
+
+.CodeMirror-focused .CodeMirror-selected {
+ background: #d7d4f0
+}
+
+.CodeMirror-crosshair {
+ cursor: crosshair
+}
+
+.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection {
+ background: #d7d4f0
+}
+
+.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection {
+ background: #d7d4f0
+}
+
+.cm-searching {
+ background-color: #ffa;
+ background-color: rgba(255,255,0,.4)
+}
+
+.cm-force-border {
+ padding-right: .1px
+}
+
+@media print {
+ .CodeMirror div.CodeMirror-cursors {
+ visibility: hidden
+ }
+}
+
+.cm-tab-wrap-hack:after {
+ content: ""
+}
+
+span.CodeMirror-selectedtext {
+ background: none
+}
+
+.CodeMirror-code {
+ font-family: Menlo,Monaco,Consolas,Courier New,monospace
+}
+
+.hint-box[data-v-2ccc7242] {
+ background: #e9e9e9;
+ margin: 0;
+ border-bottom: 2px solid #fff
+}
+
+.option-change-container[data-v-5270f08a] {
+ width: calc(100% - 8px)
+}
+
+.option-change-box[data-v-5270f08a] {
+ height: 38px;
+ padding-bottom: 6px
+}
+
+.option-change-box .option-delete-box[data-v-5270f08a] {
+ margin-top: 3px;
+ background: #ffe9e9;
+ color: #f22;
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+ text-align: center;
+ border-radius: 50%;
+ overflow: hidden;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .option-change-box .option-delete-box[data-v-5270f08a]:hover {
+ background: #f22;
+ color: #fff
+ }
+
+.change-col-box > div[data-v-0e18ad9a] {
+ padding: 5px;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+}
+
+.change-col-box > div > label[data-v-0e18ad9a] {
+ text-align: right;
+ padding-right: 8px;
+ display: block;
+ font-size: 16px;
+ width: 45px
+}
+
+body, html {
+ width: 100%;
+ height: 100%
+}
+
+input::-ms-clear, input::-ms-reveal {
+ display: none
+}
+
+*, :after, :before {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+html {
+ font-family: sans-serif;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+ -ms-overflow-style: scrollbar;
+ -webkit-tap-highlight-color: rgba(0,0,0,0)
+}
+
+@-ms-viewport {
+ width: device-width
+}
+
+article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
+ display: block
+}
+
+body {
+ margin: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ background-color: #fff;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+[tabindex="-1"]:focus {
+ outline: none !important
+}
+
+hr {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible
+}
+
+h1, h2, h3, h4, h5, h6 {
+ margin-top: 0;
+ margin-bottom: .5em;
+ color: rgba(0,0,0,.85);
+ font-weight: 500
+}
+
+p {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+abbr[data-original-title], abbr[title] {
+ text-decoration: underline;
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ border-bottom: 0;
+ cursor: help
+}
+
+address {
+ margin-bottom: 1em;
+ font-style: normal;
+ line-height: inherit
+}
+
+input[type=number], input[type=password], input[type=text], textarea {
+ -webkit-appearance: none
+}
+
+dl, ol, ul {
+ margin-top: 0;
+ margin-bottom: 1em
+}
+
+ ol ol, ol ul, ul ol, ul ul {
+ margin-bottom: 0
+ }
+
+dt {
+ font-weight: 500
+}
+
+dd {
+ margin-bottom: .5em;
+ margin-left: 0
+}
+
+blockquote {
+ margin: 0 0 1em
+}
+
+dfn {
+ font-style: italic
+}
+
+b, strong {
+ font-weight: bolder
+}
+
+small {
+ font-size: 80%
+}
+
+sub, sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline
+}
+
+sub {
+ bottom: -.25em
+}
+
+sup {
+ top: -.5em
+}
+
+a {
+ color: #fa541c;
+ text-decoration: none;
+ background-color: transparent;
+ outline: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-text-decoration-skip: objects
+}
+
+ a:hover {
+ color: #ff7a45
+ }
+
+ a:active {
+ color: #d4380d
+ }
+
+ a:active, a:hover {
+ text-decoration: none;
+ outline: 0
+ }
+
+ a[disabled] {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed;
+ pointer-events: none
+ }
+
+code, kbd, pre, samp {
+ font-size: 1em;
+ font-family: SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace
+}
+
+pre {
+ margin-top: 0;
+ margin-bottom: 1em;
+ overflow: auto
+}
+
+figure {
+ margin: 0 0 1em
+}
+
+img {
+ vertical-align: middle;
+ border-style: none
+}
+
+svg:not(:root) {
+ overflow: hidden
+}
+
+[role=button], a, area, button, input:not([type=range]), label, select, summary, textarea {
+ -ms-touch-action: manipulation;
+ touch-action: manipulation
+}
+
+table {
+ border-collapse: collapse
+}
+
+caption {
+ padding-top: .75em;
+ padding-bottom: .3em;
+ color: rgba(0,0,0,.45);
+ text-align: left;
+ caption-side: bottom
+}
+
+th {
+ text-align: inherit
+}
+
+button, input, optgroup, select, textarea {
+ margin: 0;
+ color: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ line-height: inherit
+}
+
+button, input {
+ overflow: visible
+}
+
+button, select {
+ text-transform: none
+}
+
+[type=reset], [type=submit], button, html [type=button] {
+ -webkit-appearance: button
+}
+
+ [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner, button::-moz-focus-inner {
+ padding: 0;
+ border-style: none
+ }
+
+input[type=checkbox], input[type=radio] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0
+}
+
+input[type=date], input[type=datetime-local], input[type=month], input[type=time] {
+ -webkit-appearance: listbox
+}
+
+textarea {
+ overflow: auto;
+ resize: vertical
+}
+
+fieldset {
+ min-width: 0;
+ margin: 0;
+ padding: 0;
+ border: 0
+}
+
+legend {
+ display: block;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: .5em;
+ padding: 0;
+ color: inherit;
+ font-size: 1.5em;
+ line-height: inherit;
+ white-space: normal
+}
+
+progress {
+ vertical-align: baseline
+}
+
+[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button {
+ height: auto
+}
+
+[type=search] {
+ outline-offset: -2px;
+ -webkit-appearance: none
+}
+
+ [type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration {
+ -webkit-appearance: none
+ }
+
+::-webkit-file-upload-button {
+ font: inherit;
+ -webkit-appearance: button
+}
+
+output {
+ display: inline-block
+}
+
+summary {
+ display: list-item
+}
+
+template {
+ display: none
+}
+
+[hidden] {
+ display: none !important
+}
+
+mark {
+ padding: .2em;
+ background-color: #feffe6
+}
+
+::-moz-selection {
+ color: #fff;
+ background: #fa541c
+}
+
+::selection {
+ color: #fff;
+ background: #fa541c
+}
+
+.clearfix {
+ zoom: 1
+}
+
+ .clearfix:after, .clearfix:before {
+ display: table;
+ content: ""
+ }
+
+ .clearfix:after {
+ clear: both
+ }
+
+.anticon {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale
+}
+
+ .anticon > * {
+ line-height: 1
+ }
+
+ .anticon svg {
+ display: inline-block
+ }
+
+ .anticon:before {
+ display: none
+ }
+
+ .anticon .anticon-icon {
+ display: block
+ }
+
+ .anticon[tabindex] {
+ cursor: pointer
+ }
+
+.anticon-spin, .anticon-spin:before {
+ display: inline-block;
+ -webkit-animation: loadingCircle 1s linear infinite;
+ animation: loadingCircle 1s linear infinite
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .fade-appear.fade-appear-active, .fade-enter.fade-enter-active {
+ -webkit-animation-name: antFadeIn;
+ animation-name: antFadeIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .fade-leave.fade-leave-active {
+ -webkit-animation-name: antFadeOut;
+ animation-name: antFadeOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.fade-appear, .fade-enter {
+ opacity: 0
+}
+
+.fade-appear, .fade-enter, .fade-leave {
+ -webkit-animation-timing-function: linear;
+ animation-timing-function: linear
+}
+
+@-webkit-keyframes antFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antFadeOut {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes antFadeOut {
+ 0% {
+ opacity: 1
+ }
+
+ to {
+ opacity: 0
+ }
+}
+
+.move-up-appear, .move-up-enter, .move-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-up-appear.move-up-appear-active, .move-up-enter.move-up-enter-active {
+ -webkit-animation-name: antMoveUpIn;
+ animation-name: antMoveUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-up-leave.move-up-leave-active {
+ -webkit-animation-name: antMoveUpOut;
+ animation-name: antMoveUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-up-appear, .move-up-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-down-appear, .move-down-enter, .move-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-down-appear.move-down-appear-active, .move-down-enter.move-down-enter-active {
+ -webkit-animation-name: antMoveDownIn;
+ animation-name: antMoveDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-down-leave.move-down-leave-active {
+ -webkit-animation-name: antMoveDownOut;
+ animation-name: antMoveDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-down-appear, .move-down-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-left-appear, .move-left-enter, .move-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-left-appear.move-left-appear-active, .move-left-enter.move-left-enter-active {
+ -webkit-animation-name: antMoveLeftIn;
+ animation-name: antMoveLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-left-leave.move-left-leave-active {
+ -webkit-animation-name: antMoveLeftOut;
+ animation-name: antMoveLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-left-appear, .move-left-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+.move-right-appear, .move-right-enter, .move-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .move-right-appear.move-right-appear-active, .move-right-enter.move-right-enter-active {
+ -webkit-animation-name: antMoveRightIn;
+ animation-name: antMoveRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .move-right-leave.move-right-leave-active {
+ -webkit-animation-name: antMoveRightOut;
+ animation-name: antMoveRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.move-right-appear, .move-right-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.move-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.6,.04,.98,.34);
+ animation-timing-function: cubic-bezier(.6,.04,.98,.34)
+}
+
+@-webkit-keyframes antMoveDownIn {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveDownIn {
+ 0% {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveDownOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveDownOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(100%);
+ transform: translateY(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveLeftIn {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveLeftIn {
+ 0% {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveLeftOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveLeftOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveRightIn {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveRightIn {
+ 0% {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveRightOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveRightOut {
+ 0% {
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antMoveUpIn {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antMoveUpIn {
+ 0% {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antMoveUpOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antMoveUpOut {
+ 0% {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: translateY(-100%);
+ transform: translateY(-100%);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes loadingCircle {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+@keyframes loadingCircle {
+ to {
+ -webkit-transform: rotate(1turn);
+ transform: rotate(1turn)
+ }
+}
+
+[ant-click-animating-without-extra-node=true], [ant-click-animating=true] {
+ position: relative
+}
+
+html {
+ --antd-wave-shadow-color: #fa541c
+}
+
+.ant-click-animating-node, [ant-click-animating-without-extra-node=true]:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ border-radius: inherit;
+ -webkit-box-shadow: 0 0 0 0 #fa541c;
+ box-shadow: 0 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 0 var(--antd-wave-shadow-color);
+ opacity: .2;
+ -webkit-animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+ animation: fadeEffect 2s cubic-bezier(.08,.82,.17,1),waveEffect .4s cubic-bezier(.08,.82,.17,1);
+ -webkit-animation-fill-mode: forwards;
+ animation-fill-mode: forwards;
+ content: "";
+ pointer-events: none
+}
+
+@-webkit-keyframes waveEffect {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@keyframes waveEffect {
+ to {
+ -webkit-box-shadow: 0 0 0 #fa541c;
+ box-shadow: 0 0 0 #fa541c;
+ -webkit-box-shadow: 0 0 0 6px var(--antd-wave-shadow-color);
+ box-shadow: 0 0 0 6px var(--antd-wave-shadow-color)
+ }
+}
+
+@-webkit-keyframes fadeEffect {
+ to {
+ opacity: 0
+ }
+}
+
+@keyframes fadeEffect {
+ to {
+ opacity: 0
+ }
+}
+
+.slide-up-appear, .slide-up-enter, .slide-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-up-appear.slide-up-appear-active, .slide-up-enter.slide-up-enter-active {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-up-leave.slide-up-leave-active {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-up-appear, .slide-up-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-down-appear, .slide-down-enter, .slide-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-down-appear.slide-down-appear-active, .slide-down-enter.slide-down-enter-active {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-down-leave.slide-down-leave-active {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-down-appear, .slide-down-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-left-appear, .slide-left-enter, .slide-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-left-appear.slide-left-appear-active, .slide-left-enter.slide-left-enter-active {
+ -webkit-animation-name: antSlideLeftIn;
+ animation-name: antSlideLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-left-leave.slide-left-leave-active {
+ -webkit-animation-name: antSlideLeftOut;
+ animation-name: antSlideLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-left-appear, .slide-left-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+.slide-right-appear, .slide-right-enter, .slide-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .slide-right-appear.slide-right-appear-active, .slide-right-enter.slide-right-enter-active {
+ -webkit-animation-name: antSlideRightIn;
+ animation-name: antSlideRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .slide-right-leave.slide-right-leave-active {
+ -webkit-animation-name: antSlideRightOut;
+ animation-name: antSlideRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.slide-right-appear, .slide-right-enter {
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.23,1,.32,1);
+ animation-timing-function: cubic-bezier(.23,1,.32,1)
+}
+
+.slide-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.755,.05,.855,.06);
+ animation-timing-function: cubic-bezier(.755,.05,.855,.06)
+}
+
+@-webkit-keyframes antSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideDownIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideDownIn {
+ 0% {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideDownOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideDownOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(.8);
+ transform: scaleY(.8);
+ -webkit-transform-origin: 100% 100%;
+ transform-origin: 100% 100%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideLeftIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideLeftIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideLeftOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideLeftOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antSlideRightIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@keyframes antSlideRightIn {
+ 0% {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antSlideRightOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antSlideRightOut {
+ 0% {
+ -webkit-transform: scaleX(1);
+ transform: scaleX(1);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleX(.8);
+ transform: scaleX(.8);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0;
+ opacity: 0
+ }
+}
+
+.swing-appear, .swing-enter {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .swing-appear.swing-appear-active, .swing-enter.swing-enter-active {
+ -webkit-animation-name: antSwingIn;
+ animation-name: antSwingIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+@-webkit-keyframes antSwingIn {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+@keyframes antSwingIn {
+ 0%,to {
+ -webkit-transform: translateX(0);
+ transform: translateX(0)
+ }
+
+ 20% {
+ -webkit-transform: translateX(-10px);
+ transform: translateX(-10px)
+ }
+
+ 40% {
+ -webkit-transform: translateX(10px);
+ transform: translateX(10px)
+ }
+
+ 60% {
+ -webkit-transform: translateX(-5px);
+ transform: translateX(-5px)
+ }
+
+ 80% {
+ -webkit-transform: translateX(5px);
+ transform: translateX(5px)
+ }
+}
+
+.zoom-appear, .zoom-enter, .zoom-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-appear.zoom-appear-active, .zoom-enter.zoom-enter-active {
+ -webkit-animation-name: antZoomIn;
+ animation-name: antZoomIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-leave.zoom-leave-active {
+ -webkit-animation-name: antZoomOut;
+ animation-name: antZoomOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-appear, .zoom-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-appear, .zoom-big-enter, .zoom-big-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-big-appear.zoom-big-appear-active, .zoom-big-enter.zoom-big-enter-active {
+ -webkit-animation-name: antZoomBigIn;
+ animation-name: antZoomBigIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-big-leave.zoom-big-leave-active {
+ -webkit-animation-name: antZoomBigOut;
+ animation-name: antZoomBigOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-big-appear, .zoom-big-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-big-fast-appear, .zoom-big-fast-enter, .zoom-big-fast-leave {
+ -webkit-animation-duration: .1s;
+ animation-duration: .1s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-big-fast-appear.zoom-big-fast-appear-active, .zoom-big-fast-enter.zoom-big-fast-enter-active {
+ -webkit-animation-name: antZoomBigIn;
+ animation-name: antZoomBigIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-big-fast-leave.zoom-big-fast-leave-active {
+ -webkit-animation-name: antZoomBigOut;
+ animation-name: antZoomBigOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-big-fast-appear, .zoom-big-fast-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-big-fast-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-up-appear, .zoom-up-enter, .zoom-up-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-up-appear.zoom-up-appear-active, .zoom-up-enter.zoom-up-enter-active {
+ -webkit-animation-name: antZoomUpIn;
+ animation-name: antZoomUpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-up-leave.zoom-up-leave-active {
+ -webkit-animation-name: antZoomUpOut;
+ animation-name: antZoomUpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-up-appear, .zoom-up-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-up-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-down-appear, .zoom-down-enter, .zoom-down-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-down-appear.zoom-down-appear-active, .zoom-down-enter.zoom-down-enter-active {
+ -webkit-animation-name: antZoomDownIn;
+ animation-name: antZoomDownIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-down-leave.zoom-down-leave-active {
+ -webkit-animation-name: antZoomDownOut;
+ animation-name: antZoomDownOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-down-appear, .zoom-down-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-down-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-left-appear, .zoom-left-enter, .zoom-left-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-left-appear.zoom-left-appear-active, .zoom-left-enter.zoom-left-enter-active {
+ -webkit-animation-name: antZoomLeftIn;
+ animation-name: antZoomLeftIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-left-leave.zoom-left-leave-active {
+ -webkit-animation-name: antZoomLeftOut;
+ animation-name: antZoomLeftOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-left-appear, .zoom-left-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-left-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+.zoom-right-appear, .zoom-right-enter, .zoom-right-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .zoom-right-appear.zoom-right-appear-active, .zoom-right-enter.zoom-right-enter-active {
+ -webkit-animation-name: antZoomRightIn;
+ animation-name: antZoomRightIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .zoom-right-leave.zoom-right-leave-active {
+ -webkit-animation-name: antZoomRightOut;
+ animation-name: antZoomRightOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.zoom-right-appear, .zoom-right-enter {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-animation-timing-function: cubic-bezier(.08,.82,.17,1);
+ animation-timing-function: cubic-bezier(.08,.82,.17,1)
+}
+
+.zoom-right-leave {
+ -webkit-animation-timing-function: cubic-bezier(.78,.14,.15,.86);
+ animation-timing-function: cubic-bezier(.78,.14,.15,.86)
+}
+
+@-webkit-keyframes antZoomIn {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomIn {
+ 0% {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.2);
+ transform: scale(.2);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomBigIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@keyframes antZoomBigIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antZoomBigOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBigOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomUpIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@keyframes antZoomUpIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+}
+
+@-webkit-keyframes antZoomUpOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomUpOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomLeftIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@keyframes antZoomLeftIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+}
+
+@-webkit-keyframes antZoomLeftOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomLeftOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomRightIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@keyframes antZoomRightIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+}
+
+@-webkit-keyframes antZoomRightOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomRightOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 100% 50%;
+ transform-origin: 100% 50%;
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes antZoomDownIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@keyframes antZoomDownIn {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+}
+
+@-webkit-keyframes antZoomDownOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+@keyframes antZoomDownOut {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%
+ }
+
+ to {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ -webkit-transform-origin: 50% 100%;
+ transform-origin: 50% 100%;
+ opacity: 0
+ }
+}
+
+.ant-motion-collapse-legacy {
+ overflow: hidden
+}
+
+.ant-motion-collapse, .ant-motion-collapse-legacy-active {
+ -webkit-transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important;
+ transition: height .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1) !important
+}
+
+.ant-motion-collapse {
+ overflow: hidden
+}
+
+.ant-affix {
+ position: fixed;
+ z-index: 10
+}
+
+.ant-alert {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ padding: 8px 15px 8px 37px;
+ word-wrap: break-word;
+ border-radius: 2px
+}
+
+ .ant-alert.ant-alert-no-icon {
+ padding: 8px 15px
+ }
+
+ .ant-alert.ant-alert-closable {
+ padding-right: 30px
+ }
+
+.ant-alert-icon {
+ position: absolute;
+ top: 11.5px;
+ left: 16px
+}
+
+.ant-alert-description {
+ display: none;
+ font-size: 14px;
+ line-height: 22px
+}
+
+.ant-alert-success {
+ background-color: #f6ffed;
+ border: 1px solid #b7eb8f
+}
+
+ .ant-alert-success .ant-alert-icon {
+ color: #52c41a
+ }
+
+.ant-alert-info {
+ background-color: #e6f7ff;
+ border: 1px solid #91d5ff
+}
+
+ .ant-alert-info .ant-alert-icon {
+ color: #1890ff
+ }
+
+.ant-alert-warning {
+ background-color: #fffbe6;
+ border: 1px solid #ffe58f
+}
+
+ .ant-alert-warning .ant-alert-icon {
+ color: #faad14
+ }
+
+.ant-alert-error {
+ background-color: #fff1f0;
+ border: 1px solid #ffa39e
+}
+
+ .ant-alert-error .ant-alert-icon {
+ color: #f5222d
+ }
+
+.ant-alert-close-icon {
+ position: absolute;
+ top: 8px;
+ right: 16px;
+ padding: 0;
+ overflow: hidden;
+ font-size: 12px;
+ line-height: 22px;
+ background-color: transparent;
+ border: none;
+ outline: none;
+ cursor: pointer
+}
+
+ .ant-alert-close-icon .anticon-close {
+ color: rgba(0,0,0,.45);
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .ant-alert-close-icon .anticon-close:hover {
+ color: rgba(0,0,0,.75)
+ }
+
+.ant-alert-close-text {
+ color: rgba(0,0,0,.45);
+ -webkit-transition: color .3s;
+ transition: color .3s
+}
+
+ .ant-alert-close-text:hover {
+ color: rgba(0,0,0,.75)
+ }
+
+.ant-alert-with-description {
+ position: relative;
+ padding: 15px 15px 15px 64px;
+ color: rgba(0,0,0,.65);
+ line-height: 1.5;
+ border-radius: 2px
+}
+
+ .ant-alert-with-description.ant-alert-no-icon {
+ padding: 15px
+ }
+
+ .ant-alert-with-description .ant-alert-icon {
+ position: absolute;
+ top: 16px;
+ left: 24px;
+ font-size: 24px
+ }
+
+ .ant-alert-with-description .ant-alert-close-icon {
+ position: absolute;
+ top: 16px;
+ right: 16px;
+ font-size: 14px;
+ cursor: pointer
+ }
+
+ .ant-alert-with-description .ant-alert-message {
+ display: block;
+ margin-bottom: 4px;
+ color: rgba(0,0,0,.85);
+ font-size: 16px
+ }
+
+.ant-alert-message {
+ color: rgba(0,0,0,.85)
+}
+
+.ant-alert-with-description .ant-alert-description {
+ display: block
+}
+
+.ant-alert.ant-alert-closing {
+ height: 0 !important;
+ margin: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-transform-origin: 50% 0;
+ transform-origin: 50% 0;
+ -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+ transition: all .3s cubic-bezier(.78,.14,.15,.86)
+}
+
+.ant-alert-slide-up-leave {
+ -webkit-animation: antAlertSlideUpOut .3s cubic-bezier(.78,.14,.15,.86);
+ animation: antAlertSlideUpOut .3s cubic-bezier(.78,.14,.15,.86);
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both
+}
+
+.ant-alert-banner {
+ margin-bottom: 0;
+ border: 0;
+ border-radius: 0
+}
+
+@-webkit-keyframes antAlertSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@keyframes antAlertSlideUpIn {
+ 0% {
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antAlertSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+@keyframes antAlertSlideUpOut {
+ 0% {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 1
+ }
+
+ to {
+ -webkit-transform: scaleY(0);
+ transform: scaleY(0);
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0;
+ opacity: 0
+ }
+}
+
+.ant-anchor {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ padding-left: 2px
+}
+
+.ant-anchor-wrapper {
+ margin-left: -4px;
+ padding-left: 4px;
+ overflow: auto;
+ background-color: #fff
+}
+
+.ant-anchor-ink {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%
+}
+
+ .ant-anchor-ink:before {
+ position: relative;
+ display: block;
+ width: 2px;
+ height: 100%;
+ margin: 0 auto;
+ background-color: #e8e8e8;
+ content: " "
+ }
+
+.ant-anchor-ink-ball {
+ position: absolute;
+ left: 50%;
+ display: none;
+ width: 8px;
+ height: 8px;
+ background-color: #fff;
+ border: 2px solid #fa541c;
+ border-radius: 8px;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ -webkit-transition: top .3s ease-in-out;
+ transition: top .3s ease-in-out
+}
+
+ .ant-anchor-ink-ball.visible {
+ display: inline-block
+ }
+
+.ant-anchor.fixed .ant-anchor-ink .ant-anchor-ink-ball {
+ display: none
+}
+
+.ant-anchor-link {
+ padding: 7px 0 7px 16px;
+ line-height: 1.143
+}
+
+.ant-anchor-link-title {
+ position: relative;
+ display: block;
+ margin-bottom: 6px;
+ overflow: hidden;
+ color: rgba(0,0,0,.65);
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-anchor-link-title:only-child {
+ margin-bottom: 0
+ }
+
+.ant-anchor-link-active > .ant-anchor-link-title {
+ color: #fa541c
+}
+
+.ant-anchor-link .ant-anchor-link {
+ padding-top: 5px;
+ padding-bottom: 5px
+}
+
+.ant-select-auto-complete {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+ .ant-select-auto-complete.ant-select .ant-select-selection {
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-select-auto-complete.ant-select .ant-select-selection__rendered {
+ height: 100%;
+ margin-right: 0;
+ margin-left: 0;
+ line-height: 32px
+ }
+
+ .ant-select-auto-complete.ant-select .ant-select-selection__placeholder {
+ margin-right: 12px;
+ margin-left: 12px
+ }
+
+ .ant-select-auto-complete.ant-select .ant-select-selection--single {
+ height: auto
+ }
+
+ .ant-select-auto-complete.ant-select .ant-select-search--inline {
+ position: static;
+ float: left
+ }
+
+ .ant-select-auto-complete.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered {
+ margin-right: 0 !important
+ }
+
+ .ant-select-auto-complete.ant-select .ant-input {
+ height: 32px;
+ line-height: 1.5;
+ background: transparent;
+ border-width: 1px
+ }
+
+ .ant-select-auto-complete.ant-select .ant-input:focus, .ant-select-auto-complete.ant-select .ant-input:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-select-auto-complete.ant-select .ant-input[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+ }
+
+ .ant-select-auto-complete.ant-select .ant-input[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+ .ant-select-auto-complete.ant-select-lg .ant-select-selection__rendered {
+ line-height: 40px
+ }
+
+ .ant-select-auto-complete.ant-select-lg .ant-input {
+ height: 40px;
+ padding-top: 6px;
+ padding-bottom: 6px
+ }
+
+ .ant-select-auto-complete.ant-select-sm .ant-select-selection__rendered {
+ line-height: 24px
+ }
+
+ .ant-select-auto-complete.ant-select-sm .ant-input {
+ height: 24px;
+ padding-top: 1px;
+ padding-bottom: 1px
+ }
+
+.ant-input-group > .ant-select-auto-complete .ant-select-search__field.ant-input-affix-wrapper {
+ display: inline;
+ float: none
+}
+
+.ant-avatar {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ color: #fff;
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: middle;
+ background: #ccc;
+ width: 32px;
+ height: 32px;
+ line-height: 32px;
+ border-radius: 50%
+}
+
+.ant-avatar-image {
+ background: transparent
+}
+
+.ant-avatar-string {
+ position: absolute;
+ left: 50%;
+ -webkit-transform-origin: 0 center;
+ transform-origin: 0 center
+}
+
+.ant-avatar.ant-avatar-icon {
+ font-size: 18px
+}
+
+.ant-avatar-lg {
+ width: 40px;
+ height: 40px;
+ line-height: 40px;
+ border-radius: 50%
+}
+
+.ant-avatar-lg-string {
+ position: absolute;
+ left: 50%;
+ -webkit-transform-origin: 0 center;
+ transform-origin: 0 center
+}
+
+.ant-avatar-lg.ant-avatar-icon {
+ font-size: 24px
+}
+
+.ant-avatar-sm {
+ width: 24px;
+ height: 24px;
+ line-height: 24px;
+ border-radius: 50%
+}
+
+.ant-avatar-sm-string {
+ position: absolute;
+ left: 50%;
+ -webkit-transform-origin: 0 center;
+ transform-origin: 0 center
+}
+
+.ant-avatar-sm.ant-avatar-icon {
+ font-size: 14px
+}
+
+.ant-avatar-square {
+ border-radius: 2px
+}
+
+.ant-avatar > img {
+ display: block;
+ width: 100%;
+ height: 100%;
+ -o-object-fit: cover;
+ object-fit: cover
+}
+
+.ant-back-top {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: fixed;
+ right: 100px;
+ bottom: 50px;
+ z-index: 10;
+ width: 40px;
+ height: 40px;
+ cursor: pointer
+}
+
+.ant-back-top-content {
+ width: 40px;
+ height: 40px;
+ overflow: hidden;
+ color: #fff;
+ text-align: center;
+ background-color: rgba(0,0,0,.45);
+ border-radius: 20px
+}
+
+ .ant-back-top-content, .ant-back-top-content:hover {
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-back-top-content:hover {
+ background-color: rgba(0,0,0,.65)
+ }
+
+.ant-back-top-icon {
+ width: 14px;
+ height: 16px;
+ margin: 12px auto;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAoCAYAAACWwljjAAAABGdBTUEAALGPC/xhBQAAAbtJREFUWAntmMtKw0AUhhMvS5cuxILgQlRUpIggIoKIIoigG1eC+AA+jo+i6FIXBfeuXIgoeKVeitVWJX5HWhhDksnUpp3FDPyZk3Nm5nycmZKkXhAEOXSA3lG7muTeRzmfy6HneUvIhnYkQK+Q9NhAA0Opg0vBEhjBKHiyb8iGMyQMOYuK41BcBSypAL+MYXSKjtFAW7EAGEO3qN4uMQbbAkXiSfRQJ1H6a+yhlkKRcAoVFYiweYNjtCVQJJpBz2GCiPt7fBOZQpFgDpUikse5HgnkM4Fi4QX0Fpc5wf9EbLqpUCy4jMoJSXWhFwbMNgWKhVbRhy5jirhs9fy/oFhgHVVTJEs7RLZ8sSEoJm6iz7SZDMbJ+/OKERQTttCXQRLToRUmrKWCYuA2+jbN0MB4OQobYShfdTCgn/sL1K36M7TLrN3n+758aPy2rrpR6+/od5E8tf/A1uLS9aId5T7J3CNYihkQ4D9PiMdMC7mp4rjB9kjFjZp8BlnVHJBuO1yFXIV0FdDF3RlyFdJVQBdv5AxVdIsq8apiZ2PyYO1EVykesGfZEESsCkweyR8MUW+V8uJ1gkYipmpdP1pm2aJVPEGzAAAAAElFTkSuQmCC) 100%/100% no-repeat
+}
+
+@media screen and (max-width:768px) {
+ .ant-back-top {
+ right: 60px
+ }
+}
+
+@media screen and (max-width:480px) {
+ .ant-back-top {
+ right: 20px
+ }
+}
+
+.ant-badge {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ color: unset;
+ line-height: 1
+}
+
+.ant-badge-count {
+ min-width: 20px;
+ height: 20px;
+ padding: 0 6px;
+ color: #fff;
+ font-weight: 400;
+ font-size: 12px;
+ line-height: 20px;
+ white-space: nowrap;
+ text-align: center;
+ background: #f5222d;
+ border-radius: 10px;
+ -webkit-box-shadow: 0 0 0 1px #fff;
+ box-shadow: 0 0 0 1px #fff
+}
+
+ .ant-badge-count a, .ant-badge-count a:hover {
+ color: #fff
+ }
+
+.ant-badge-multiple-words {
+ padding: 0 8px
+}
+
+.ant-badge-dot {
+ width: 6px;
+ height: 6px;
+ background: #f5222d;
+ border-radius: 100%;
+ -webkit-box-shadow: 0 0 0 1px #fff;
+ box-shadow: 0 0 0 1px #fff
+}
+
+.ant-badge-count, .ant-badge-dot, .ant-badge .ant-scroll-number-custom-component {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 1;
+ -webkit-transform: translate(50%,-50%);
+ transform: translate(50%,-50%);
+ -webkit-transform-origin: 100% 0;
+ transform-origin: 100% 0
+}
+
+.ant-badge-status {
+ line-height: inherit;
+ vertical-align: baseline
+}
+
+.ant-badge-status-dot {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 6px;
+ height: 6px;
+ vertical-align: middle;
+ border-radius: 50%
+}
+
+.ant-badge-status-success {
+ background-color: #52c41a
+}
+
+.ant-badge-status-processing {
+ position: relative;
+ background-color: #1890ff
+}
+
+ .ant-badge-status-processing:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 1px solid #1890ff;
+ border-radius: 50%;
+ -webkit-animation: antStatusProcessing 1.2s ease-in-out infinite;
+ animation: antStatusProcessing 1.2s ease-in-out infinite;
+ content: ""
+ }
+
+.ant-badge-status-default {
+ background-color: #d9d9d9
+}
+
+.ant-badge-status-error {
+ background-color: #f5222d
+}
+
+.ant-badge-status-warning {
+ background-color: #faad14
+}
+
+.ant-badge-status-magenta, .ant-badge-status-pink {
+ background: #eb2f96
+}
+
+.ant-badge-status-red {
+ background: #f5222d
+}
+
+.ant-badge-status-volcano {
+ background: #fa541c
+}
+
+.ant-badge-status-orange {
+ background: #fa8c16
+}
+
+.ant-badge-status-yellow {
+ background: #fadb14
+}
+
+.ant-badge-status-gold {
+ background: #faad14
+}
+
+.ant-badge-status-cyan {
+ background: #13c2c2
+}
+
+.ant-badge-status-lime {
+ background: #a0d911
+}
+
+.ant-badge-status-green {
+ background: #52c41a
+}
+
+.ant-badge-status-blue {
+ background: #1890ff
+}
+
+.ant-badge-status-geekblue {
+ background: #2f54eb
+}
+
+.ant-badge-status-purple {
+ background: #722ed1
+}
+
+.ant-badge-status-text {
+ margin-left: 8px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px
+}
+
+.ant-badge-zoom-appear, .ant-badge-zoom-enter {
+ -webkit-animation: antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);
+ animation: antZoomBadgeIn .3s cubic-bezier(.12,.4,.29,1.46);
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both
+}
+
+.ant-badge-zoom-leave {
+ -webkit-animation: antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);
+ animation: antZoomBadgeOut .3s cubic-bezier(.71,-.46,.88,.6);
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both
+}
+
+.ant-badge-not-a-wrapper:not(.ant-badge-status) {
+ vertical-align: middle
+}
+
+.ant-badge-not-a-wrapper .ant-scroll-number {
+ position: relative;
+ top: auto;
+ display: block
+}
+
+.ant-badge-not-a-wrapper .ant-badge-count {
+ -webkit-transform: none;
+ transform: none
+}
+
+@-webkit-keyframes antStatusProcessing {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(2.4);
+ transform: scale(2.4);
+ opacity: 0
+ }
+}
+
+@keyframes antStatusProcessing {
+ 0% {
+ -webkit-transform: scale(.8);
+ transform: scale(.8);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(2.4);
+ transform: scale(2.4);
+ opacity: 0
+ }
+}
+
+.ant-scroll-number {
+ overflow: hidden
+}
+
+.ant-scroll-number-only {
+ display: inline-block;
+ height: 20px;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1)
+}
+
+ .ant-scroll-number-only > p.ant-scroll-number-only-unit {
+ height: 20px;
+ margin: 0
+ }
+
+.ant-scroll-number-symbol {
+ vertical-align: top
+}
+
+@-webkit-keyframes antZoomBadgeIn {
+ 0% {
+ -webkit-transform: scale(0) translate(50%,-50%);
+ transform: scale(0) translate(50%,-50%);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1) translate(50%,-50%);
+ transform: scale(1) translate(50%,-50%)
+ }
+}
+
+@keyframes antZoomBadgeIn {
+ 0% {
+ -webkit-transform: scale(0) translate(50%,-50%);
+ transform: scale(0) translate(50%,-50%);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: scale(1) translate(50%,-50%);
+ transform: scale(1) translate(50%,-50%)
+ }
+}
+
+@-webkit-keyframes antZoomBadgeOut {
+ 0% {
+ -webkit-transform: scale(1) translate(50%,-50%);
+ transform: scale(1) translate(50%,-50%)
+ }
+
+ to {
+ -webkit-transform: scale(0) translate(50%,-50%);
+ transform: scale(0) translate(50%,-50%);
+ opacity: 0
+ }
+}
+
+@keyframes antZoomBadgeOut {
+ 0% {
+ -webkit-transform: scale(1) translate(50%,-50%);
+ transform: scale(1) translate(50%,-50%)
+ }
+
+ to {
+ -webkit-transform: scale(0) translate(50%,-50%);
+ transform: scale(0) translate(50%,-50%);
+ opacity: 0
+ }
+}
+
+.ant-breadcrumb {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+ .ant-breadcrumb .anticon {
+ font-size: 14px
+ }
+
+ .ant-breadcrumb a {
+ color: rgba(0,0,0,.45);
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .ant-breadcrumb a:hover {
+ color: #ff7a45
+ }
+
+ .ant-breadcrumb > span:last-child, .ant-breadcrumb > span:last-child a {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-breadcrumb > span:last-child .ant-breadcrumb-separator {
+ display: none
+ }
+
+.ant-breadcrumb-separator {
+ margin: 0 8px;
+ color: rgba(0,0,0,.45)
+}
+
+.ant-breadcrumb-link > .anticon + span, .ant-breadcrumb-overlay-link > .anticon {
+ margin-left: 4px
+}
+
+.ant-btn {
+ line-height: 1.499;
+ position: relative;
+ display: inline-block;
+ font-weight: 400;
+ white-space: nowrap;
+ text-align: center;
+ background-image: none;
+ border: 1px solid transparent;
+ -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.015);
+ box-shadow: 0 2px 0 rgba(0,0,0,.015);
+ cursor: pointer;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ height: 32px;
+ padding: 0 15px;
+ font-size: 14px;
+ border-radius: 2px;
+ color: rgba(0,0,0,.65);
+ background-color: #fff;
+ border-color: #d9d9d9
+}
+
+ .ant-btn > .anticon {
+ line-height: 1
+ }
+
+ .ant-btn, .ant-btn:active, .ant-btn:focus {
+ outline: 0
+ }
+
+ .ant-btn:not([disabled]):hover {
+ text-decoration: none
+ }
+
+ .ant-btn:not([disabled]):active {
+ outline: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn.disabled, .ant-btn[disabled] {
+ cursor: not-allowed
+ }
+
+ .ant-btn.disabled > *, .ant-btn[disabled] > * {
+ pointer-events: none
+ }
+
+.ant-btn-lg {
+ height: 40px;
+ padding: 0 15px;
+ font-size: 16px;
+ border-radius: 2px
+}
+
+.ant-btn-sm {
+ height: 24px;
+ padding: 0 7px;
+ font-size: 14px;
+ border-radius: 2px
+}
+
+.ant-btn > a:only-child {
+ color: currentColor
+}
+
+ .ant-btn > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn:focus, .ant-btn:hover {
+ color: #ff7a45;
+ background-color: #fff;
+ border-color: #ff7a45
+}
+
+ .ant-btn:focus > a:only-child, .ant-btn:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn:focus > a:only-child:after, .ant-btn:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn.active, .ant-btn:active {
+ color: #d4380d;
+ background-color: #fff;
+ border-color: #d4380d
+}
+
+ .ant-btn.active > a:only-child, .ant-btn:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn.active > a:only-child:after, .ant-btn:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-disabled, .ant-btn-disabled.active, .ant-btn-disabled:active, .ant-btn-disabled:focus, .ant-btn-disabled:hover, .ant-btn.disabled, .ant-btn.disabled.active, .ant-btn.disabled:active, .ant-btn.disabled:focus, .ant-btn.disabled:hover, .ant-btn[disabled], .ant-btn[disabled].active, .ant-btn[disabled]:active, .ant-btn[disabled]:focus, .ant-btn[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-btn-disabled.active > a:only-child, .ant-btn-disabled:active > a:only-child, .ant-btn-disabled:focus > a:only-child, .ant-btn-disabled:hover > a:only-child, .ant-btn-disabled > a:only-child, .ant-btn.disabled.active > a:only-child, .ant-btn.disabled:active > a:only-child, .ant-btn.disabled:focus > a:only-child, .ant-btn.disabled:hover > a:only-child, .ant-btn.disabled > a:only-child, .ant-btn[disabled].active > a:only-child, .ant-btn[disabled]:active > a:only-child, .ant-btn[disabled]:focus > a:only-child, .ant-btn[disabled]:hover > a:only-child, .ant-btn[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-disabled.active > a:only-child:after, .ant-btn-disabled:active > a:only-child:after, .ant-btn-disabled:focus > a:only-child:after, .ant-btn-disabled:hover > a:only-child:after, .ant-btn-disabled > a:only-child:after, .ant-btn.disabled.active > a:only-child:after, .ant-btn.disabled:active > a:only-child:after, .ant-btn.disabled:focus > a:only-child:after, .ant-btn.disabled:hover > a:only-child:after, .ant-btn.disabled > a:only-child:after, .ant-btn[disabled].active > a:only-child:after, .ant-btn[disabled]:active > a:only-child:after, .ant-btn[disabled]:focus > a:only-child:after, .ant-btn[disabled]:hover > a:only-child:after, .ant-btn[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn.active, .ant-btn:active, .ant-btn:focus, .ant-btn:hover {
+ text-decoration: none;
+ background: #fff
+}
+
+.ant-btn > i, .ant-btn > span {
+ display: inline-block;
+ -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+ transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+ pointer-events: none
+}
+
+.ant-btn-primary {
+ color: #fff;
+ background-color: #fa541c;
+ border-color: #fa541c;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+ -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+ box-shadow: 0 2px 0 rgba(0,0,0,.045)
+}
+
+ .ant-btn-primary > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-primary > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-primary:focus, .ant-btn-primary:hover {
+ color: #fff;
+ background-color: #ff7a45;
+ border-color: #ff7a45
+ }
+
+ .ant-btn-primary:focus > a:only-child, .ant-btn-primary:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-primary:focus > a:only-child:after, .ant-btn-primary:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-primary.active, .ant-btn-primary:active {
+ color: #fff;
+ background-color: #d4380d;
+ border-color: #d4380d
+ }
+
+ .ant-btn-primary.active > a:only-child, .ant-btn-primary:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-primary.active > a:only-child:after, .ant-btn-primary:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-primary-disabled, .ant-btn-primary-disabled.active, .ant-btn-primary-disabled:active, .ant-btn-primary-disabled:focus, .ant-btn-primary-disabled:hover, .ant-btn-primary.disabled, .ant-btn-primary.disabled.active, .ant-btn-primary.disabled:active, .ant-btn-primary.disabled:focus, .ant-btn-primary.disabled:hover, .ant-btn-primary[disabled], .ant-btn-primary[disabled].active, .ant-btn-primary[disabled]:active, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-primary-disabled.active > a:only-child, .ant-btn-primary-disabled:active > a:only-child, .ant-btn-primary-disabled:focus > a:only-child, .ant-btn-primary-disabled:hover > a:only-child, .ant-btn-primary-disabled > a:only-child, .ant-btn-primary.disabled.active > a:only-child, .ant-btn-primary.disabled:active > a:only-child, .ant-btn-primary.disabled:focus > a:only-child, .ant-btn-primary.disabled:hover > a:only-child, .ant-btn-primary.disabled > a:only-child, .ant-btn-primary[disabled].active > a:only-child, .ant-btn-primary[disabled]:active > a:only-child, .ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-primary[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-primary-disabled.active > a:only-child:after, .ant-btn-primary-disabled:active > a:only-child:after, .ant-btn-primary-disabled:focus > a:only-child:after, .ant-btn-primary-disabled:hover > a:only-child:after, .ant-btn-primary-disabled > a:only-child:after, .ant-btn-primary.disabled.active > a:only-child:after, .ant-btn-primary.disabled:active > a:only-child:after, .ant-btn-primary.disabled:focus > a:only-child:after, .ant-btn-primary.disabled:hover > a:only-child:after, .ant-btn-primary.disabled > a:only-child:after, .ant-btn-primary[disabled].active > a:only-child:after, .ant-btn-primary[disabled]:active > a:only-child:after, .ant-btn-primary[disabled]:focus > a:only-child:after, .ant-btn-primary[disabled]:hover > a:only-child:after, .ant-btn-primary[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child) {
+ border-right-color: #ff7a45;
+ border-left-color: #ff7a45
+}
+
+ .ant-btn-group .ant-btn-primary:not(:first-child):not(:last-child):disabled {
+ border-color: #d9d9d9
+ }
+
+.ant-btn-group .ant-btn-primary:first-child:not(:last-child) {
+ border-right-color: #ff7a45
+}
+
+ .ant-btn-group .ant-btn-primary:first-child:not(:last-child)[disabled] {
+ border-right-color: #d9d9d9
+ }
+
+.ant-btn-group .ant-btn-primary + .ant-btn-primary, .ant-btn-group .ant-btn-primary:last-child:not(:first-child) {
+ border-left-color: #ff7a45
+}
+
+ .ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled], .ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled] {
+ border-left-color: #d9d9d9
+ }
+
+.ant-btn-ghost {
+ color: rgba(0,0,0,.65);
+ background-color: transparent;
+ border-color: #d9d9d9
+}
+
+ .ant-btn-ghost > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-ghost > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-ghost:focus, .ant-btn-ghost:hover {
+ color: #ff7a45;
+ background-color: transparent;
+ border-color: #ff7a45
+ }
+
+ .ant-btn-ghost:focus > a:only-child, .ant-btn-ghost:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-ghost:focus > a:only-child:after, .ant-btn-ghost:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-ghost.active, .ant-btn-ghost:active {
+ color: #d4380d;
+ background-color: transparent;
+ border-color: #d4380d
+ }
+
+ .ant-btn-ghost.active > a:only-child, .ant-btn-ghost:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-ghost.active > a:only-child:after, .ant-btn-ghost:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-ghost-disabled, .ant-btn-ghost-disabled.active, .ant-btn-ghost-disabled:active, .ant-btn-ghost-disabled:focus, .ant-btn-ghost-disabled:hover, .ant-btn-ghost.disabled, .ant-btn-ghost.disabled.active, .ant-btn-ghost.disabled:active, .ant-btn-ghost.disabled:focus, .ant-btn-ghost.disabled:hover, .ant-btn-ghost[disabled], .ant-btn-ghost[disabled].active, .ant-btn-ghost[disabled]:active, .ant-btn-ghost[disabled]:focus, .ant-btn-ghost[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-ghost-disabled.active > a:only-child, .ant-btn-ghost-disabled:active > a:only-child, .ant-btn-ghost-disabled:focus > a:only-child, .ant-btn-ghost-disabled:hover > a:only-child, .ant-btn-ghost-disabled > a:only-child, .ant-btn-ghost.disabled.active > a:only-child, .ant-btn-ghost.disabled:active > a:only-child, .ant-btn-ghost.disabled:focus > a:only-child, .ant-btn-ghost.disabled:hover > a:only-child, .ant-btn-ghost.disabled > a:only-child, .ant-btn-ghost[disabled].active > a:only-child, .ant-btn-ghost[disabled]:active > a:only-child, .ant-btn-ghost[disabled]:focus > a:only-child, .ant-btn-ghost[disabled]:hover > a:only-child, .ant-btn-ghost[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-ghost-disabled.active > a:only-child:after, .ant-btn-ghost-disabled:active > a:only-child:after, .ant-btn-ghost-disabled:focus > a:only-child:after, .ant-btn-ghost-disabled:hover > a:only-child:after, .ant-btn-ghost-disabled > a:only-child:after, .ant-btn-ghost.disabled.active > a:only-child:after, .ant-btn-ghost.disabled:active > a:only-child:after, .ant-btn-ghost.disabled:focus > a:only-child:after, .ant-btn-ghost.disabled:hover > a:only-child:after, .ant-btn-ghost.disabled > a:only-child:after, .ant-btn-ghost[disabled].active > a:only-child:after, .ant-btn-ghost[disabled]:active > a:only-child:after, .ant-btn-ghost[disabled]:focus > a:only-child:after, .ant-btn-ghost[disabled]:hover > a:only-child:after, .ant-btn-ghost[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-dashed {
+ color: rgba(0,0,0,.65);
+ background-color: #fff;
+ border-color: #d9d9d9;
+ border-style: dashed
+}
+
+ .ant-btn-dashed > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-dashed > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-dashed:focus, .ant-btn-dashed:hover {
+ color: #ff7a45;
+ background-color: #fff;
+ border-color: #ff7a45
+ }
+
+ .ant-btn-dashed:focus > a:only-child, .ant-btn-dashed:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-dashed:focus > a:only-child:after, .ant-btn-dashed:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-dashed.active, .ant-btn-dashed:active {
+ color: #d4380d;
+ background-color: #fff;
+ border-color: #d4380d
+ }
+
+ .ant-btn-dashed.active > a:only-child, .ant-btn-dashed:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-dashed.active > a:only-child:after, .ant-btn-dashed:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-dashed-disabled, .ant-btn-dashed-disabled.active, .ant-btn-dashed-disabled:active, .ant-btn-dashed-disabled:focus, .ant-btn-dashed-disabled:hover, .ant-btn-dashed.disabled, .ant-btn-dashed.disabled.active, .ant-btn-dashed.disabled:active, .ant-btn-dashed.disabled:focus, .ant-btn-dashed.disabled:hover, .ant-btn-dashed[disabled], .ant-btn-dashed[disabled].active, .ant-btn-dashed[disabled]:active, .ant-btn-dashed[disabled]:focus, .ant-btn-dashed[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-dashed-disabled.active > a:only-child, .ant-btn-dashed-disabled:active > a:only-child, .ant-btn-dashed-disabled:focus > a:only-child, .ant-btn-dashed-disabled:hover > a:only-child, .ant-btn-dashed-disabled > a:only-child, .ant-btn-dashed.disabled.active > a:only-child, .ant-btn-dashed.disabled:active > a:only-child, .ant-btn-dashed.disabled:focus > a:only-child, .ant-btn-dashed.disabled:hover > a:only-child, .ant-btn-dashed.disabled > a:only-child, .ant-btn-dashed[disabled].active > a:only-child, .ant-btn-dashed[disabled]:active > a:only-child, .ant-btn-dashed[disabled]:focus > a:only-child, .ant-btn-dashed[disabled]:hover > a:only-child, .ant-btn-dashed[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-dashed-disabled.active > a:only-child:after, .ant-btn-dashed-disabled:active > a:only-child:after, .ant-btn-dashed-disabled:focus > a:only-child:after, .ant-btn-dashed-disabled:hover > a:only-child:after, .ant-btn-dashed-disabled > a:only-child:after, .ant-btn-dashed.disabled.active > a:only-child:after, .ant-btn-dashed.disabled:active > a:only-child:after, .ant-btn-dashed.disabled:focus > a:only-child:after, .ant-btn-dashed.disabled:hover > a:only-child:after, .ant-btn-dashed.disabled > a:only-child:after, .ant-btn-dashed[disabled].active > a:only-child:after, .ant-btn-dashed[disabled]:active > a:only-child:after, .ant-btn-dashed[disabled]:focus > a:only-child:after, .ant-btn-dashed[disabled]:hover > a:only-child:after, .ant-btn-dashed[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-danger {
+ color: #fff;
+ background-color: #ff4d4f;
+ border-color: #ff4d4f;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+ -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+ box-shadow: 0 2px 0 rgba(0,0,0,.045)
+}
+
+ .ant-btn-danger > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-danger > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-danger:focus, .ant-btn-danger:hover {
+ color: #fff;
+ background-color: #ff7875;
+ border-color: #ff7875
+ }
+
+ .ant-btn-danger:focus > a:only-child, .ant-btn-danger:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-danger:focus > a:only-child:after, .ant-btn-danger:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-danger.active, .ant-btn-danger:active {
+ color: #fff;
+ background-color: #d9363e;
+ border-color: #d9363e
+ }
+
+ .ant-btn-danger.active > a:only-child, .ant-btn-danger:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-danger.active > a:only-child:after, .ant-btn-danger:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-danger-disabled, .ant-btn-danger-disabled.active, .ant-btn-danger-disabled:active, .ant-btn-danger-disabled:focus, .ant-btn-danger-disabled:hover, .ant-btn-danger.disabled, .ant-btn-danger.disabled.active, .ant-btn-danger.disabled:active, .ant-btn-danger.disabled:focus, .ant-btn-danger.disabled:hover, .ant-btn-danger[disabled], .ant-btn-danger[disabled].active, .ant-btn-danger[disabled]:active, .ant-btn-danger[disabled]:focus, .ant-btn-danger[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-danger-disabled.active > a:only-child, .ant-btn-danger-disabled:active > a:only-child, .ant-btn-danger-disabled:focus > a:only-child, .ant-btn-danger-disabled:hover > a:only-child, .ant-btn-danger-disabled > a:only-child, .ant-btn-danger.disabled.active > a:only-child, .ant-btn-danger.disabled:active > a:only-child, .ant-btn-danger.disabled:focus > a:only-child, .ant-btn-danger.disabled:hover > a:only-child, .ant-btn-danger.disabled > a:only-child, .ant-btn-danger[disabled].active > a:only-child, .ant-btn-danger[disabled]:active > a:only-child, .ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-danger[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-danger-disabled.active > a:only-child:after, .ant-btn-danger-disabled:active > a:only-child:after, .ant-btn-danger-disabled:focus > a:only-child:after, .ant-btn-danger-disabled:hover > a:only-child:after, .ant-btn-danger-disabled > a:only-child:after, .ant-btn-danger.disabled.active > a:only-child:after, .ant-btn-danger.disabled:active > a:only-child:after, .ant-btn-danger.disabled:focus > a:only-child:after, .ant-btn-danger.disabled:hover > a:only-child:after, .ant-btn-danger.disabled > a:only-child:after, .ant-btn-danger[disabled].active > a:only-child:after, .ant-btn-danger[disabled]:active > a:only-child:after, .ant-btn-danger[disabled]:focus > a:only-child:after, .ant-btn-danger[disabled]:hover > a:only-child:after, .ant-btn-danger[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-link {
+ color: #fa541c;
+ background-color: transparent;
+ border-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-btn-link > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-link > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-link:focus, .ant-btn-link:hover {
+ color: #ff7a45;
+ background-color: transparent;
+ border-color: #ff7a45
+ }
+
+ .ant-btn-link:focus > a:only-child, .ant-btn-link:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-link:focus > a:only-child:after, .ant-btn-link:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-link.active, .ant-btn-link:active {
+ color: #d4380d;
+ background-color: transparent;
+ border-color: #d4380d
+ }
+
+ .ant-btn-link.active > a:only-child, .ant-btn-link:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-link.active > a:only-child:after, .ant-btn-link:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-link-disabled, .ant-btn-link-disabled.active, .ant-btn-link-disabled:active, .ant-btn-link-disabled:focus, .ant-btn-link-disabled:hover, .ant-btn-link.disabled, .ant-btn-link.disabled.active, .ant-btn-link.disabled:active, .ant-btn-link.disabled:focus, .ant-btn-link.disabled:hover, .ant-btn-link[disabled], .ant-btn-link[disabled].active, .ant-btn-link[disabled]:active, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:hover {
+ background-color: #f5f5f5;
+ border-color: #d9d9d9
+ }
+
+ .ant-btn-link:active, .ant-btn-link:focus, .ant-btn-link:hover {
+ border-color: transparent
+ }
+
+ .ant-btn-link-disabled, .ant-btn-link-disabled.active, .ant-btn-link-disabled:active, .ant-btn-link-disabled:focus, .ant-btn-link-disabled:hover, .ant-btn-link.disabled, .ant-btn-link.disabled.active, .ant-btn-link.disabled:active, .ant-btn-link.disabled:focus, .ant-btn-link.disabled:hover, .ant-btn-link[disabled], .ant-btn-link[disabled].active, .ant-btn-link[disabled]:active, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: transparent;
+ border-color: transparent;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-link-disabled.active > a:only-child, .ant-btn-link-disabled:active > a:only-child, .ant-btn-link-disabled:focus > a:only-child, .ant-btn-link-disabled:hover > a:only-child, .ant-btn-link-disabled > a:only-child, .ant-btn-link.disabled.active > a:only-child, .ant-btn-link.disabled:active > a:only-child, .ant-btn-link.disabled:focus > a:only-child, .ant-btn-link.disabled:hover > a:only-child, .ant-btn-link.disabled > a:only-child, .ant-btn-link[disabled].active > a:only-child, .ant-btn-link[disabled]:active > a:only-child, .ant-btn-link[disabled]:focus > a:only-child, .ant-btn-link[disabled]:hover > a:only-child, .ant-btn-link[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-link-disabled.active > a:only-child:after, .ant-btn-link-disabled:active > a:only-child:after, .ant-btn-link-disabled:focus > a:only-child:after, .ant-btn-link-disabled:hover > a:only-child:after, .ant-btn-link-disabled > a:only-child:after, .ant-btn-link.disabled.active > a:only-child:after, .ant-btn-link.disabled:active > a:only-child:after, .ant-btn-link.disabled:focus > a:only-child:after, .ant-btn-link.disabled:hover > a:only-child:after, .ant-btn-link.disabled > a:only-child:after, .ant-btn-link[disabled].active > a:only-child:after, .ant-btn-link[disabled]:active > a:only-child:after, .ant-btn-link[disabled]:focus > a:only-child:after, .ant-btn-link[disabled]:hover > a:only-child:after, .ant-btn-link[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-icon-only {
+ width: 32px;
+ height: 32px;
+ padding: 0;
+ font-size: 16px;
+ border-radius: 2px
+}
+
+ .ant-btn-icon-only.ant-btn-lg {
+ width: 40px;
+ height: 40px;
+ padding: 0;
+ font-size: 18px;
+ border-radius: 2px
+ }
+
+ .ant-btn-icon-only.ant-btn-sm {
+ width: 24px;
+ height: 24px;
+ padding: 0;
+ font-size: 14px;
+ border-radius: 2px
+ }
+
+ .ant-btn-icon-only > i {
+ vertical-align: middle
+ }
+
+.ant-btn-round {
+ height: 32px;
+ padding: 0 16px;
+ font-size: 14px;
+ border-radius: 32px
+}
+
+ .ant-btn-round.ant-btn-lg {
+ height: 40px;
+ padding: 0 20px;
+ font-size: 16px;
+ border-radius: 40px
+ }
+
+ .ant-btn-round.ant-btn-sm {
+ height: 24px;
+ padding: 0 12px;
+ font-size: 14px;
+ border-radius: 24px
+ }
+
+ .ant-btn-round.ant-btn-icon-only {
+ width: auto
+ }
+
+.ant-btn-circle, .ant-btn-circle-outline {
+ min-width: 32px;
+ padding-right: 0;
+ padding-left: 0;
+ text-align: center;
+ border-radius: 50%
+}
+
+ .ant-btn-circle-outline.ant-btn-lg, .ant-btn-circle.ant-btn-lg {
+ min-width: 40px;
+ border-radius: 50%
+ }
+
+ .ant-btn-circle-outline.ant-btn-sm, .ant-btn-circle.ant-btn-sm {
+ min-width: 24px;
+ border-radius: 50%
+ }
+
+.ant-btn:before {
+ position: absolute;
+ top: -1px;
+ right: -1px;
+ bottom: -1px;
+ left: -1px;
+ z-index: 1;
+ display: none;
+ background: #fff;
+ border-radius: inherit;
+ opacity: .35;
+ -webkit-transition: opacity .2s;
+ transition: opacity .2s;
+ content: "";
+ pointer-events: none
+}
+
+.ant-btn .anticon {
+ -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+ transition: margin-left .3s cubic-bezier(.645,.045,.355,1)
+}
+
+ .ant-btn .anticon.anticon-minus > svg, .ant-btn .anticon.anticon-plus > svg {
+ shape-rendering: optimizeSpeed
+ }
+
+.ant-btn.ant-btn-loading {
+ position: relative
+}
+
+ .ant-btn.ant-btn-loading:not([disabled]) {
+ pointer-events: none
+ }
+
+ .ant-btn.ant-btn-loading:before {
+ display: block
+ }
+
+ .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {
+ padding-left: 29px
+ }
+
+ .ant-btn.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon:not(:last-child) {
+ margin-left: -14px
+ }
+
+.ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) {
+ padding-left: 24px
+}
+
+ .ant-btn-sm.ant-btn-loading:not(.ant-btn-circle):not(.ant-btn-circle-outline):not(.ant-btn-icon-only) .anticon {
+ margin-left: -17px
+ }
+
+.ant-btn-group {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex
+}
+
+ .ant-btn-group, .ant-btn-group > .ant-btn, .ant-btn-group > span > .ant-btn {
+ position: relative
+ }
+
+ .ant-btn-group > .ant-btn.active, .ant-btn-group > .ant-btn:active, .ant-btn-group > .ant-btn:focus, .ant-btn-group > .ant-btn:hover, .ant-btn-group > span > .ant-btn.active, .ant-btn-group > span > .ant-btn:active, .ant-btn-group > span > .ant-btn:focus, .ant-btn-group > span > .ant-btn:hover {
+ z-index: 2
+ }
+
+ .ant-btn-group > .ant-btn:disabled, .ant-btn-group > span > .ant-btn:disabled {
+ z-index: 0
+ }
+
+ .ant-btn-group > .ant-btn-icon-only {
+ font-size: 14px
+ }
+
+.ant-btn-group-lg > .ant-btn, .ant-btn-group-lg > span > .ant-btn {
+ height: 40px;
+ padding: 0 15px;
+ font-size: 16px;
+ border-radius: 0;
+ line-height: 38px
+}
+
+ .ant-btn-group-lg > .ant-btn.ant-btn-icon-only {
+ width: 40px;
+ height: 40px;
+ padding-right: 0;
+ padding-left: 0
+ }
+
+.ant-btn-group-sm > .ant-btn, .ant-btn-group-sm > span > .ant-btn {
+ height: 24px;
+ padding: 0 7px;
+ font-size: 14px;
+ border-radius: 0;
+ line-height: 22px
+}
+
+ .ant-btn-group-sm > .ant-btn > .anticon, .ant-btn-group-sm > span > .ant-btn > .anticon {
+ font-size: 14px
+ }
+
+ .ant-btn-group-sm > .ant-btn.ant-btn-icon-only {
+ width: 24px;
+ height: 24px;
+ padding-right: 0;
+ padding-left: 0
+ }
+
+.ant-btn + .ant-btn-group, .ant-btn-group + .ant-btn, .ant-btn-group + .ant-btn-group, .ant-btn-group .ant-btn + .ant-btn, .ant-btn-group .ant-btn + span, .ant-btn-group > span + span, .ant-btn-group span + .ant-btn {
+ margin-left: -1px
+}
+
+.ant-btn-group .ant-btn-primary + .ant-btn:not(.ant-btn-primary):not([disabled]) {
+ border-left-color: transparent
+}
+
+.ant-btn-group .ant-btn {
+ border-radius: 0
+}
+
+.ant-btn-group > .ant-btn:first-child, .ant-btn-group > span:first-child > .ant-btn {
+ margin-left: 0
+}
+
+.ant-btn-group > .ant-btn:only-child, .ant-btn-group > span:only-child > .ant-btn {
+ border-radius: 2px
+}
+
+.ant-btn-group > .ant-btn:first-child:not(:last-child), .ant-btn-group > span:first-child:not(:last-child) > .ant-btn {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px
+}
+
+.ant-btn-group > .ant-btn:last-child:not(:first-child), .ant-btn-group > span:last-child:not(:first-child) > .ant-btn {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:only-child, .ant-btn-group-sm > span:only-child > .ant-btn {
+ border-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:first-child:not(:last-child), .ant-btn-group-sm > span:first-child:not(:last-child) > .ant-btn {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px
+}
+
+.ant-btn-group-sm > .ant-btn:last-child:not(:first-child), .ant-btn-group-sm > span:last-child:not(:first-child) > .ant-btn {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px
+}
+
+.ant-btn-group > .ant-btn-group {
+ float: left
+}
+
+ .ant-btn-group > .ant-btn-group:not(:first-child):not(:last-child) > .ant-btn {
+ border-radius: 0
+ }
+
+ .ant-btn-group > .ant-btn-group:first-child:not(:last-child) > .ant-btn:last-child {
+ padding-right: 8px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+ }
+
+ .ant-btn-group > .ant-btn-group:last-child:not(:first-child) > .ant-btn:first-child {
+ padding-left: 8px;
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+.ant-btn:active > span, .ant-btn:focus > span {
+ position: relative
+}
+
+.ant-btn > .anticon + span, .ant-btn > span + .anticon {
+ margin-left: 8px
+}
+
+.ant-btn-background-ghost {
+ color: #fff;
+ background: transparent !important;
+ border-color: #fff
+}
+
+ .ant-btn-background-ghost.ant-btn-primary {
+ color: #fa541c;
+ background-color: transparent;
+ border-color: #fa541c;
+ text-shadow: none
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary:focus, .ant-btn-background-ghost.ant-btn-primary:hover {
+ color: #ff7a45;
+ background-color: transparent;
+ border-color: #ff7a45
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary.active, .ant-btn-background-ghost.ant-btn-primary:active {
+ color: #d4380d;
+ background-color: transparent;
+ border-color: #d4380d
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary-disabled, .ant-btn-background-ghost.ant-btn-primary-disabled.active, .ant-btn-background-ghost.ant-btn-primary-disabled:active, .ant-btn-background-ghost.ant-btn-primary-disabled:focus, .ant-btn-background-ghost.ant-btn-primary-disabled:hover, .ant-btn-background-ghost.ant-btn-primary.disabled, .ant-btn-background-ghost.ant-btn-primary.disabled.active, .ant-btn-background-ghost.ant-btn-primary.disabled:active, .ant-btn-background-ghost.ant-btn-primary.disabled:focus, .ant-btn-background-ghost.ant-btn-primary.disabled:hover, .ant-btn-background-ghost.ant-btn-primary[disabled], .ant-btn-background-ghost.ant-btn-primary[disabled].active, .ant-btn-background-ghost.ant-btn-primary[disabled]:active, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-primary-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-primary[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger {
+ color: #ff4d4f;
+ background-color: transparent;
+ border-color: #ff4d4f;
+ text-shadow: none
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger:focus, .ant-btn-background-ghost.ant-btn-danger:hover {
+ color: #ff7875;
+ background-color: transparent;
+ border-color: #ff7875
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger.active, .ant-btn-background-ghost.ant-btn-danger:active {
+ color: #d9363e;
+ background-color: transparent;
+ border-color: #d9363e
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger-disabled, .ant-btn-background-ghost.ant-btn-danger-disabled.active, .ant-btn-background-ghost.ant-btn-danger-disabled:active, .ant-btn-background-ghost.ant-btn-danger-disabled:focus, .ant-btn-background-ghost.ant-btn-danger-disabled:hover, .ant-btn-background-ghost.ant-btn-danger.disabled, .ant-btn-background-ghost.ant-btn-danger.disabled.active, .ant-btn-background-ghost.ant-btn-danger.disabled:active, .ant-btn-background-ghost.ant-btn-danger.disabled:focus, .ant-btn-background-ghost.ant-btn-danger.disabled:hover, .ant-btn-background-ghost.ant-btn-danger[disabled], .ant-btn-background-ghost.ant-btn-danger[disabled].active, .ant-btn-background-ghost.ant-btn-danger[disabled]:active, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-danger-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-danger[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-link {
+ color: #fa541c;
+ background-color: transparent;
+ border-color: transparent;
+ text-shadow: none;
+ color: #fff
+ }
+
+ .ant-btn-background-ghost.ant-btn-link > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-link > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-link:focus, .ant-btn-background-ghost.ant-btn-link:hover {
+ color: #ff7a45;
+ background-color: transparent;
+ border-color: transparent
+ }
+
+ .ant-btn-background-ghost.ant-btn-link:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-link:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-link.active, .ant-btn-background-ghost.ant-btn-link:active {
+ color: #d4380d;
+ background-color: transparent;
+ border-color: transparent
+ }
+
+ .ant-btn-background-ghost.ant-btn-link.active > a:only-child, .ant-btn-background-ghost.ant-btn-link:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-link.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+ .ant-btn-background-ghost.ant-btn-link-disabled, .ant-btn-background-ghost.ant-btn-link-disabled.active, .ant-btn-background-ghost.ant-btn-link-disabled:active, .ant-btn-background-ghost.ant-btn-link-disabled:focus, .ant-btn-background-ghost.ant-btn-link-disabled:hover, .ant-btn-background-ghost.ant-btn-link.disabled, .ant-btn-background-ghost.ant-btn-link.disabled.active, .ant-btn-background-ghost.ant-btn-link.disabled:active, .ant-btn-background-ghost.ant-btn-link.disabled:focus, .ant-btn-background-ghost.ant-btn-link.disabled:hover, .ant-btn-background-ghost.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-link[disabled].active, .ant-btn-background-ghost.ant-btn-link[disabled]:active, .ant-btn-background-ghost.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-link[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link-disabled > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link.disabled > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-btn-background-ghost.ant-btn-link-disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link-disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled.active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link.disabled > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled].active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:active > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:focus > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled]:hover > a:only-child:after, .ant-btn-background-ghost.ant-btn-link[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-btn-two-chinese-chars:first-letter {
+ letter-spacing: .34em
+}
+
+.ant-btn-two-chinese-chars > :not(.anticon) {
+ margin-right: -.34em;
+ letter-spacing: .34em
+}
+
+.ant-btn-block {
+ width: 100%
+}
+
+.ant-btn:empty {
+ vertical-align: top
+}
+
+a.ant-btn {
+ padding-top: .1px;
+ line-height: 30px
+}
+
+a.ant-btn-lg {
+ line-height: 38px
+}
+
+a.ant-btn-sm {
+ line-height: 22px
+}
+
+.ant-fullcalendar {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ border-top: 1px solid #d9d9d9;
+ outline: none
+}
+
+.ant-select.ant-fullcalendar-year-select {
+ min-width: 90px
+}
+
+ .ant-select.ant-fullcalendar-year-select.ant-select-sm {
+ min-width: 70px
+ }
+
+.ant-select.ant-fullcalendar-month-select {
+ min-width: 80px;
+ margin-left: 8px
+}
+
+ .ant-select.ant-fullcalendar-month-select.ant-select-sm {
+ min-width: 70px
+ }
+
+.ant-fullcalendar-header {
+ padding: 11px 16px 11px 0;
+ text-align: right
+}
+
+ .ant-fullcalendar-header .ant-select-dropdown {
+ text-align: left
+ }
+
+ .ant-fullcalendar-header .ant-radio-group {
+ margin-left: 8px;
+ text-align: left
+ }
+
+ .ant-fullcalendar-header label.ant-radio-button {
+ height: 22px;
+ padding: 0 10px;
+ line-height: 20px
+ }
+
+.ant-fullcalendar-date-panel {
+ position: relative;
+ outline: none
+}
+
+.ant-fullcalendar-calendar-body {
+ padding: 8px 12px
+}
+
+.ant-fullcalendar table {
+ width: 100%;
+ max-width: 100%;
+ height: 256px;
+ background-color: transparent;
+ border-collapse: collapse
+}
+
+.ant-fullcalendar table, .ant-fullcalendar td, .ant-fullcalendar th {
+ border: 0
+}
+
+.ant-fullcalendar td {
+ position: relative
+}
+
+.ant-fullcalendar-calendar-table {
+ margin-bottom: 0;
+ border-spacing: 0
+}
+
+.ant-fullcalendar-column-header {
+ width: 33px;
+ padding: 0;
+ line-height: 18px;
+ text-align: center
+}
+
+ .ant-fullcalendar-column-header .ant-fullcalendar-column-header-inner {
+ display: block;
+ font-weight: 400
+ }
+
+.ant-fullcalendar-week-number-header .ant-fullcalendar-column-header-inner {
+ display: none
+}
+
+.ant-fullcalendar-date, .ant-fullcalendar-month {
+ text-align: center;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-fullcalendar-value {
+ display: block;
+ width: 24px;
+ height: 24px;
+ margin: 0 auto;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ line-height: 24px;
+ background: transparent;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-fullcalendar-value:hover {
+ background: #fff2e8;
+ cursor: pointer
+ }
+
+ .ant-fullcalendar-value:active {
+ color: #fff;
+ background: #fa541c
+ }
+
+.ant-fullcalendar-month-panel-cell .ant-fullcalendar-value {
+ width: 48px
+}
+
+.ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, .ant-fullcalendar-today .ant-fullcalendar-value {
+ -webkit-box-shadow: 0 0 0 1px #fa541c inset;
+ box-shadow: inset 0 0 0 1px #fa541c
+}
+
+.ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+ color: #fff;
+ background: #fa541c
+}
+
+.ant-fullcalendar-disabled-cell-first-of-row .ant-fullcalendar-value {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px
+}
+
+.ant-fullcalendar-disabled-cell-last-of-row .ant-fullcalendar-value {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px
+}
+
+.ant-fullcalendar-last-month-cell .ant-fullcalendar-value, .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-value {
+ color: rgba(0,0,0,.25)
+}
+
+.ant-fullcalendar-month-panel-table {
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate
+}
+
+.ant-fullcalendar-content {
+ position: absolute;
+ bottom: -9px;
+ left: 0;
+ width: 100%
+}
+
+.ant-fullcalendar-fullscreen {
+ border-top: 0
+}
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-table {
+ table-layout: fixed
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-header .ant-radio-group {
+ margin-left: 16px
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-header label.ant-radio-button {
+ height: 32px;
+ line-height: 30px
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-date, .ant-fullcalendar-fullscreen .ant-fullcalendar-month {
+ display: block;
+ height: 116px;
+ margin: 0 4px;
+ padding: 4px 8px;
+ color: rgba(0,0,0,.65);
+ text-align: left;
+ border-top: 2px solid #e8e8e8;
+ -webkit-transition: background .3s;
+ transition: background .3s
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-date:hover, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:hover {
+ background: #fff2e8;
+ cursor: pointer
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-date:active, .ant-fullcalendar-fullscreen .ant-fullcalendar-month:active {
+ background: #ffd8bf
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-column-header {
+ padding-right: 12px;
+ padding-bottom: 5px;
+ text-align: right
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-value {
+ width: auto;
+ text-align: right;
+ background: transparent
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-date {
+ background: transparent;
+ border-top-color: #fa541c
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-current-cell .ant-fullcalendar-value, .ant-fullcalendar-fullscreen .ant-fullcalendar-today .ant-fullcalendar-value {
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-month, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-date {
+ background: #fff2e8
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-month-panel-selected-cell .ant-fullcalendar-value, .ant-fullcalendar-fullscreen .ant-fullcalendar-selected-day .ant-fullcalendar-value {
+ color: #fa541c
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-last-month-cell .ant-fullcalendar-date, .ant-fullcalendar-fullscreen .ant-fullcalendar-next-month-btn-day .ant-fullcalendar-date {
+ color: rgba(0,0,0,.25)
+ }
+
+ .ant-fullcalendar-fullscreen .ant-fullcalendar-content {
+ position: static;
+ width: auto;
+ height: 88px;
+ overflow-y: auto
+ }
+
+.ant-fullcalendar-disabled-cell .ant-fullcalendar-date, .ant-fullcalendar-disabled-cell .ant-fullcalendar-date:hover {
+ cursor: not-allowed
+}
+
+.ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date, .ant-fullcalendar-disabled-cell:not(.ant-fullcalendar-today) .ant-fullcalendar-date:hover {
+ background: transparent
+}
+
+.ant-fullcalendar-disabled-cell .ant-fullcalendar-value {
+ width: auto;
+ color: rgba(0,0,0,.25);
+ border-radius: 0;
+ cursor: not-allowed
+}
+
+.ant-card {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-card-hoverable {
+ cursor: pointer
+}
+
+ .ant-card-hoverable:hover {
+ border-color: rgba(0,0,0,.09);
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.09);
+ box-shadow: 0 2px 8px rgba(0,0,0,.09)
+ }
+
+.ant-card-bordered {
+ border: 1px solid #e8e8e8
+}
+
+.ant-card-head {
+ min-height: 48px;
+ margin-bottom: -1px;
+ padding: 0 24px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ background: transparent;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 2px 2px 0 0;
+ zoom: 1
+}
+
+ .ant-card-head:after, .ant-card-head:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-card-head:after {
+ clear: both
+ }
+
+.ant-card-head-wrapper {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center
+}
+
+.ant-card-head-title {
+ display: inline-block;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ padding: 16px 0;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+.ant-card-head .ant-tabs {
+ clear: both;
+ margin-bottom: -17px;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ font-size: 14px
+}
+
+.ant-card-head .ant-tabs-bar {
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-card-extra {
+ float: right;
+ margin-left: auto;
+ padding: 16px 0;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ font-size: 14px
+}
+
+.ant-card-body {
+ padding: 24px;
+ zoom: 1
+}
+
+ .ant-card-body:after, .ant-card-body:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-card-body:after {
+ clear: both
+ }
+
+.ant-card-contain-grid:not(.ant-card-loading) .ant-card-body {
+ margin: -1px 0 0 -1px;
+ padding: 0
+}
+
+.ant-card-grid {
+ float: left;
+ width: 33.33%;
+ padding: 24px;
+ border: 0;
+ border-radius: 0;
+ -webkit-box-shadow: 1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,1px 0 0 0 #e8e8e8 inset,0 1px 0 0 #e8e8e8 inset;
+ box-shadow: 1px 0 0 0 #e8e8e8,0 1px 0 0 #e8e8e8,1px 1px 0 0 #e8e8e8,inset 1px 0 0 0 #e8e8e8,inset 0 1px 0 0 #e8e8e8;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-card-grid-hoverable:hover {
+ position: relative;
+ z-index: 1;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-card-contain-tabs > .ant-card-head .ant-card-head-title {
+ min-height: 32px;
+ padding-bottom: 0
+}
+
+.ant-card-contain-tabs > .ant-card-head .ant-card-extra {
+ padding-bottom: 0
+}
+
+.ant-card-cover > * {
+ display: block;
+ width: 100%
+}
+
+.ant-card-cover img {
+ border-radius: 2px 2px 0 0
+}
+
+.ant-card-actions {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ background: #fafafa;
+ border-top: 1px solid #e8e8e8;
+ zoom: 1
+}
+
+ .ant-card-actions:after, .ant-card-actions:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-card-actions:after {
+ clear: both
+ }
+
+ .ant-card-actions > li {
+ float: left;
+ margin: 12px 0;
+ color: rgba(0,0,0,.45);
+ text-align: center
+ }
+
+ .ant-card-actions > li > span {
+ position: relative;
+ display: block;
+ min-width: 32px;
+ font-size: 14px;
+ line-height: 22px;
+ cursor: pointer
+ }
+
+ .ant-card-actions > li > span:hover {
+ color: #fa541c;
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .ant-card-actions > li > span > .anticon, .ant-card-actions > li > span a:not(.ant-btn) {
+ display: inline-block;
+ width: 100%;
+ color: rgba(0,0,0,.45);
+ line-height: 22px;
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .ant-card-actions > li > span > .anticon:hover, .ant-card-actions > li > span a:not(.ant-btn):hover {
+ color: #fa541c
+ }
+
+ .ant-card-actions > li > span > .anticon {
+ font-size: 16px;
+ line-height: 22px
+ }
+
+ .ant-card-actions > li:not(:last-child) {
+ border-right: 1px solid #e8e8e8
+ }
+
+.ant-card-type-inner .ant-card-head {
+ padding: 0 24px;
+ background: #fafafa
+}
+
+.ant-card-type-inner .ant-card-head-title {
+ padding: 12px 0;
+ font-size: 14px
+}
+
+.ant-card-type-inner .ant-card-body {
+ padding: 16px 24px
+}
+
+.ant-card-type-inner .ant-card-extra {
+ padding: 13.5px 0
+}
+
+.ant-card-meta {
+ margin: -4px 0;
+ zoom: 1
+}
+
+ .ant-card-meta:after, .ant-card-meta:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-card-meta:after {
+ clear: both
+ }
+
+.ant-card-meta-avatar {
+ float: left;
+ padding-right: 16px
+}
+
+.ant-card-meta-detail {
+ overflow: hidden
+}
+
+ .ant-card-meta-detail > div:not(:last-child) {
+ margin-bottom: 8px
+ }
+
+.ant-card-meta-title {
+ overflow: hidden;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+.ant-card-meta-description {
+ color: rgba(0,0,0,.45)
+}
+
+.ant-card-loading {
+ overflow: hidden
+}
+
+ .ant-card-loading .ant-card-body {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+ }
+
+.ant-card-loading-content p {
+ margin: 0
+}
+
+.ant-card-loading-block {
+ height: 14px;
+ margin: 4px 0;
+ background: -webkit-gradient(linear,left top,right top,from(rgba(207,216,220,.2)),color-stop(rgba(207,216,220,.4)),to(rgba(207,216,220,.2)));
+ background: linear-gradient(90deg,rgba(207,216,220,.2),rgba(207,216,220,.4),rgba(207,216,220,.2));
+ background-size: 600% 600%;
+ border-radius: 2px;
+ -webkit-animation: card-loading 1.4s ease infinite;
+ animation: card-loading 1.4s ease infinite
+}
+
+@-webkit-keyframes card-loading {
+ 0%,to {
+ background-position: 0 50%
+ }
+
+ 50% {
+ background-position: 100% 50%
+ }
+}
+
+@keyframes card-loading {
+ 0%,to {
+ background-position: 0 50%
+ }
+
+ 50% {
+ background-position: 100% 50%
+ }
+}
+
+.ant-card-small > .ant-card-head {
+ min-height: 36px;
+ padding: 0 12px;
+ font-size: 14px
+}
+
+ .ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-head-title {
+ padding: 8px 0
+ }
+
+ .ant-card-small > .ant-card-head > .ant-card-head-wrapper > .ant-card-extra {
+ padding: 8px 0;
+ font-size: 14px
+ }
+
+.ant-card-small > .ant-card-body {
+ padding: 12px
+}
+
+.ant-carousel {
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+ .ant-carousel, .ant-carousel .slick-slider {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+ }
+
+ .ant-carousel .slick-slider {
+ position: relative;
+ display: block;
+ -webkit-touch-callout: none;
+ -ms-touch-action: pan-y;
+ touch-action: pan-y;
+ -webkit-tap-highlight-color: transparent
+ }
+
+ .ant-carousel .slick-list {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 0;
+ overflow: hidden
+ }
+
+ .ant-carousel .slick-list:focus {
+ outline: none
+ }
+
+ .ant-carousel .slick-list.dragging {
+ cursor: pointer
+ }
+
+ .ant-carousel .slick-list .slick-slide {
+ pointer-events: none
+ }
+
+ .ant-carousel .slick-list .slick-slide input.ant-checkbox-input, .ant-carousel .slick-list .slick-slide input.ant-radio-input {
+ visibility: hidden
+ }
+
+ .ant-carousel .slick-list .slick-slide.slick-active {
+ pointer-events: auto
+ }
+
+ .ant-carousel .slick-list .slick-slide.slick-active input.ant-checkbox-input, .ant-carousel .slick-list .slick-slide.slick-active input.ant-radio-input {
+ visibility: visible
+ }
+
+ .ant-carousel .slick-slider .slick-list, .ant-carousel .slick-slider .slick-track {
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0)
+ }
+
+ .ant-carousel .slick-track {
+ position: relative;
+ top: 0;
+ left: 0;
+ display: block
+ }
+
+ .ant-carousel .slick-track:after, .ant-carousel .slick-track:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-carousel .slick-track:after {
+ clear: both
+ }
+
+.slick-loading .ant-carousel .slick-track {
+ visibility: hidden
+}
+
+.ant-carousel .slick-slide {
+ display: none;
+ float: left;
+ height: 100%;
+ min-height: 1px
+}
+
+[dir=rtl] .ant-carousel .slick-slide {
+ float: right
+}
+
+.ant-carousel .slick-slide img {
+ display: block
+}
+
+.ant-carousel .slick-slide.slick-loading img {
+ display: none
+}
+
+.ant-carousel .slick-slide.dragging img {
+ pointer-events: none
+}
+
+.ant-carousel .slick-initialized .slick-slide {
+ display: block
+}
+
+.ant-carousel .slick-loading .slick-slide {
+ visibility: hidden
+}
+
+.ant-carousel .slick-vertical .slick-slide {
+ display: block;
+ height: auto;
+ border: 1px solid transparent
+}
+
+.ant-carousel .slick-arrow.slick-hidden {
+ display: none
+}
+
+.ant-carousel .slick-next, .ant-carousel .slick-prev {
+ position: absolute;
+ top: 50%;
+ display: block;
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ padding: 0;
+ font-size: 0;
+ line-height: 0;
+ border: 0;
+ cursor: pointer
+}
+
+ .ant-carousel .slick-next, .ant-carousel .slick-next:focus, .ant-carousel .slick-next:hover, .ant-carousel .slick-prev, .ant-carousel .slick-prev:focus, .ant-carousel .slick-prev:hover {
+ color: transparent;
+ background: transparent;
+ outline: none
+ }
+
+ .ant-carousel .slick-next:focus:before, .ant-carousel .slick-next:hover:before, .ant-carousel .slick-prev:focus:before, .ant-carousel .slick-prev:hover:before {
+ opacity: 1
+ }
+
+ .ant-carousel .slick-next.slick-disabled:before, .ant-carousel .slick-prev.slick-disabled:before {
+ opacity: .25
+ }
+
+.ant-carousel .slick-prev {
+ left: -25px
+}
+
+ .ant-carousel .slick-prev:before {
+ content: "鈫�"
+ }
+
+.ant-carousel .slick-next {
+ right: -25px
+}
+
+ .ant-carousel .slick-next:before {
+ content: "鈫�"
+ }
+
+.ant-carousel .slick-dots {
+ position: absolute;
+ display: block;
+ width: 100%;
+ height: 3px;
+ margin: 0;
+ padding: 0;
+ text-align: center;
+ list-style: none
+}
+
+.ant-carousel .slick-dots-bottom {
+ bottom: 12px
+}
+
+.ant-carousel .slick-dots-top {
+ top: 12px
+}
+
+.ant-carousel .slick-dots li {
+ position: relative;
+ display: inline-block;
+ margin: 0 2px;
+ padding: 0;
+ text-align: center;
+ vertical-align: top
+}
+
+ .ant-carousel .slick-dots li button {
+ display: block;
+ width: 16px;
+ height: 3px;
+ padding: 0;
+ color: transparent;
+ font-size: 0;
+ background: #fff;
+ border: 0;
+ border-radius: 1px;
+ outline: none;
+ cursor: pointer;
+ opacity: .3;
+ -webkit-transition: all .5s;
+ transition: all .5s
+ }
+
+ .ant-carousel .slick-dots li button:focus, .ant-carousel .slick-dots li button:hover {
+ opacity: .75
+ }
+
+ .ant-carousel .slick-dots li.slick-active button {
+ width: 24px;
+ background: #fff;
+ opacity: 1
+ }
+
+ .ant-carousel .slick-dots li.slick-active button:focus, .ant-carousel .slick-dots li.slick-active button:hover {
+ opacity: 1
+ }
+
+.ant-carousel-vertical .slick-dots {
+ top: 50%;
+ bottom: auto;
+ width: 3px;
+ height: auto;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%)
+}
+
+.ant-carousel-vertical .slick-dots-left {
+ left: 12px
+}
+
+.ant-carousel-vertical .slick-dots-right {
+ right: 12px
+}
+
+.ant-carousel-vertical .slick-dots li {
+ margin: 0 2px;
+ vertical-align: baseline
+}
+
+ .ant-carousel-vertical .slick-dots li button {
+ width: 3px;
+ height: 16px
+ }
+
+ .ant-carousel-vertical .slick-dots li.slick-active button {
+ width: 3px;
+ height: 24px
+ }
+
+.ant-cascader {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+.ant-cascader-input.ant-input {
+ position: static;
+ width: 100%;
+ padding-right: 24px;
+ background-color: transparent !important;
+ cursor: pointer
+}
+
+.ant-cascader-picker-show-search .ant-cascader-input.ant-input {
+ position: relative
+}
+
+.ant-cascader-picker {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ border-radius: 2px;
+ outline: 0;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s
+}
+
+.ant-cascader-picker-with-value .ant-cascader-picker-label {
+ color: transparent
+}
+
+.ant-cascader-picker-disabled {
+ color: rgba(0,0,0,.25);
+ background: #f5f5f5;
+ cursor: not-allowed
+}
+
+ .ant-cascader-picker-disabled .ant-cascader-input {
+ cursor: not-allowed
+ }
+
+.ant-cascader-picker:focus .ant-cascader-input {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-cascader-picker-show-search.ant-cascader-picker-focused {
+ color: rgba(0,0,0,.25)
+}
+
+.ant-cascader-picker-label {
+ position: absolute;
+ top: 50%;
+ left: 0;
+ width: 100%;
+ height: 20px;
+ margin-top: -10px;
+ padding: 0 20px 0 12px;
+ overflow: hidden;
+ line-height: 20px;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+.ant-cascader-picker-clear {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ z-index: 2;
+ width: 12px;
+ height: 12px;
+ margin-top: -6px;
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ line-height: 12px;
+ background: #fff;
+ cursor: pointer;
+ opacity: 0;
+ -webkit-transition: color .3s ease,opacity .15s ease;
+ transition: color .3s ease,opacity .15s ease
+}
+
+ .ant-cascader-picker-clear:hover {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-cascader-picker:hover .ant-cascader-picker-clear {
+ opacity: 1
+}
+
+.ant-cascader-picker-arrow {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ z-index: 1;
+ width: 12px;
+ height: 12px;
+ margin-top: -6px;
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ line-height: 12px;
+ -webkit-transition: -webkit-transform .2s;
+ transition: -webkit-transform .2s;
+ transition: transform .2s;
+ transition: transform .2s,-webkit-transform .2s
+}
+
+ .ant-cascader-picker-arrow.ant-cascader-picker-arrow-expand {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg)
+ }
+
+.ant-cascader-picker-label:hover + .ant-cascader-input {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+}
+
+.ant-cascader-picker-small .ant-cascader-picker-arrow, .ant-cascader-picker-small .ant-cascader-picker-clear {
+ right: 8px
+}
+
+.ant-cascader-menus {
+ position: absolute;
+ z-index: 1050;
+ font-size: 14px;
+ white-space: nowrap;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+ .ant-cascader-menus ol, .ant-cascader-menus ul {
+ margin: 0;
+ list-style: none
+ }
+
+.ant-cascader-menus-empty, .ant-cascader-menus-hidden {
+ display: none
+}
+
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-bottomLeft, .ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-bottomLeft {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn
+}
+
+.ant-cascader-menus.slide-up-appear.slide-up-appear-active.ant-cascader-menus-placement-topLeft, .ant-cascader-menus.slide-up-enter.slide-up-enter-active.ant-cascader-menus-placement-topLeft {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn
+}
+
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-bottomLeft {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut
+}
+
+.ant-cascader-menus.slide-up-leave.slide-up-leave-active.ant-cascader-menus-placement-topLeft {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut
+}
+
+.ant-cascader-menu {
+ display: inline-block;
+ min-width: 111px;
+ height: 180px;
+ margin: 0;
+ padding: 4px 0;
+ overflow: auto;
+ vertical-align: top;
+ list-style: none;
+ border-right: 1px solid #e8e8e8;
+ -ms-overflow-style: -ms-autohiding-scrollbar
+}
+
+ .ant-cascader-menu:first-child {
+ border-radius: 2px 0 0 2px
+ }
+
+ .ant-cascader-menu:last-child {
+ margin-right: -1px;
+ border-right-color: transparent;
+ border-radius: 0 2px 2px 0
+ }
+
+ .ant-cascader-menu:only-child {
+ border-radius: 2px
+ }
+
+.ant-cascader-menu-item {
+ padding: 5px 12px;
+ line-height: 22px;
+ white-space: nowrap;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-cascader-menu-item:hover {
+ background: #fff2e8
+ }
+
+.ant-cascader-menu-item-disabled {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+ .ant-cascader-menu-item-disabled:hover {
+ background: transparent
+ }
+
+.ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled), .ant-cascader-menu-item-active:not(.ant-cascader-menu-item-disabled):hover {
+ font-weight: 600;
+ background-color: #fafafa
+}
+
+.ant-cascader-menu-item-expand {
+ position: relative;
+ padding-right: 24px
+}
+
+ .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-loading-icon {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg);
+ position: absolute;
+ right: 12px;
+ color: rgba(0,0,0,.45)
+ }
+
+:root .ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, :root .ant-cascader-menu-item-loading-icon {
+ font-size: 12px
+}
+
+.ant-cascader-menu-item-disabled.ant-cascader-menu-item-expand .ant-cascader-menu-item-expand-icon, .ant-cascader-menu-item-disabled.ant-cascader-menu-item-loading-icon {
+ color: rgba(0,0,0,.25)
+}
+
+.ant-cascader-menu-item .ant-cascader-menu-item-keyword {
+ color: #f5222d
+}
+
+@-webkit-keyframes antCheckboxEffect {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(1.6);
+ transform: scale(1.6);
+ opacity: 0
+ }
+}
+
+@keyframes antCheckboxEffect {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(1.6);
+ transform: scale(1.6);
+ opacity: 0
+ }
+}
+
+.ant-checkbox {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ top: -.09em;
+ display: inline-block;
+ line-height: 1;
+ white-space: nowrap;
+ vertical-align: middle;
+ outline: none;
+ cursor: pointer
+}
+
+ .ant-checkbox-input:focus + .ant-checkbox-inner, .ant-checkbox-wrapper:hover .ant-checkbox-inner, .ant-checkbox:hover .ant-checkbox-inner {
+ border-color: #fa541c
+ }
+
+.ant-checkbox-checked:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 1px solid #fa541c;
+ border-radius: 2px;
+ visibility: hidden;
+ -webkit-animation: antCheckboxEffect .36s ease-in-out;
+ animation: antCheckboxEffect .36s ease-in-out;
+ -webkit-animation-fill-mode: backwards;
+ animation-fill-mode: backwards;
+ content: ""
+}
+
+.ant-checkbox-wrapper:hover .ant-checkbox:after, .ant-checkbox:hover:after {
+ visibility: visible
+}
+
+.ant-checkbox-inner {
+ position: relative;
+ top: 0;
+ left: 0;
+ display: block;
+ width: 16px;
+ height: 16px;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ border-collapse: separate;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-checkbox-inner:after {
+ position: absolute;
+ top: 50%;
+ left: 22%;
+ display: table;
+ width: 5.71428571px;
+ height: 9.14285714px;
+ border: 2px solid #fff;
+ border-top: 0;
+ border-left: 0;
+ -webkit-transform: rotate(45deg) scale(0) translate(-50%,-50%);
+ transform: rotate(45deg) scale(0) translate(-50%,-50%);
+ opacity: 0;
+ -webkit-transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+ transition: all .1s cubic-bezier(.71,-.46,.88,.6),opacity .1s;
+ content: " "
+ }
+
+.ant-checkbox-input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ cursor: pointer;
+ opacity: 0
+}
+
+.ant-checkbox-checked .ant-checkbox-inner:after {
+ position: absolute;
+ display: table;
+ border: 2px solid #fff;
+ border-top: 0;
+ border-left: 0;
+ -webkit-transform: rotate(45deg) scale(1) translate(-50%,-50%);
+ transform: rotate(45deg) scale(1) translate(-50%,-50%);
+ opacity: 1;
+ -webkit-transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+ transition: all .2s cubic-bezier(.12,.4,.29,1.46) .1s;
+ content: " "
+}
+
+.ant-checkbox-checked .ant-checkbox-inner {
+ background-color: #fa541c;
+ border-color: #fa541c
+}
+
+.ant-checkbox-disabled {
+ cursor: not-allowed
+}
+
+ .ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner:after {
+ border-color: rgba(0,0,0,.25);
+ -webkit-animation-name: none;
+ animation-name: none
+ }
+
+ .ant-checkbox-disabled .ant-checkbox-input {
+ cursor: not-allowed
+ }
+
+ .ant-checkbox-disabled .ant-checkbox-inner {
+ background-color: #f5f5f5;
+ border-color: #d9d9d9 !important
+ }
+
+ .ant-checkbox-disabled .ant-checkbox-inner:after {
+ border-color: #f5f5f5;
+ border-collapse: separate;
+ -webkit-animation-name: none;
+ animation-name: none
+ }
+
+ .ant-checkbox-disabled + span {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+ }
+
+ .ant-checkbox-disabled:hover:after, .ant-checkbox-wrapper:hover .ant-checkbox-disabled:after {
+ visibility: hidden
+ }
+
+.ant-checkbox-wrapper {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: inline-block;
+ line-height: unset;
+ cursor: pointer
+}
+
+ .ant-checkbox-wrapper.ant-checkbox-wrapper-disabled {
+ cursor: not-allowed
+ }
+
+ .ant-checkbox-wrapper + .ant-checkbox-wrapper {
+ margin-left: 8px
+ }
+
+.ant-checkbox + span {
+ padding-right: 8px;
+ padding-left: 8px
+}
+
+.ant-checkbox-group {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: inline-block
+}
+
+.ant-checkbox-group-item {
+ display: inline-block;
+ margin-right: 8px
+}
+
+ .ant-checkbox-group-item:last-child {
+ margin-right: 0
+ }
+
+ .ant-checkbox-group-item + .ant-checkbox-group-item {
+ margin-left: 0
+ }
+
+.ant-checkbox-indeterminate .ant-checkbox-inner {
+ background-color: #fff;
+ border-color: #d9d9d9
+}
+
+ .ant-checkbox-indeterminate .ant-checkbox-inner:after {
+ top: 50%;
+ left: 50%;
+ width: 8px;
+ height: 8px;
+ background-color: #fa541c;
+ border: 0;
+ -webkit-transform: translate(-50%,-50%) scale(1);
+ transform: translate(-50%,-50%) scale(1);
+ opacity: 1;
+ content: " "
+ }
+
+.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner:after {
+ background-color: rgba(0,0,0,.25);
+ border-color: rgba(0,0,0,.25)
+}
+
+.ant-collapse {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ background-color: #fafafa;
+ border: 1px solid #d9d9d9;
+ border-bottom: 0;
+ border-radius: 2px
+}
+
+ .ant-collapse > .ant-collapse-item {
+ border-bottom: 1px solid #d9d9d9
+ }
+
+ .ant-collapse > .ant-collapse-item:last-child, .ant-collapse > .ant-collapse-item:last-child > .ant-collapse-header {
+ border-radius: 0 0 2px 2px
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header {
+ position: relative;
+ padding: 12px 16px;
+ padding-left: 40px;
+ color: rgba(0,0,0,.85);
+ line-height: 22px;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: absolute;
+ top: 50%;
+ left: 16px;
+ display: inline-block;
+ font-size: 12px;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%)
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow > * {
+ line-height: 1
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+ display: inline-block
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow:before {
+ display: none
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow-icon {
+ display: block
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow svg {
+ -webkit-transition: -webkit-transform .24s;
+ transition: -webkit-transform .24s;
+ transition: transform .24s;
+ transition: transform .24s,-webkit-transform .24s
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header .ant-collapse-extra {
+ float: right
+ }
+
+ .ant-collapse > .ant-collapse-item > .ant-collapse-header:focus {
+ outline: none
+ }
+
+ .ant-collapse > .ant-collapse-item.ant-collapse-no-arrow > .ant-collapse-header {
+ padding-left: 12px
+ }
+
+.ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header {
+ padding: 12px 16px;
+ padding-right: 40px
+}
+
+ .ant-collapse-icon-position-right > .ant-collapse-item > .ant-collapse-header .ant-collapse-arrow {
+ right: 16px;
+ left: auto
+ }
+
+.ant-collapse-anim-active {
+ -webkit-transition: height .2s cubic-bezier(.215,.61,.355,1);
+ transition: height .2s cubic-bezier(.215,.61,.355,1)
+}
+
+.ant-collapse-content {
+ overflow: hidden;
+ color: rgba(0,0,0,.65);
+ background-color: #fff;
+ border-top: 1px solid #d9d9d9
+}
+
+ .ant-collapse-content > .ant-collapse-content-box {
+ padding: 16px
+ }
+
+.ant-collapse-content-inactive {
+ display: none
+}
+
+.ant-collapse-item:last-child > .ant-collapse-content {
+ border-radius: 0 0 2px 2px
+}
+
+.ant-collapse-borderless {
+ background-color: #fafafa;
+ border: 0
+}
+
+ .ant-collapse-borderless > .ant-collapse-item {
+ border-bottom: 1px solid #d9d9d9
+ }
+
+ .ant-collapse-borderless > .ant-collapse-item:last-child, .ant-collapse-borderless > .ant-collapse-item:last-child .ant-collapse-header {
+ border-radius: 0
+ }
+
+ .ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content {
+ background-color: transparent;
+ border-top: 0
+ }
+
+ .ant-collapse-borderless > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box {
+ padding-top: 4px
+ }
+
+.ant-collapse .ant-collapse-item-disabled > .ant-collapse-header, .ant-collapse .ant-collapse-item-disabled > .ant-collapse-header > .arrow {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+.ant-comment {
+ position: relative
+}
+
+.ant-comment-inner {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ padding: 16px 0
+}
+
+.ant-comment-avatar {
+ position: relative;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ margin-right: 12px;
+ cursor: pointer
+}
+
+ .ant-comment-avatar img {
+ width: 32px;
+ height: 32px;
+ border-radius: 50%
+ }
+
+.ant-comment-content {
+ position: relative;
+ -webkit-box-flex: 1;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ min-width: 1px;
+ font-size: 14px;
+ word-wrap: break-word
+}
+
+.ant-comment-content-author {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ margin-bottom: 4px;
+ font-size: 14px
+}
+
+ .ant-comment-content-author > a, .ant-comment-content-author > span {
+ padding-right: 8px;
+ font-size: 12px;
+ line-height: 18px
+ }
+
+.ant-comment-content-author-name {
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ -webkit-transition: color .3s;
+ transition: color .3s
+}
+
+ .ant-comment-content-author-name > *, .ant-comment-content-author-name > :hover {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-comment-content-author-time {
+ color: #ccc;
+ white-space: nowrap;
+ cursor: auto
+}
+
+.ant-comment-content-detail p {
+ white-space: pre-wrap
+}
+
+.ant-comment-actions {
+ margin-top: 12px;
+ padding-left: 0
+}
+
+ .ant-comment-actions > li {
+ display: inline-block;
+ color: rgba(0,0,0,.45)
+ }
+
+ .ant-comment-actions > li > span {
+ padding-right: 10px;
+ color: rgba(0,0,0,.45);
+ font-size: 12px;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+ }
+
+ .ant-comment-actions > li > span:hover {
+ color: #595959
+ }
+
+.ant-comment-nested {
+ margin-left: 44px
+}
+
+.ant-calendar-picker-container {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ z-index: 1050;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol
+}
+
+ .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-topRight, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-topRight {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn
+ }
+
+ .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-appear.slide-up-appear-active.ant-calendar-picker-container-placement-bottomRight, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-enter.slide-up-enter-active.ant-calendar-picker-container-placement-bottomRight {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn
+ }
+
+ .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topLeft, .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-topRight {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut
+ }
+
+ .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomLeft, .ant-calendar-picker-container.slide-up-leave.slide-up-leave-active.ant-calendar-picker-container-placement-bottomRight {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut
+ }
+
+.ant-calendar-picker {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ outline: none;
+ cursor: text;
+ -webkit-transition: opacity .3s;
+ transition: opacity .3s
+}
+
+.ant-calendar-picker-input {
+ outline: none
+}
+
+ .ant-calendar-picker-input.ant-input {
+ line-height: 1.5
+ }
+
+ .ant-calendar-picker-input.ant-input-sm {
+ padding-top: 0;
+ padding-bottom: 0
+ }
+
+.ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
+ border-color: #ff7a45
+}
+
+.ant-calendar-picker:focus .ant-calendar-picker-input:not(.ant-input-disabled) {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-calendar-picker-clear, .ant-calendar-picker-icon {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ z-index: 1;
+ width: 14px;
+ height: 14px;
+ margin-top: -7px;
+ font-size: 12px;
+ line-height: 14px;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-calendar-picker-clear {
+ z-index: 2;
+ color: rgba(0,0,0,.25);
+ font-size: 14px;
+ background: #fff;
+ cursor: pointer;
+ opacity: 0;
+ pointer-events: none
+}
+
+ .ant-calendar-picker-clear:hover {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-calendar-picker:hover .ant-calendar-picker-clear {
+ opacity: 1;
+ pointer-events: auto
+}
+
+.ant-calendar-picker-icon {
+ display: inline-block;
+ color: rgba(0,0,0,.25);
+ font-size: 14px;
+ line-height: 1
+}
+
+.ant-input-disabled + .ant-calendar-picker-icon {
+ cursor: not-allowed
+}
+
+.ant-calendar-picker-small .ant-calendar-picker-clear, .ant-calendar-picker-small .ant-calendar-picker-icon {
+ right: 8px
+}
+
+.ant-calendar {
+ position: relative;
+ width: 280px;
+ font-size: 14px;
+ line-height: 1.5;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 1px solid #fff;
+ border-radius: 2px;
+ outline: none;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-calendar-input-wrap {
+ height: 34px;
+ padding: 6px 10px;
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-calendar-input {
+ width: 100%;
+ height: 22px;
+ color: rgba(0,0,0,.65);
+ background: #fff;
+ border: 0;
+ outline: 0;
+ cursor: auto
+}
+
+ .ant-calendar-input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-calendar-input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+.ant-calendar-week-number {
+ width: 286px
+}
+
+.ant-calendar-week-number-cell {
+ text-align: center
+}
+
+.ant-calendar-header {
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-calendar-header a:hover {
+ color: #ff7a45
+ }
+
+ .ant-calendar-header .ant-calendar-century-select, .ant-calendar-header .ant-calendar-decade-select, .ant-calendar-header .ant-calendar-month-select, .ant-calendar-header .ant-calendar-year-select {
+ display: inline-block;
+ padding: 0 2px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 40px
+ }
+
+ .ant-calendar-header .ant-calendar-century-select-arrow, .ant-calendar-header .ant-calendar-decade-select-arrow, .ant-calendar-header .ant-calendar-month-select-arrow, .ant-calendar-header .ant-calendar-year-select-arrow {
+ display: none
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn, .ant-calendar-header .ant-calendar-next-decade-btn, .ant-calendar-header .ant-calendar-next-month-btn, .ant-calendar-header .ant-calendar-next-year-btn, .ant-calendar-header .ant-calendar-prev-century-btn, .ant-calendar-header .ant-calendar-prev-decade-btn, .ant-calendar-header .ant-calendar-prev-month-btn, .ant-calendar-header .ant-calendar-prev-year-btn {
+ position: absolute;
+ top: 0;
+ display: inline-block;
+ padding: 0 5px;
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+ line-height: 40px
+ }
+
+ .ant-calendar-header .ant-calendar-prev-century-btn, .ant-calendar-header .ant-calendar-prev-decade-btn, .ant-calendar-header .ant-calendar-prev-year-btn {
+ left: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-header .ant-calendar-prev-century-btn:after, .ant-calendar-header .ant-calendar-prev-century-btn:before, .ant-calendar-header .ant-calendar-prev-decade-btn:after, .ant-calendar-header .ant-calendar-prev-decade-btn:before, .ant-calendar-header .ant-calendar-prev-year-btn:after, .ant-calendar-header .ant-calendar-prev-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-header .ant-calendar-prev-century-btn:hover:after, .ant-calendar-header .ant-calendar-prev-century-btn:hover:before, .ant-calendar-header .ant-calendar-prev-decade-btn:hover:after, .ant-calendar-header .ant-calendar-prev-decade-btn:hover:before, .ant-calendar-header .ant-calendar-prev-year-btn:hover:after, .ant-calendar-header .ant-calendar-prev-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-header .ant-calendar-prev-century-btn:after, .ant-calendar-header .ant-calendar-prev-decade-btn:after, .ant-calendar-header .ant-calendar-prev-year-btn:after {
+ display: none;
+ position: relative;
+ left: -3px;
+ display: inline-block
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn, .ant-calendar-header .ant-calendar-next-decade-btn, .ant-calendar-header .ant-calendar-next-year-btn {
+ right: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:hover:after, .ant-calendar-header .ant-calendar-next-century-btn:hover:before, .ant-calendar-header .ant-calendar-next-decade-btn:hover:after, .ant-calendar-header .ant-calendar-next-decade-btn:hover:before, .ant-calendar-header .ant-calendar-next-year-btn:hover:after, .ant-calendar-header .ant-calendar-next-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:after {
+ display: none
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:before, .ant-calendar-header .ant-calendar-next-decade-btn:before, .ant-calendar-header .ant-calendar-next-year-btn:before {
+ position: relative;
+ left: 3px
+ }
+
+ .ant-calendar-header .ant-calendar-next-century-btn:after, .ant-calendar-header .ant-calendar-next-decade-btn:after, .ant-calendar-header .ant-calendar-next-year-btn:after {
+ display: inline-block
+ }
+
+ .ant-calendar-header .ant-calendar-prev-month-btn {
+ left: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-header .ant-calendar-prev-month-btn:after, .ant-calendar-header .ant-calendar-prev-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-header .ant-calendar-prev-month-btn:hover:after, .ant-calendar-header .ant-calendar-prev-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-header .ant-calendar-prev-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-header .ant-calendar-next-month-btn {
+ right: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-header .ant-calendar-next-month-btn:after, .ant-calendar-header .ant-calendar-next-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-header .ant-calendar-next-month-btn:hover:after, .ant-calendar-header .ant-calendar-next-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-header .ant-calendar-next-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-header .ant-calendar-next-month-btn:after, .ant-calendar-header .ant-calendar-next-month-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+.ant-calendar-body {
+ padding: 8px 12px
+}
+
+.ant-calendar table {
+ width: 100%;
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse
+}
+
+.ant-calendar table, .ant-calendar td, .ant-calendar th {
+ text-align: center;
+ border: 0
+}
+
+.ant-calendar-calendar-table {
+ margin-bottom: 0;
+ border-spacing: 0
+}
+
+.ant-calendar-column-header {
+ width: 33px;
+ padding: 6px 0;
+ line-height: 18px;
+ text-align: center
+}
+
+ .ant-calendar-column-header .ant-calendar-column-header-inner {
+ display: block;
+ font-weight: 400
+ }
+
+.ant-calendar-week-number-header .ant-calendar-column-header-inner {
+ display: none
+}
+
+.ant-calendar-cell {
+ height: 30px;
+ padding: 3px 0
+}
+
+.ant-calendar-date {
+ display: block;
+ width: 24px;
+ height: 24px;
+ margin: 0 auto;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ line-height: 22px;
+ text-align: center;
+ background: transparent;
+ border: 1px solid transparent;
+ border-radius: 2px;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+.ant-calendar-date-panel {
+ position: relative;
+ outline: none
+}
+
+.ant-calendar-date:hover {
+ background: #fff2e8;
+ cursor: pointer
+}
+
+.ant-calendar-date:active {
+ color: #fff;
+ background: #ff7a45
+}
+
+.ant-calendar-today .ant-calendar-date {
+ color: #fa541c;
+ font-weight: 700;
+ border-color: #fa541c
+}
+
+.ant-calendar-selected-day .ant-calendar-date {
+ background: #ffd8bf
+}
+
+.ant-calendar-last-month-cell .ant-calendar-date, .ant-calendar-last-month-cell .ant-calendar-date:hover, .ant-calendar-next-month-btn-day .ant-calendar-date, .ant-calendar-next-month-btn-day .ant-calendar-date:hover {
+ color: rgba(0,0,0,.25);
+ background: transparent;
+ border-color: transparent
+}
+
+.ant-calendar-disabled-cell .ant-calendar-date {
+ position: relative;
+ width: auto;
+ color: rgba(0,0,0,.25);
+ background: #f5f5f5;
+ border: 1px solid transparent;
+ border-radius: 0;
+ cursor: not-allowed
+}
+
+ .ant-calendar-disabled-cell .ant-calendar-date:hover {
+ background: #f5f5f5
+ }
+
+.ant-calendar-disabled-cell.ant-calendar-selected-day .ant-calendar-date:before {
+ position: absolute;
+ top: -1px;
+ left: 5px;
+ width: 24px;
+ height: 24px;
+ background: rgba(0,0,0,.1);
+ border-radius: 2px;
+ content: ""
+}
+
+.ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date {
+ position: relative;
+ padding-right: 5px;
+ padding-left: 5px
+}
+
+ .ant-calendar-disabled-cell.ant-calendar-today .ant-calendar-date:before {
+ position: absolute;
+ top: -1px;
+ left: 5px;
+ width: 24px;
+ height: 24px;
+ border: 1px solid rgba(0,0,0,.25);
+ border-radius: 2px;
+ content: " "
+ }
+
+.ant-calendar-disabled-cell-first-of-row .ant-calendar-date {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px
+}
+
+.ant-calendar-disabled-cell-last-of-row .ant-calendar-date {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px
+}
+
+.ant-calendar-footer {
+ padding: 0 12px;
+ line-height: 38px;
+ border-top: 1px solid #e8e8e8
+}
+
+ .ant-calendar-footer:empty {
+ border-top: 0
+ }
+
+.ant-calendar-footer-btn {
+ display: block;
+ text-align: center
+}
+
+.ant-calendar-footer-extra {
+ text-align: left
+}
+
+.ant-calendar .ant-calendar-clear-btn, .ant-calendar .ant-calendar-today-btn {
+ display: inline-block;
+ margin: 0 0 0 8px;
+ text-align: center
+}
+
+.ant-calendar .ant-calendar-clear-btn-disabled, .ant-calendar .ant-calendar-today-btn-disabled {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+.ant-calendar .ant-calendar-clear-btn:only-child, .ant-calendar .ant-calendar-today-btn:only-child {
+ margin: 0
+}
+
+.ant-calendar .ant-calendar-clear-btn {
+ position: absolute;
+ top: 7px;
+ right: 5px;
+ display: none;
+ width: 20px;
+ height: 20px;
+ margin: 0;
+ overflow: hidden;
+ line-height: 20px;
+ text-align: center;
+ text-indent: -76px
+}
+
+ .ant-calendar .ant-calendar-clear-btn:after {
+ display: inline-block;
+ width: 20px;
+ color: rgba(0,0,0,.25);
+ font-size: 14px;
+ line-height: 1;
+ text-indent: 43px;
+ -webkit-transition: color .3s ease;
+ transition: color .3s ease
+ }
+
+ .ant-calendar .ant-calendar-clear-btn:hover:after {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-calendar .ant-calendar-ok-btn {
+ position: relative;
+ display: inline-block;
+ font-weight: 400;
+ white-space: nowrap;
+ text-align: center;
+ background-image: none;
+ border: 1px solid transparent;
+ -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.015);
+ box-shadow: 0 2px 0 rgba(0,0,0,.015);
+ cursor: pointer;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ height: 32px;
+ padding: 0 15px;
+ color: #fff;
+ background-color: #fa541c;
+ border-color: #fa541c;
+ text-shadow: 0 -1px 0 rgba(0,0,0,.12);
+ -webkit-box-shadow: 0 2px 0 rgba(0,0,0,.045);
+ box-shadow: 0 2px 0 rgba(0,0,0,.045);
+ height: 24px;
+ padding: 0 7px;
+ font-size: 14px;
+ border-radius: 2px;
+ line-height: 22px
+}
+
+ .ant-calendar .ant-calendar-ok-btn > .anticon {
+ line-height: 1
+ }
+
+ .ant-calendar .ant-calendar-ok-btn, .ant-calendar .ant-calendar-ok-btn:active, .ant-calendar .ant-calendar-ok-btn:focus {
+ outline: 0
+ }
+
+ .ant-calendar .ant-calendar-ok-btn:not([disabled]):hover {
+ text-decoration: none
+ }
+
+ .ant-calendar .ant-calendar-ok-btn:not([disabled]):active {
+ outline: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-calendar .ant-calendar-ok-btn.disabled, .ant-calendar .ant-calendar-ok-btn[disabled] {
+ cursor: not-allowed
+ }
+
+ .ant-calendar .ant-calendar-ok-btn.disabled > *, .ant-calendar .ant-calendar-ok-btn[disabled] > * {
+ pointer-events: none
+ }
+
+.ant-calendar .ant-calendar-ok-btn-lg {
+ height: 40px;
+ padding: 0 15px;
+ font-size: 16px;
+ border-radius: 2px
+}
+
+.ant-calendar .ant-calendar-ok-btn-sm {
+ height: 24px;
+ padding: 0 7px;
+ font-size: 14px;
+ border-radius: 2px
+}
+
+.ant-calendar .ant-calendar-ok-btn > a:only-child {
+ color: currentColor
+}
+
+ .ant-calendar .ant-calendar-ok-btn > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-calendar .ant-calendar-ok-btn:focus, .ant-calendar .ant-calendar-ok-btn:hover {
+ color: #fff;
+ background-color: #ff7a45;
+ border-color: #ff7a45
+}
+
+ .ant-calendar .ant-calendar-ok-btn:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn:hover > a:only-child {
+ color: currentColor
+ }
+
+ .ant-calendar .ant-calendar-ok-btn:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn:hover > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-calendar .ant-calendar-ok-btn.active, .ant-calendar .ant-calendar-ok-btn:active {
+ color: #fff;
+ background-color: #d4380d;
+ border-color: #d4380d
+}
+
+ .ant-calendar .ant-calendar-ok-btn.active > a:only-child, .ant-calendar .ant-calendar-ok-btn:active > a:only-child {
+ color: currentColor
+ }
+
+ .ant-calendar .ant-calendar-ok-btn.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn:active > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-calendar .ant-calendar-ok-btn-disabled, .ant-calendar .ant-calendar-ok-btn-disabled.active, .ant-calendar .ant-calendar-ok-btn-disabled:active, .ant-calendar .ant-calendar-ok-btn-disabled:focus, .ant-calendar .ant-calendar-ok-btn-disabled:hover, .ant-calendar .ant-calendar-ok-btn.disabled, .ant-calendar .ant-calendar-ok-btn.disabled.active, .ant-calendar .ant-calendar-ok-btn.disabled:active, .ant-calendar .ant-calendar-ok-btn.disabled:focus, .ant-calendar .ant-calendar-ok-btn.disabled:hover, .ant-calendar .ant-calendar-ok-btn[disabled], .ant-calendar .ant-calendar-ok-btn[disabled].active, .ant-calendar .ant-calendar-ok-btn[disabled]:active, .ant-calendar .ant-calendar-ok-btn[disabled]:focus, .ant-calendar .ant-calendar-ok-btn[disabled]:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9;
+ text-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn-disabled > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn.disabled > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child, .ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child {
+ color: currentColor
+ }
+
+ .ant-calendar .ant-calendar-ok-btn-disabled.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn-disabled > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled.active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn.disabled > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled].active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:active > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:focus > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled]:hover > a:only-child:after, .ant-calendar .ant-calendar-ok-btn[disabled] > a:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ content: ""
+ }
+
+.ant-calendar-range-picker-input {
+ width: 44%;
+ height: 99%;
+ text-align: center;
+ background-color: transparent;
+ border: 0;
+ outline: 0
+}
+
+ .ant-calendar-range-picker-input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-calendar-range-picker-input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-range-picker-input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-range-picker-input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range-picker-input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range-picker-input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range-picker-input[disabled] {
+ cursor: not-allowed
+ }
+
+.ant-calendar-range-picker-separator {
+ display: inline-block;
+ min-width: 10px;
+ height: 100%;
+ color: rgba(0,0,0,.45);
+ white-space: nowrap;
+ text-align: center;
+ vertical-align: top;
+ pointer-events: none
+}
+
+.ant-input-disabled .ant-calendar-range-picker-separator {
+ color: rgba(0,0,0,.25)
+}
+
+.ant-calendar-range {
+ width: 552px;
+ overflow: hidden
+}
+
+ .ant-calendar-range .ant-calendar-date-panel:after {
+ display: block;
+ clear: both;
+ height: 0;
+ visibility: hidden;
+ content: "."
+ }
+
+.ant-calendar-range-part {
+ position: relative;
+ width: 50%
+}
+
+.ant-calendar-range-left {
+ float: left
+}
+
+ .ant-calendar-range-left .ant-calendar-time-picker-inner {
+ border-right: 1px solid #e8e8e8
+ }
+
+.ant-calendar-range-right {
+ float: right
+}
+
+ .ant-calendar-range-right .ant-calendar-time-picker-inner {
+ border-left: 1px solid #e8e8e8
+ }
+
+.ant-calendar-range-middle {
+ position: absolute;
+ left: 50%;
+ z-index: 1;
+ height: 34px;
+ margin: 1px 0 0 0;
+ padding: 0 200px 0 0;
+ color: rgba(0,0,0,.45);
+ line-height: 34px;
+ text-align: center;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ pointer-events: none
+}
+
+.ant-calendar-range-right .ant-calendar-date-input-wrap {
+ margin-left: -90px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-range-middle {
+ padding: 0 10px 0 0;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%)
+}
+
+.ant-calendar-range .ant-calendar-today :not(.ant-calendar-disabled-cell) :not(.ant-calendar-last-month-cell) :not(.ant-calendar-next-month-btn-day) .ant-calendar-date {
+ color: #fa541c;
+ background: #ffd8bf;
+ border-color: #fa541c
+}
+
+.ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date {
+ color: #fff;
+ background: #fa541c;
+ border: 1px solid transparent
+}
+
+ .ant-calendar-range .ant-calendar-selected-end-date .ant-calendar-date:hover, .ant-calendar-range .ant-calendar-selected-start-date .ant-calendar-date:hover {
+ background: #fa541c
+ }
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-range-right .ant-calendar-date-input-wrap {
+ margin-left: 0
+}
+
+.ant-calendar-range .ant-calendar-input-wrap {
+ position: relative;
+ height: 34px
+}
+
+.ant-calendar-range .ant-calendar-input, .ant-calendar-range .ant-calendar-time-picker-input {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ height: 32px;
+ padding: 4px 11px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ height: 24px;
+ padding-right: 0;
+ padding-left: 0;
+ line-height: 24px;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-calendar-range .ant-calendar-input::-moz-placeholder, .ant-calendar-range .ant-calendar-time-picker-input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-calendar-range .ant-calendar-input:-ms-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-range .ant-calendar-input::-webkit-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-calendar-range .ant-calendar-input:-moz-placeholder-shown, .ant-calendar-range .ant-calendar-time-picker-input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range .ant-calendar-input:-ms-input-placeholder, .ant-calendar-range .ant-calendar-time-picker-input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range .ant-calendar-input:placeholder-shown, .ant-calendar-range .ant-calendar-time-picker-input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-calendar-range .ant-calendar-input:hover, .ant-calendar-range .ant-calendar-time-picker-input:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+.ant-calendar-range .ant-calendar-input-disabled, .ant-calendar-range .ant-calendar-time-picker-input-disabled {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-calendar-range .ant-calendar-input-disabled:hover, .ant-calendar-range .ant-calendar-time-picker-input-disabled:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+.ant-calendar-range .ant-calendar-input[disabled], .ant-calendar-range .ant-calendar-time-picker-input[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-calendar-range .ant-calendar-input[disabled]:hover, .ant-calendar-range .ant-calendar-time-picker-input[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+textarea.ant-calendar-range .ant-calendar-input, textarea.ant-calendar-range .ant-calendar-time-picker-input {
+ max-width: 100%;
+ height: auto;
+ min-height: 32px;
+ line-height: 1.5;
+ vertical-align: bottom;
+ -webkit-transition: all .3s,height 0s;
+ transition: all .3s,height 0s
+}
+
+.ant-calendar-range .ant-calendar-input-lg, .ant-calendar-range .ant-calendar-time-picker-input-lg {
+ height: 40px;
+ padding: 6px 11px;
+ font-size: 16px
+}
+
+.ant-calendar-range .ant-calendar-input-sm, .ant-calendar-range .ant-calendar-time-picker-input-sm {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-calendar-range .ant-calendar-input:focus, .ant-calendar-range .ant-calendar-time-picker-input:focus {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.ant-calendar-range .ant-calendar-time-picker-icon {
+ display: none
+}
+
+.ant-calendar-range.ant-calendar-week-number {
+ width: 574px
+}
+
+ .ant-calendar-range.ant-calendar-week-number .ant-calendar-range-part {
+ width: 286px
+ }
+
+.ant-calendar-range .ant-calendar-decade-panel, .ant-calendar-range .ant-calendar-month-panel, .ant-calendar-range .ant-calendar-year-panel {
+ top: 34px
+}
+
+ .ant-calendar-range .ant-calendar-month-panel .ant-calendar-year-panel {
+ top: 0
+ }
+
+.ant-calendar-range .ant-calendar-decade-panel-table, .ant-calendar-range .ant-calendar-month-panel-table, .ant-calendar-range .ant-calendar-year-panel-table {
+ height: 208px
+}
+
+.ant-calendar-range .ant-calendar-in-range-cell {
+ position: relative;
+ border-radius: 0
+}
+
+ .ant-calendar-range .ant-calendar-in-range-cell > div {
+ position: relative;
+ z-index: 1
+ }
+
+ .ant-calendar-range .ant-calendar-in-range-cell:before {
+ position: absolute;
+ top: 4px;
+ right: 0;
+ bottom: 4px;
+ left: 0;
+ display: block;
+ background: #fff2e8;
+ border: 0;
+ border-radius: 0;
+ content: ""
+ }
+
+.ant-calendar-range .ant-calendar-footer-extra {
+ float: left
+}
+
+div.ant-calendar-range-quick-selector {
+ text-align: left
+}
+
+ div.ant-calendar-range-quick-selector > a {
+ margin-right: 8px
+ }
+
+.ant-calendar-range .ant-calendar-decade-panel-header, .ant-calendar-range .ant-calendar-header, .ant-calendar-range .ant-calendar-month-panel-header, .ant-calendar-range .ant-calendar-year-panel-header {
+ border-bottom: 0
+}
+
+.ant-calendar-range .ant-calendar-body, .ant-calendar-range .ant-calendar-decade-panel-body, .ant-calendar-range .ant-calendar-month-panel-body, .ant-calendar-range .ant-calendar-year-panel-body {
+ border-top: 1px solid #e8e8e8
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker {
+ top: 68px;
+ z-index: 2;
+ width: 100%;
+ height: 207px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-panel {
+ height: 267px;
+ margin-top: -34px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-inner {
+ height: 100%;
+ padding-top: 40px;
+ background: none
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-combobox {
+ display: inline-block;
+ height: 100%;
+ background-color: #fff;
+ border-top: 1px solid #e8e8e8
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select {
+ height: 100%
+}
+
+ .ant-calendar-range.ant-calendar-time .ant-calendar-time-picker-select ul {
+ max-height: 100%
+ }
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {
+ margin-right: 8px
+}
+
+.ant-calendar-range.ant-calendar-time .ant-calendar-today-btn {
+ height: 22px;
+ margin: 8px 12px;
+ line-height: 22px
+}
+
+.ant-calendar-range-with-ranges.ant-calendar-time .ant-calendar-time-picker {
+ height: 233px
+}
+
+.ant-calendar-range.ant-calendar-show-time-picker .ant-calendar-body {
+ border-top-color: transparent
+}
+
+.ant-calendar-time-picker {
+ position: absolute;
+ top: 40px;
+ width: 100%;
+ background-color: #fff
+}
+
+.ant-calendar-time-picker-panel {
+ position: absolute;
+ z-index: 1050;
+ width: 100%
+}
+
+.ant-calendar-time-picker-inner {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ font-size: 14px;
+ line-height: 1.5;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ outline: none
+}
+
+.ant-calendar-time-picker-column-1, .ant-calendar-time-picker-column-1 .ant-calendar-time-picker-select, .ant-calendar-time-picker-combobox {
+ width: 100%
+}
+
+.ant-calendar-time-picker-column-2 .ant-calendar-time-picker-select {
+ width: 50%
+}
+
+.ant-calendar-time-picker-column-3 .ant-calendar-time-picker-select {
+ width: 33.33%
+}
+
+.ant-calendar-time-picker-column-4 .ant-calendar-time-picker-select {
+ width: 25%
+}
+
+.ant-calendar-time-picker-input-wrap {
+ display: none
+}
+
+.ant-calendar-time-picker-select {
+ position: relative;
+ float: left;
+ height: 226px;
+ overflow: hidden;
+ font-size: 14px;
+ border-right: 1px solid #e8e8e8
+}
+
+ .ant-calendar-time-picker-select:hover {
+ overflow-y: auto
+ }
+
+ .ant-calendar-time-picker-select:first-child {
+ margin-left: 0;
+ border-left: 0
+ }
+
+ .ant-calendar-time-picker-select:last-child {
+ border-right: 0
+ }
+
+ .ant-calendar-time-picker-select ul {
+ width: 100%;
+ max-height: 206px;
+ margin: 0;
+ padding: 0;
+ list-style: none
+ }
+
+ .ant-calendar-time-picker-select li {
+ width: 100%;
+ height: 24px;
+ margin: 0;
+ line-height: 24px;
+ text-align: center;
+ list-style: none;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+ }
+
+ .ant-calendar-time-picker-select li:last-child:after {
+ display: block;
+ height: 202px;
+ content: ""
+ }
+
+ .ant-calendar-time-picker-select li:hover {
+ background: #fff2e8
+ }
+
+ .ant-calendar-time-picker-select li:focus {
+ color: #fa541c;
+ font-weight: 600;
+ outline: none
+ }
+
+li.ant-calendar-time-picker-select-option-selected {
+ font-weight: 600;
+ background: #f5f5f5
+}
+
+li.ant-calendar-time-picker-select-option-disabled {
+ color: rgba(0,0,0,.25)
+}
+
+ li.ant-calendar-time-picker-select-option-disabled:hover {
+ background: transparent;
+ cursor: not-allowed
+ }
+
+.ant-calendar-time .ant-calendar-day-select {
+ display: inline-block;
+ padding: 0 2px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 34px
+}
+
+.ant-calendar-time .ant-calendar-footer {
+ position: relative;
+ height: auto
+}
+
+.ant-calendar-time .ant-calendar-footer-btn {
+ text-align: right
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-today-btn {
+ float: left;
+ margin: 0
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn {
+ display: inline-block;
+ margin-right: 8px
+}
+
+.ant-calendar-time .ant-calendar-footer .ant-calendar-time-picker-btn-disabled {
+ color: rgba(0,0,0,.25)
+}
+
+.ant-calendar-month-panel {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 10;
+ background: #fff;
+ border-radius: 2px;
+ outline: none
+}
+
+ .ant-calendar-month-panel > div {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ height: 100%
+ }
+
+.ant-calendar-month-panel-hidden {
+ display: none
+}
+
+.ant-calendar-month-panel-header {
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative
+}
+
+ .ant-calendar-month-panel-header a:hover {
+ color: #ff7a45
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-century-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-month-select, .ant-calendar-month-panel-header .ant-calendar-month-panel-year-select {
+ display: inline-block;
+ padding: 0 2px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 40px
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-century-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-decade-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-month-select-arrow, .ant-calendar-month-panel-header .ant-calendar-month-panel-year-select-arrow {
+ display: none
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn {
+ position: absolute;
+ top: 0;
+ display: inline-block;
+ padding: 0 5px;
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+ line-height: 40px
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn {
+ left: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-year-btn:after {
+ display: none;
+ position: relative;
+ left: -3px;
+ display: inline-block
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn {
+ right: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:hover:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after {
+ display: none
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:before, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:before {
+ position: relative;
+ left: 3px
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-century-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-decade-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-year-btn:after {
+ display: inline-block
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn {
+ left: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-prev-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn {
+ right: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:after, .ant-calendar-month-panel-header .ant-calendar-month-panel-next-month-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+.ant-calendar-month-panel-body {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+}
+
+.ant-calendar-month-panel-footer {
+ border-top: 1px solid #e8e8e8
+}
+
+ .ant-calendar-month-panel-footer .ant-calendar-footer-extra {
+ padding: 0 12px
+ }
+
+.ant-calendar-month-panel-table {
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+ border-collapse: separate
+}
+
+.ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month, .ant-calendar-month-panel-selected-cell .ant-calendar-month-panel-month:hover {
+ color: #fff;
+ background: #fa541c
+}
+
+.ant-calendar-month-panel-cell {
+ text-align: center
+}
+
+.ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month, .ant-calendar-month-panel-cell-disabled .ant-calendar-month-panel-month:hover {
+ color: rgba(0,0,0,.25);
+ background: #f5f5f5;
+ cursor: not-allowed
+}
+
+.ant-calendar-month-panel-month {
+ display: inline-block;
+ height: 24px;
+ margin: 0 auto;
+ padding: 0 8px;
+ color: rgba(0,0,0,.65);
+ line-height: 24px;
+ text-align: center;
+ background: transparent;
+ border-radius: 2px;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-calendar-month-panel-month:hover {
+ background: #fff2e8;
+ cursor: pointer
+ }
+
+.ant-calendar-year-panel {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 10;
+ background: #fff;
+ border-radius: 2px;
+ outline: none
+}
+
+ .ant-calendar-year-panel > div {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ height: 100%
+ }
+
+.ant-calendar-year-panel-hidden {
+ display: none
+}
+
+.ant-calendar-year-panel-header {
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative
+}
+
+ .ant-calendar-year-panel-header a:hover {
+ color: #ff7a45
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-century-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-month-select, .ant-calendar-year-panel-header .ant-calendar-year-panel-year-select {
+ display: inline-block;
+ padding: 0 2px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 40px
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-century-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-decade-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-month-select-arrow, .ant-calendar-year-panel-header .ant-calendar-year-panel-year-select-arrow {
+ display: none
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn {
+ position: absolute;
+ top: 0;
+ display: inline-block;
+ padding: 0 5px;
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+ line-height: 40px
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn {
+ left: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-year-btn:after {
+ display: none;
+ position: relative;
+ left: -3px;
+ display: inline-block
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn {
+ right: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:hover:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after {
+ display: none
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:before, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:before {
+ position: relative;
+ left: 3px
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-century-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-decade-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-year-btn:after {
+ display: inline-block
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn {
+ left: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-prev-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn {
+ right: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:after, .ant-calendar-year-panel-header .ant-calendar-year-panel-next-month-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+.ant-calendar-year-panel-body {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+}
+
+.ant-calendar-year-panel-footer {
+ border-top: 1px solid #e8e8e8
+}
+
+ .ant-calendar-year-panel-footer .ant-calendar-footer-extra {
+ padding: 0 12px
+ }
+
+.ant-calendar-year-panel-table {
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+ border-collapse: separate
+}
+
+.ant-calendar-year-panel-cell {
+ text-align: center
+}
+
+.ant-calendar-year-panel-year {
+ display: inline-block;
+ height: 24px;
+ margin: 0 auto;
+ padding: 0 8px;
+ color: rgba(0,0,0,.65);
+ line-height: 24px;
+ text-align: center;
+ background: transparent;
+ border-radius: 2px;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-calendar-year-panel-year:hover {
+ background: #fff2e8;
+ cursor: pointer
+ }
+
+.ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-selected-cell .ant-calendar-year-panel-year:hover {
+ color: #fff;
+ background: #fa541c
+}
+
+.ant-calendar-year-panel-last-decade-cell .ant-calendar-year-panel-year, .ant-calendar-year-panel-next-decade-cell .ant-calendar-year-panel-year {
+ color: rgba(0,0,0,.25);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-calendar-decade-panel {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 10;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ background: #fff;
+ border-radius: 2px;
+ outline: none
+}
+
+.ant-calendar-decade-panel-hidden {
+ display: none
+}
+
+.ant-calendar-decade-panel-header {
+ height: 40px;
+ line-height: 40px;
+ text-align: center;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ position: relative
+}
+
+ .ant-calendar-decade-panel-header a:hover {
+ color: #ff7a45
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select {
+ display: inline-block;
+ padding: 0 2px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ line-height: 40px
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-century-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-decade-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-month-select-arrow, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-year-select-arrow {
+ display: none
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn {
+ position: absolute;
+ top: 0;
+ display: inline-block;
+ padding: 0 5px;
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ font-family: Arial,Hiragino Sans GB,Microsoft Yahei,"Microsoft Sans Serif",sans-serif;
+ line-height: 40px
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn {
+ left: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-year-btn:after {
+ display: none;
+ position: relative;
+ left: -3px;
+ display: inline-block
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn {
+ right: 7px;
+ height: 100%
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:hover:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after {
+ display: none
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:before, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:before {
+ position: relative;
+ left: 3px
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-century-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-decade-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-year-btn:after {
+ display: inline-block
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn {
+ left: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-prev-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn {
+ right: 29px;
+ height: 100%
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:before {
+ position: relative;
+ top: -1px;
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ vertical-align: middle;
+ border: 0 solid #aaa;
+ border-width: 1.5px 0 0 1.5px;
+ border-radius: 1px;
+ -webkit-transform: rotate(-45deg) scale(.8);
+ transform: rotate(-45deg) scale(.8);
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:hover:before {
+ border-color: rgba(0,0,0,.65)
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after {
+ display: none
+ }
+
+ .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:after, .ant-calendar-decade-panel-header .ant-calendar-decade-panel-next-month-btn:before {
+ -webkit-transform: rotate(135deg) scale(.8);
+ transform: rotate(135deg) scale(.8)
+ }
+
+.ant-calendar-decade-panel-body {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+}
+
+.ant-calendar-decade-panel-footer {
+ border-top: 1px solid #e8e8e8
+}
+
+ .ant-calendar-decade-panel-footer .ant-calendar-footer-extra {
+ padding: 0 12px
+ }
+
+.ant-calendar-decade-panel-table {
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+ border-collapse: separate
+}
+
+.ant-calendar-decade-panel-cell {
+ white-space: nowrap;
+ text-align: center
+}
+
+.ant-calendar-decade-panel-decade {
+ display: inline-block;
+ height: 24px;
+ margin: 0 auto;
+ padding: 0 6px;
+ color: rgba(0,0,0,.65);
+ line-height: 24px;
+ text-align: center;
+ background: transparent;
+ border-radius: 2px;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-calendar-decade-panel-decade:hover {
+ background: #fff2e8;
+ cursor: pointer
+ }
+
+.ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-selected-cell .ant-calendar-decade-panel-decade:hover {
+ color: #fff;
+ background: #fa541c
+}
+
+.ant-calendar-decade-panel-last-century-cell .ant-calendar-decade-panel-decade, .ant-calendar-decade-panel-next-century-cell .ant-calendar-decade-panel-decade {
+ color: rgba(0,0,0,.25);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-calendar-month .ant-calendar-month-header-wrap {
+ position: relative;
+ height: 288px
+}
+
+.ant-calendar-month .ant-calendar-month-panel, .ant-calendar-month .ant-calendar-year-panel {
+ top: 0;
+ height: 100%
+}
+
+.ant-calendar-week-number-cell {
+ opacity: .5
+}
+
+.ant-calendar-week-number .ant-calendar-body tr {
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-calendar-week-number .ant-calendar-body tr:hover {
+ background: #fff2e8
+ }
+
+ .ant-calendar-week-number .ant-calendar-body tr.ant-calendar-active-week {
+ font-weight: 700;
+ background: #ffd8bf
+ }
+
+ .ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day .ant-calendar-date, .ant-calendar-week-number .ant-calendar-body tr .ant-calendar-selected-day:hover .ant-calendar-date {
+ color: rgba(0,0,0,.65);
+ background: transparent
+ }
+
+.ant-descriptions-title {
+ margin-bottom: 20px;
+ color: rgba(0,0,0,.85);
+ font-weight: 700;
+ font-size: 16px;
+ line-height: 1.5
+}
+
+.ant-descriptions-view {
+ width: 100%;
+ overflow: hidden;
+ border-radius: 2px
+}
+
+ .ant-descriptions-view table {
+ width: 100%;
+ table-layout: fixed
+ }
+
+.ant-descriptions-row > td, .ant-descriptions-row > th {
+ padding-bottom: 16px
+}
+
+.ant-descriptions-row:last-child {
+ border-bottom: none
+}
+
+.ant-descriptions-item-label {
+ color: rgba(0,0,0,.85);
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 1.5
+}
+
+ .ant-descriptions-item-label:after {
+ position: relative;
+ top: -.5px;
+ margin: 0 8px 0 2px;
+ content: " "
+ }
+
+.ant-descriptions-item-colon:after {
+ content: ":"
+}
+
+.ant-descriptions-item-no-label:after {
+ margin: 0;
+ content: ""
+}
+
+.ant-descriptions-item-content {
+ display: table-cell;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5
+}
+
+.ant-descriptions-item {
+ padding-bottom: 0
+}
+
+ .ant-descriptions-item > span {
+ display: inline-block
+ }
+
+.ant-descriptions-middle .ant-descriptions-row > td, .ant-descriptions-middle .ant-descriptions-row > th {
+ padding-bottom: 12px
+}
+
+.ant-descriptions-small .ant-descriptions-row > td, .ant-descriptions-small .ant-descriptions-row > th {
+ padding-bottom: 8px
+}
+
+.ant-descriptions-bordered .ant-descriptions-view {
+ border: 1px solid #e8e8e8
+}
+
+ .ant-descriptions-bordered .ant-descriptions-view > table {
+ table-layout: auto
+ }
+
+.ant-descriptions-bordered .ant-descriptions-item-content, .ant-descriptions-bordered .ant-descriptions-item-label {
+ padding: 16px 24px;
+ border-right: 1px solid #e8e8e8
+}
+
+ .ant-descriptions-bordered .ant-descriptions-item-content:last-child, .ant-descriptions-bordered .ant-descriptions-item-label:last-child {
+ border-right: none
+ }
+
+.ant-descriptions-bordered .ant-descriptions-item-label {
+ background-color: #fafafa
+}
+
+ .ant-descriptions-bordered .ant-descriptions-item-label:after {
+ display: none
+ }
+
+.ant-descriptions-bordered .ant-descriptions-row {
+ border-bottom: 1px solid #e8e8e8
+}
+
+ .ant-descriptions-bordered .ant-descriptions-row:last-child {
+ border-bottom: none
+ }
+
+.ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-content, .ant-descriptions-bordered.ant-descriptions-middle .ant-descriptions-item-label {
+ padding: 12px 24px
+}
+
+.ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-content, .ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label {
+ padding: 8px 16px
+}
+
+.ant-divider {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ background: #e8e8e8
+}
+
+.ant-divider, .ant-divider-vertical {
+ position: relative;
+ top: -.06em;
+ display: inline-block;
+ width: 1px;
+ height: .9em;
+ margin: 0 8px;
+ vertical-align: middle
+}
+
+.ant-divider-horizontal {
+ display: block;
+ clear: both;
+ width: 100%;
+ min-width: 100%;
+ height: 1px;
+ margin: 24px 0
+}
+
+ .ant-divider-horizontal.ant-divider-with-text-center, .ant-divider-horizontal.ant-divider-with-text-left, .ant-divider-horizontal.ant-divider-with-text-right {
+ display: table;
+ margin: 16px 0;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ white-space: nowrap;
+ text-align: center;
+ background: transparent
+ }
+
+ .ant-divider-horizontal.ant-divider-with-text-center:after, .ant-divider-horizontal.ant-divider-with-text-center:before, .ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-left:before, .ant-divider-horizontal.ant-divider-with-text-right:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+ position: relative;
+ top: 50%;
+ display: table-cell;
+ width: 50%;
+ border-top: 1px solid #e8e8e8;
+ -webkit-transform: translateY(50%);
+ transform: translateY(50%);
+ content: ""
+ }
+
+ .ant-divider-horizontal.ant-divider-with-text-left .ant-divider-inner-text, .ant-divider-horizontal.ant-divider-with-text-right .ant-divider-inner-text {
+ display: inline-block;
+ padding: 0 10px
+ }
+
+ .ant-divider-horizontal.ant-divider-with-text-left:before {
+ top: 50%;
+ width: 5%
+ }
+
+ .ant-divider-horizontal.ant-divider-with-text-left:after, .ant-divider-horizontal.ant-divider-with-text-right:before {
+ top: 50%;
+ width: 95%
+ }
+
+ .ant-divider-horizontal.ant-divider-with-text-right:after {
+ top: 50%;
+ width: 5%
+ }
+
+.ant-divider-inner-text {
+ display: inline-block;
+ padding: 0 24px
+}
+
+.ant-divider-dashed {
+ background: none;
+ border-color: #e8e8e8;
+ border-style: dashed;
+ border-width: 1px 0 0
+}
+
+.ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed {
+ border-top: 0
+}
+
+ .ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-center.ant-divider-dashed:before, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-left.ant-divider-dashed:before, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:after, .ant-divider-horizontal.ant-divider-with-text-right.ant-divider-dashed:before {
+ border-style: dashed none none
+ }
+
+.ant-divider-vertical.ant-divider-dashed {
+ border-width: 0 0 0 1px
+}
+
+.ant-drawer {
+ position: fixed;
+ z-index: 1000;
+ width: 0;
+ height: 100%;
+ -webkit-transition: height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),height 0s ease .3s,width 0s ease .3s;
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),height 0s ease .3s,width 0s ease .3s,-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+}
+
+ .ant-drawer > * {
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1);
+ transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),box-shadow .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),box-shadow .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1),-webkit-box-shadow .3s cubic-bezier(.7,.3,.1,1)
+ }
+
+.ant-drawer-content-wrapper {
+ position: absolute
+}
+
+.ant-drawer .ant-drawer-content {
+ width: 100%;
+ height: 100%
+}
+
+.ant-drawer-left, .ant-drawer-right {
+ top: 0;
+ width: 0;
+ height: 100%
+}
+
+ .ant-drawer-left .ant-drawer-content-wrapper, .ant-drawer-right .ant-drawer-content-wrapper {
+ height: 100%
+ }
+
+ .ant-drawer-left.ant-drawer-open, .ant-drawer-right.ant-drawer-open {
+ width: 100%;
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+ }
+
+ .ant-drawer-left.ant-drawer-open.no-mask, .ant-drawer-right.ant-drawer-open.no-mask {
+ width: 0
+ }
+
+ .ant-drawer-left.ant-drawer-open .ant-drawer-content-wrapper {
+ -webkit-box-shadow: 2px 0 8px rgba(0,0,0,.15);
+ box-shadow: 2px 0 8px rgba(0,0,0,.15)
+ }
+
+ .ant-drawer-right, .ant-drawer-right .ant-drawer-content-wrapper {
+ right: 0
+ }
+
+ .ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
+ -webkit-box-shadow: -2px 0 8px rgba(0,0,0,.15);
+ box-shadow: -2px 0 8px rgba(0,0,0,.15)
+ }
+
+ .ant-drawer-right.ant-drawer-open.no-mask {
+ right: 1px;
+ -webkit-transform: translateX(1px);
+ transform: translateX(1px)
+ }
+
+.ant-drawer-bottom, .ant-drawer-top {
+ left: 0;
+ width: 100%;
+ height: 0%
+}
+
+ .ant-drawer-bottom .ant-drawer-content-wrapper, .ant-drawer-top .ant-drawer-content-wrapper {
+ width: 100%
+ }
+
+ .ant-drawer-bottom.ant-drawer-open, .ant-drawer-top.ant-drawer-open {
+ height: 100%;
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: -webkit-transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1);
+ transition: transform .3s cubic-bezier(.7,.3,.1,1),-webkit-transform .3s cubic-bezier(.7,.3,.1,1)
+ }
+
+ .ant-drawer-bottom.ant-drawer-open.no-mask, .ant-drawer-top.ant-drawer-open.no-mask {
+ height: 0%
+ }
+
+.ant-drawer-top {
+ top: 0
+}
+
+ .ant-drawer-top.ant-drawer-open .ant-drawer-content-wrapper {
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+ }
+
+.ant-drawer-bottom, .ant-drawer-bottom .ant-drawer-content-wrapper {
+ bottom: 0
+}
+
+ .ant-drawer-bottom.ant-drawer-open .ant-drawer-content-wrapper {
+ -webkit-box-shadow: 0 -2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 -2px 8px rgba(0,0,0,.15)
+ }
+
+ .ant-drawer-bottom.ant-drawer-open.no-mask {
+ bottom: 1px;
+ -webkit-transform: translateY(1px);
+ transform: translateY(1px)
+ }
+
+.ant-drawer.ant-drawer-open .ant-drawer-mask {
+ height: 100%;
+ opacity: 1;
+ -webkit-transition: none;
+ transition: none;
+ -webkit-animation: antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1);
+ animation: antdDrawerFadeIn .3s cubic-bezier(.7,.3,.1,1)
+}
+
+.ant-drawer-title {
+ margin: 0;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 22px
+}
+
+.ant-drawer-content {
+ position: relative;
+ z-index: 1;
+ overflow: auto;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0
+}
+
+.ant-drawer-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 10;
+ display: block;
+ width: 56px;
+ height: 56px;
+ padding: 0;
+ color: rgba(0,0,0,.45);
+ font-weight: 700;
+ font-size: 16px;
+ font-style: normal;
+ line-height: 56px;
+ text-align: center;
+ text-transform: none;
+ text-decoration: none;
+ background: transparent;
+ border: 0;
+ outline: 0;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ text-rendering: auto
+}
+
+ .ant-drawer-close:focus, .ant-drawer-close:hover {
+ color: rgba(0,0,0,.75);
+ text-decoration: none
+ }
+
+.ant-drawer-header {
+ position: relative;
+ padding: 16px 24px;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 2px 2px 0 0
+}
+
+.ant-drawer-header, .ant-drawer-header-no-title {
+ color: rgba(0,0,0,.65);
+ background: #fff
+}
+
+.ant-drawer-body {
+ padding: 24px;
+ font-size: 14px;
+ line-height: 1.5;
+ word-wrap: break-word
+}
+
+.ant-drawer-wrapper-body {
+ height: 100%;
+ overflow: auto
+}
+
+.ant-drawer-mask {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 0;
+ background-color: rgba(0,0,0,.45);
+ opacity: 0;
+ filter: alpha(opacity=45);
+ -webkit-transition: opacity .3s linear,height 0s ease .3s;
+ transition: opacity .3s linear,height 0s ease .3s
+}
+
+.ant-drawer-open-content {
+ -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ box-shadow: 0 4px 12px rgba(0,0,0,.15)
+}
+
+@-webkit-keyframes antdDrawerFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antdDrawerFadeIn {
+ 0% {
+ opacity: 0
+ }
+
+ to {
+ opacity: 1
+ }
+}
+
+.ant-dropdown {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ z-index: 1050;
+ display: block
+}
+
+ .ant-dropdown:before {
+ position: absolute;
+ top: -7px;
+ right: 0;
+ bottom: -7px;
+ left: -7px;
+ z-index: -9999;
+ opacity: .0001;
+ content: " "
+ }
+
+.ant-dropdown-wrap {
+ position: relative
+}
+
+ .ant-dropdown-wrap .ant-btn > .anticon-down {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+ }
+
+:root .ant-dropdown-wrap .ant-btn > .anticon-down {
+ font-size: 12px
+}
+
+.ant-dropdown-wrap .anticon-down:before {
+ -webkit-transition: -webkit-transform .2s;
+ transition: -webkit-transform .2s;
+ transition: transform .2s;
+ transition: transform .2s,-webkit-transform .2s
+}
+
+.ant-dropdown-wrap-open .anticon-down:before {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg)
+}
+
+.ant-dropdown-hidden, .ant-dropdown-menu-hidden {
+ display: none
+}
+
+.ant-dropdown-menu {
+ position: relative;
+ margin: 0;
+ padding: 4px 0;
+ text-align: left;
+ list-style-type: none;
+ background-color: #fff;
+ background-clip: padding-box;
+ border-radius: 2px;
+ outline: none;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ -webkit-transform: translateZ(0)
+}
+
+.ant-dropdown-menu-item-group-title {
+ padding: 5px 12px;
+ color: rgba(0,0,0,.45);
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-dropdown-menu-submenu-popup {
+ position: absolute;
+ z-index: 1050
+}
+
+ .ant-dropdown-menu-submenu-popup > .ant-dropdown-menu {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+ }
+
+ .ant-dropdown-menu-submenu-popup li, .ant-dropdown-menu-submenu-popup ul {
+ list-style: none
+ }
+
+ .ant-dropdown-menu-submenu-popup ul {
+ margin-right: .3em;
+ margin-left: .3em;
+ padding: 0
+ }
+
+.ant-dropdown-menu-item, .ant-dropdown-menu-submenu-title {
+ clear: both;
+ margin: 0;
+ padding: 5px 12px;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 22px;
+ white-space: nowrap;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-dropdown-menu-item > .anticon:first-child, .ant-dropdown-menu-item > span > .anticon:first-child, .ant-dropdown-menu-submenu-title > .anticon:first-child, .ant-dropdown-menu-submenu-title > span > .anticon:first-child {
+ min-width: 12px;
+ margin-right: 8px;
+ font-size: 12px
+ }
+
+ .ant-dropdown-menu-item > a, .ant-dropdown-menu-submenu-title > a {
+ display: block;
+ margin: -5px -12px;
+ padding: 5px 12px;
+ color: rgba(0,0,0,.65);
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+.ant-dropdown-menu-item-selected, .ant-dropdown-menu-item-selected > a, .ant-dropdown-menu-submenu-title-selected, .ant-dropdown-menu-submenu-title-selected > a {
+ color: #fa541c;
+ background-color: #fff2e8
+}
+
+.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover {
+ background-color: #fff2e8
+}
+
+.ant-dropdown-menu-item-disabled, .ant-dropdown-menu-submenu-title-disabled {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+ .ant-dropdown-menu-item-disabled:hover, .ant-dropdown-menu-submenu-title-disabled:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #fff;
+ cursor: not-allowed
+ }
+
+.ant-dropdown-menu-item-divider, .ant-dropdown-menu-submenu-title-divider {
+ height: 1px;
+ margin: 4px 0;
+ overflow: hidden;
+ line-height: 0;
+ background-color: #e8e8e8
+}
+
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow, .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow {
+ position: absolute;
+ right: 8px
+}
+
+.ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+ color: rgba(0,0,0,.45);
+ font-style: normal;
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow-icon, :root .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+ font-size: 12px
+}
+
+.ant-dropdown-menu-item-group-list {
+ margin: 0 8px;
+ padding: 0;
+ list-style: none
+}
+
+.ant-dropdown-menu-submenu-title {
+ padding-right: 26px
+}
+
+.ant-dropdown-menu-submenu-vertical {
+ position: relative
+}
+
+ .ant-dropdown-menu-submenu-vertical > .ant-dropdown-menu {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ min-width: 100%;
+ margin-left: 4px;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+ }
+
+.ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-submenu.ant-dropdown-menu-submenu-disabled .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow-icon {
+ color: rgba(0,0,0,.25);
+ background-color: #fff;
+ cursor: not-allowed
+}
+
+.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title {
+ color: #fa541c
+}
+
+.ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-appear.slide-down-appear-active.ant-dropdown-placement-bottomRight, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-enter.slide-down-enter-active.ant-dropdown-placement-bottomRight {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn
+}
+
+.ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-appear.slide-up-appear-active.ant-dropdown-placement-topRight, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-enter.slide-up-enter-active.ant-dropdown-placement-topRight {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn
+}
+
+.ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomCenter, .ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomLeft, .ant-dropdown.slide-down-leave.slide-down-leave-active.ant-dropdown-placement-bottomRight {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut
+}
+
+.ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topCenter, .ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topLeft, .ant-dropdown.slide-up-leave.slide-up-leave-active.ant-dropdown-placement-topRight {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut
+}
+
+.ant-dropdown-link > .anticon.anticon-down, .ant-dropdown-trigger > .anticon.anticon-down {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-dropdown-link > .anticon.anticon-down, :root .ant-dropdown-trigger > .anticon.anticon-down {
+ font-size: 12px
+}
+
+.ant-dropdown-button {
+ white-space: nowrap
+}
+
+ .ant-dropdown-button.ant-btn-group > .ant-btn:last-child:not(:first-child) {
+ padding-right: 8px;
+ padding-left: 8px
+ }
+
+ .ant-dropdown-button .anticon.anticon-down {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+ }
+
+:root .ant-dropdown-button .anticon.anticon-down {
+ font-size: 12px
+}
+
+.ant-dropdown-menu-dark, .ant-dropdown-menu-dark .ant-dropdown-menu {
+ background: #001529
+}
+
+ .ant-dropdown-menu-dark .ant-dropdown-menu-item, .ant-dropdown-menu-dark .ant-dropdown-menu-item .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a .ant-dropdown-menu-submenu-arrow:after, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-arrow:after {
+ color: hsla(0,0%,100%,.65)
+ }
+
+ .ant-dropdown-menu-dark .ant-dropdown-menu-item:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item > a:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-submenu-title:hover {
+ color: #fff;
+ background: transparent
+ }
+
+ .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected:hover, .ant-dropdown-menu-dark .ant-dropdown-menu-item-selected > a {
+ color: #fff;
+ background: #fa541c
+ }
+
+.ant-empty {
+ margin: 0 8px;
+ font-size: 14px;
+ line-height: 22px;
+ text-align: center
+}
+
+.ant-empty-image {
+ height: 100px;
+ margin-bottom: 8px
+}
+
+ .ant-empty-image img {
+ height: 100%
+ }
+
+ .ant-empty-image svg {
+ height: 100%;
+ margin: auto
+ }
+
+.ant-empty-description {
+ margin: 0
+}
+
+.ant-empty-footer {
+ margin-top: 16px
+}
+
+.ant-empty-normal {
+ margin: 32px 0;
+ color: rgba(0,0,0,.25)
+}
+
+ .ant-empty-normal .ant-empty-image {
+ height: 40px
+ }
+
+.ant-empty-small {
+ margin: 8px 0;
+ color: rgba(0,0,0,.25)
+}
+
+ .ant-empty-small .ant-empty-image {
+ height: 35px
+ }
+
+@media (max-width:575px) {
+ .ant-form-item-control-wrapper, .ant-form-item-label {
+ display: block;
+ width: 100%
+ }
+
+ .ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-form-item-label label:after {
+ display: none
+ }
+
+ .ant-col-xs-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-xs-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:767px) {
+ .ant-col-sm-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-sm-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:991px) {
+ .ant-col-md-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-md-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:1199px) {
+ .ant-col-lg-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-lg-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:1599px) {
+ .ant-col-xl-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-xl-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@-webkit-keyframes antShowHelpIn {
+ 0% {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antShowHelpOut {
+ to {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ opacity: 0
+ }
+}
+
+@-webkit-keyframes diffZoomIn1 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@-webkit-keyframes diffZoomIn2 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@-webkit-keyframes diffZoomIn3 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+.ant-form {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+ .ant-form legend {
+ display: block;
+ width: 100%;
+ margin-bottom: 20px;
+ padding: 0;
+ color: rgba(0,0,0,.45);
+ font-size: 16px;
+ line-height: inherit;
+ border: 0;
+ border-bottom: 1px solid #d9d9d9
+ }
+
+ .ant-form label {
+ font-size: 14px
+ }
+
+ .ant-form input[type=search] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+ }
+
+ .ant-form input[type=checkbox], .ant-form input[type=radio] {
+ line-height: normal
+ }
+
+ .ant-form input[type=file] {
+ display: block
+ }
+
+ .ant-form input[type=range] {
+ display: block;
+ width: 100%
+ }
+
+ .ant-form select[multiple], .ant-form select[size] {
+ height: auto
+ }
+
+ .ant-form input[type=checkbox]:focus, .ant-form input[type=file]:focus, .ant-form input[type=radio]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px
+ }
+
+ .ant-form output {
+ display: block;
+ padding-top: 15px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5
+ }
+
+.ant-form-item-required:before {
+ display: inline-block;
+ margin-right: 4px;
+ color: #f5222d;
+ font-size: 14px;
+ font-family: SimSun,sans-serif;
+ line-height: 1;
+ content: "*"
+}
+
+.ant-form-hide-required-mark .ant-form-item-required:before {
+ display: none
+}
+
+.ant-form-item-label > label {
+ color: rgba(0,0,0,.85)
+}
+
+ .ant-form-item-label > label:after {
+ content: ":";
+ position: relative;
+ top: -.5px;
+ margin: 0 8px 0 2px
+ }
+
+ .ant-form-item-label > label.ant-form-item-no-colon:after {
+ content: " "
+ }
+
+.ant-form-item {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ margin-bottom: 24px;
+ vertical-align: top
+}
+
+ .ant-form-item label {
+ position: relative
+ }
+
+ .ant-form-item label > .anticon {
+ font-size: 14px;
+ vertical-align: top
+ }
+
+.ant-form-item-control {
+ position: relative;
+ line-height: 40px;
+ zoom: 1
+}
+
+ .ant-form-item-control:after, .ant-form-item-control:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-form-item-control:after {
+ clear: both
+ }
+
+.ant-form-item-children {
+ position: relative
+}
+
+.ant-form-item-with-help {
+ margin-bottom: 5px
+}
+
+.ant-form-item-label {
+ display: inline-block;
+ overflow: hidden;
+ line-height: 39.9999px;
+ white-space: nowrap;
+ text-align: right;
+ vertical-align: middle
+}
+
+.ant-form-item-label-left {
+ text-align: left
+}
+
+.ant-form-item .ant-switch {
+ margin: 2px 0 4px
+}
+
+.ant-form-explain, .ant-form-extra {
+ clear: both;
+ min-height: 22px;
+ margin-top: -2px;
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 1.5;
+ -webkit-transition: color .3s cubic-bezier(.215,.61,.355,1);
+ transition: color .3s cubic-bezier(.215,.61,.355,1)
+}
+
+.ant-form-explain {
+ margin-bottom: -1px
+}
+
+.ant-form-extra {
+ padding-top: 4px
+}
+
+.ant-form-text {
+ display: inline-block;
+ padding-right: 8px
+}
+
+.ant-form-split {
+ display: block;
+ text-align: center
+}
+
+form .has-feedback .ant-input {
+ padding-right: 30px
+}
+
+form .has-feedback .ant-input-affix-wrapper .ant-input-suffix {
+ padding-right: 18px
+}
+
+form .has-feedback .ant-input-affix-wrapper .ant-input {
+ padding-right: 49px
+}
+
+form .has-feedback .ant-input-affix-wrapper.ant-input-affix-wrapper-input-with-clear-btn .ant-input {
+ padding-right: 68px
+}
+
+form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-arrow, form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection__clear, form .has-feedback > .ant-select .ant-select-arrow, form .has-feedback > .ant-select .ant-select-selection__clear {
+ right: 28px
+}
+
+form .has-feedback :not(.ant-input-group-addon) > .ant-select .ant-select-selection-selected-value, form .has-feedback > .ant-select .ant-select-selection-selected-value {
+ padding-right: 42px
+}
+
+form .has-feedback .ant-cascader-picker-arrow {
+ margin-right: 17px
+}
+
+form .has-feedback .ant-calendar-picker-clear, form .has-feedback .ant-calendar-picker-icon, form .has-feedback .ant-cascader-picker-clear, form .has-feedback .ant-input-search:not(.ant-input-search-enter-button) .ant-input-suffix, form .has-feedback .ant-time-picker-clear, form .has-feedback .ant-time-picker-icon {
+ right: 28px
+}
+
+form .ant-mentions, form textarea.ant-input {
+ height: auto;
+ margin-bottom: 4px
+}
+
+form .ant-upload {
+ background: transparent
+}
+
+form input[type=checkbox], form input[type=radio] {
+ width: 14px;
+ height: 14px
+}
+
+form .ant-checkbox-inline, form .ant-radio-inline {
+ display: inline-block;
+ margin-left: 8px;
+ font-weight: 400;
+ vertical-align: middle;
+ cursor: pointer
+}
+
+ form .ant-checkbox-inline:first-child, form .ant-radio-inline:first-child {
+ margin-left: 0
+ }
+
+form .ant-checkbox-vertical, form .ant-radio-vertical {
+ display: block
+}
+
+ form .ant-checkbox-vertical + .ant-checkbox-vertical, form .ant-radio-vertical + .ant-radio-vertical {
+ margin-left: 0
+ }
+
+form .ant-input-number + .ant-form-text {
+ margin-left: 8px
+}
+
+form .ant-input-number-handler-wrap {
+ z-index: 2
+}
+
+form .ant-cascader-picker, form .ant-select {
+ width: 100%
+}
+
+form .ant-input-group .ant-cascader-picker, form .ant-input-group .ant-select {
+ width: auto
+}
+
+form .ant-input-group-wrapper, form :not(.ant-input-group-wrapper) > .ant-input-group {
+ display: inline-block;
+ vertical-align: middle
+}
+
+form:not(.ant-form-vertical) .ant-input-group-wrapper, form:not(.ant-form-vertical) :not(.ant-input-group-wrapper) > .ant-input-group {
+ position: relative;
+ top: -1px
+}
+
+.ant-col-24.ant-form-item-label, .ant-col-xl-24.ant-form-item-label, .ant-form-vertical .ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+}
+
+ .ant-col-24.ant-form-item-label label:after, .ant-col-xl-24.ant-form-item-label label:after, .ant-form-vertical .ant-form-item-label label:after {
+ display: none
+ }
+
+.ant-form-vertical .ant-form-item {
+ padding-bottom: 8px
+}
+
+.ant-form-vertical .ant-form-item-control {
+ line-height: 1.5
+}
+
+.ant-form-vertical .ant-form-explain {
+ margin-top: 2px;
+ margin-bottom: -5px
+}
+
+.ant-form-vertical .ant-form-extra {
+ margin-top: 2px;
+ margin-bottom: -4px
+}
+
+@media (max-width:575px) {
+ .ant-form-item-control-wrapper, .ant-form-item-label {
+ display: block;
+ width: 100%
+ }
+
+ .ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-form-item-label label:after {
+ display: none
+ }
+
+ .ant-col-xs-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-xs-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:767px) {
+ .ant-col-sm-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-sm-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:991px) {
+ .ant-col-md-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-md-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:1199px) {
+ .ant-col-lg-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-lg-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+@media (max-width:1599px) {
+ .ant-col-xl-24.ant-form-item-label {
+ display: block;
+ margin: 0;
+ padding: 0 0 8px;
+ line-height: 1.5;
+ white-space: normal;
+ text-align: left
+ }
+
+ .ant-col-xl-24.ant-form-item-label label:after {
+ display: none
+ }
+}
+
+.ant-form-inline .ant-form-item {
+ display: inline-block;
+ margin-right: 16px;
+ margin-bottom: 0
+}
+
+.ant-form-inline .ant-form-item-with-help {
+ margin-bottom: 24px
+}
+
+.ant-form-inline .ant-form-item > .ant-form-item-control-wrapper, .ant-form-inline .ant-form-item > .ant-form-item-label {
+ display: inline-block;
+ vertical-align: top
+}
+
+.ant-form-inline .ant-form-text, .ant-form-inline .has-feedback {
+ display: inline-block
+}
+
+.has-error.has-feedback .ant-form-item-children-icon, .has-success.has-feedback .ant-form-item-children-icon, .has-warning.has-feedback .ant-form-item-children-icon, .is-validating.has-feedback .ant-form-item-children-icon {
+ position: absolute;
+ top: 50%;
+ right: 0;
+ z-index: 1;
+ width: 32px;
+ height: 20px;
+ margin-top: -10px;
+ font-size: 14px;
+ line-height: 20px;
+ text-align: center;
+ visibility: visible;
+ -webkit-animation: zoomIn .3s cubic-bezier(.12,.4,.29,1.46);
+ animation: zoomIn .3s cubic-bezier(.12,.4,.29,1.46);
+ pointer-events: none
+}
+
+ .has-error.has-feedback .ant-form-item-children-icon svg, .has-success.has-feedback .ant-form-item-children-icon svg, .has-warning.has-feedback .ant-form-item-children-icon svg, .is-validating.has-feedback .ant-form-item-children-icon svg {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto
+ }
+
+.has-success.has-feedback .ant-form-item-children-icon {
+ color: #52c41a;
+ -webkit-animation-name: diffZoomIn1 !important;
+ animation-name: diffZoomIn1 !important
+}
+
+.has-warning .ant-form-explain, .has-warning .ant-form-split {
+ color: #faad14
+}
+
+.has-warning .ant-input, .has-warning .ant-input:hover {
+ background-color: #fff;
+ border-color: #faad14
+}
+
+ .has-warning .ant-input:focus {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+ }
+
+ .has-warning .ant-input:not([disabled]):hover {
+ border-color: #faad14
+ }
+
+.has-warning .ant-calendar-picker-open .ant-calendar-picker-input {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-input-affix-wrapper .ant-input, .has-warning .ant-input-affix-wrapper .ant-input:hover {
+ background-color: #fff;
+ border-color: #faad14
+}
+
+ .has-warning .ant-input-affix-wrapper .ant-input:focus {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+ }
+
+.has-warning .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+ border-color: #faad14
+}
+
+.has-warning .ant-input-prefix {
+ color: #faad14
+}
+
+.has-warning .ant-input-group-addon {
+ color: #faad14;
+ background-color: #fff;
+ border-color: #faad14
+}
+
+.has-warning .has-feedback {
+ color: #faad14
+}
+
+ .has-warning.has-feedback .ant-form-item-children-icon {
+ color: #faad14;
+ -webkit-animation-name: diffZoomIn3 !important;
+ animation-name: diffZoomIn3 !important
+ }
+
+.has-warning .ant-select-selection, .has-warning .ant-select-selection:hover {
+ border-color: #faad14
+}
+
+.has-warning .ant-select-focused .ant-select-selection, .has-warning .ant-select-open .ant-select-selection {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-calendar-picker-icon:after, .has-warning .ant-cascader-picker-arrow, .has-warning .ant-picker-icon:after, .has-warning .ant-select-arrow, .has-warning .ant-time-picker-icon:after {
+ color: #faad14
+}
+
+.has-warning .ant-input-number, .has-warning .ant-time-picker-input {
+ border-color: #faad14
+}
+
+ .has-warning .ant-input-number-focused, .has-warning .ant-input-number:focus, .has-warning .ant-time-picker-input-focused, .has-warning .ant-time-picker-input:focus {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+ }
+
+ .has-warning .ant-input-number:not([disabled]):hover, .has-warning .ant-time-picker-input:not([disabled]):hover {
+ border-color: #faad14
+ }
+
+.has-warning .ant-cascader-picker:focus .ant-cascader-input {
+ border-color: #ffc53d;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,173,20,.2);
+ box-shadow: 0 0 0 2px rgba(250,173,20,.2)
+}
+
+.has-warning .ant-cascader-picker:hover .ant-cascader-input {
+ border-color: #faad14
+}
+
+.has-error .ant-form-explain, .has-error .ant-form-split {
+ color: #f5222d
+}
+
+.has-error .ant-input, .has-error .ant-input:hover {
+ background-color: #fff;
+ border-color: #f5222d
+}
+
+ .has-error .ant-input:focus {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+ }
+
+ .has-error .ant-input:not([disabled]):hover {
+ border-color: #f5222d
+ }
+
+.has-error .ant-calendar-picker-open .ant-calendar-picker-input {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+}
+
+.has-error .ant-input-affix-wrapper .ant-input, .has-error .ant-input-affix-wrapper .ant-input:hover {
+ background-color: #fff;
+ border-color: #f5222d
+}
+
+ .has-error .ant-input-affix-wrapper .ant-input:focus {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+ }
+
+.has-error .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+ border-color: #f5222d
+}
+
+.has-error .ant-input-prefix {
+ color: #f5222d
+}
+
+.has-error .ant-input-group-addon {
+ color: #f5222d;
+ background-color: #fff;
+ border-color: #f5222d
+}
+
+.has-error .has-feedback {
+ color: #f5222d
+}
+
+ .has-error.has-feedback .ant-form-item-children-icon {
+ color: #f5222d;
+ -webkit-animation-name: diffZoomIn2 !important;
+ animation-name: diffZoomIn2 !important
+ }
+
+.has-error .ant-select-selection, .has-error .ant-select-selection:hover {
+ border-color: #f5222d
+}
+
+.has-error .ant-select-focused .ant-select-selection, .has-error .ant-select-open .ant-select-selection {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+}
+
+.has-error .ant-select.ant-select-auto-complete .ant-input:focus {
+ border-color: #f5222d
+}
+
+.has-error .ant-input-group-addon .ant-select-selection {
+ border-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.has-error .ant-calendar-picker-icon:after, .has-error .ant-cascader-picker-arrow, .has-error .ant-picker-icon:after, .has-error .ant-select-arrow, .has-error .ant-time-picker-icon:after {
+ color: #f5222d
+}
+
+.has-error .ant-input-number, .has-error .ant-time-picker-input {
+ border-color: #f5222d
+}
+
+ .has-error .ant-input-number-focused, .has-error .ant-input-number:focus, .has-error .ant-time-picker-input-focused, .has-error .ant-time-picker-input:focus {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+ }
+
+ .has-error .ant-input-number:not([disabled]):hover, .has-error .ant-mention-wrapper .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):hover, .has-error .ant-time-picker-input:not([disabled]):hover {
+ border-color: #f5222d
+ }
+
+ .has-error .ant-cascader-picker:focus .ant-cascader-input, .has-error .ant-mention-wrapper.ant-mention-active:not([disabled]) .ant-mention-editor, .has-error .ant-mention-wrapper .ant-mention-editor:not([disabled]):focus {
+ border-color: #ff4d4f;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(245,34,45,.2);
+ box-shadow: 0 0 0 2px rgba(245,34,45,.2)
+ }
+
+.has-error .ant-cascader-picker:hover .ant-cascader-input, .has-error .ant-transfer-list {
+ border-color: #f5222d
+}
+
+.has-error .ant-transfer-list-search:not([disabled]) {
+ border-color: #d9d9d9
+}
+
+ .has-error .ant-transfer-list-search:not([disabled]):hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .has-error .ant-transfer-list-search:not([disabled]):focus {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+.is-validating.has-feedback .ant-form-item-children-icon {
+ display: inline-block;
+ color: #fa541c
+}
+
+.ant-advanced-search-form .ant-form-item {
+ margin-bottom: 24px
+}
+
+.ant-advanced-search-form .ant-form-item-with-help {
+ margin-bottom: 5px
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+ -webkit-animation-duration: .3s;
+ animation-duration: .3s;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+ .show-help-appear.show-help-appear-active, .show-help-enter.show-help-enter-active {
+ -webkit-animation-name: antShowHelpIn;
+ animation-name: antShowHelpIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+ }
+
+ .show-help-leave.show-help-leave-active {
+ -webkit-animation-name: antShowHelpOut;
+ animation-name: antShowHelpOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running;
+ pointer-events: none
+ }
+
+.show-help-appear, .show-help-enter {
+ opacity: 0
+}
+
+.show-help-appear, .show-help-enter, .show-help-leave {
+ -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ animation-timing-function: cubic-bezier(.645,.045,.355,1)
+}
+
+@keyframes antShowHelpIn {
+ 0% {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ opacity: 0
+ }
+
+ to {
+ -webkit-transform: translateY(0);
+ transform: translateY(0);
+ opacity: 1
+ }
+}
+
+@keyframes antShowHelpOut {
+ to {
+ -webkit-transform: translateY(-5px);
+ transform: translateY(-5px);
+ opacity: 0
+ }
+}
+
+@keyframes diffZoomIn1 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@keyframes diffZoomIn2 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+@keyframes diffZoomIn3 {
+ 0% {
+ -webkit-transform: scale(0);
+ transform: scale(0)
+ }
+
+ to {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+}
+
+.ant-row {
+ position: relative;
+ height: auto;
+ margin-right: 0;
+ margin-left: 0;
+ zoom: 1;
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+ .ant-row:after, .ant-row:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-row + .ant-row:before, .ant-row:after {
+ clear: both
+ }
+
+.ant-row-flex {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-flow: row wrap;
+ flex-flow: row wrap
+}
+
+ .ant-row-flex, .ant-row-flex:after, .ant-row-flex:before {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex
+ }
+
+.ant-row-flex-start {
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start
+}
+
+.ant-row-flex-center {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center
+}
+
+.ant-row-flex-end {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end
+}
+
+.ant-row-flex-space-between {
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between
+}
+
+.ant-row-flex-space-around {
+ -ms-flex-pack: distribute;
+ justify-content: space-around
+}
+
+.ant-row-flex-top {
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start
+}
+
+.ant-row-flex-middle {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center
+}
+
+.ant-row-flex-bottom {
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end
+}
+
+.ant-col {
+ position: relative;
+ min-height: 1px
+}
+
+.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24, .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24, .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24, .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24, .ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 {
+ position: relative;
+ padding-right: 0;
+ padding-left: 0
+}
+
+.ant-col-1, .ant-col-2, .ant-col-3, .ant-col-4, .ant-col-5, .ant-col-6, .ant-col-7, .ant-col-8, .ant-col-9, .ant-col-10, .ant-col-11, .ant-col-12, .ant-col-13, .ant-col-14, .ant-col-15, .ant-col-16, .ant-col-17, .ant-col-18, .ant-col-19, .ant-col-20, .ant-col-21, .ant-col-22, .ant-col-23, .ant-col-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+}
+
+.ant-col-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+}
+
+.ant-col-push-24 {
+ left: 100%
+}
+
+.ant-col-pull-24 {
+ right: 100%
+}
+
+.ant-col-offset-24 {
+ margin-left: 100%
+}
+
+.ant-col-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+}
+
+.ant-col-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+}
+
+.ant-col-push-23 {
+ left: 95.83333333%
+}
+
+.ant-col-pull-23 {
+ right: 95.83333333%
+}
+
+.ant-col-offset-23 {
+ margin-left: 95.83333333%
+}
+
+.ant-col-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+}
+
+.ant-col-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+}
+
+.ant-col-push-22 {
+ left: 91.66666667%
+}
+
+.ant-col-pull-22 {
+ right: 91.66666667%
+}
+
+.ant-col-offset-22 {
+ margin-left: 91.66666667%
+}
+
+.ant-col-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+}
+
+.ant-col-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+}
+
+.ant-col-push-21 {
+ left: 87.5%
+}
+
+.ant-col-pull-21 {
+ right: 87.5%
+}
+
+.ant-col-offset-21 {
+ margin-left: 87.5%
+}
+
+.ant-col-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+}
+
+.ant-col-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+}
+
+.ant-col-push-20 {
+ left: 83.33333333%
+}
+
+.ant-col-pull-20 {
+ right: 83.33333333%
+}
+
+.ant-col-offset-20 {
+ margin-left: 83.33333333%
+}
+
+.ant-col-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+}
+
+.ant-col-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+}
+
+.ant-col-push-19 {
+ left: 79.16666667%
+}
+
+.ant-col-pull-19 {
+ right: 79.16666667%
+}
+
+.ant-col-offset-19 {
+ margin-left: 79.16666667%
+}
+
+.ant-col-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+}
+
+.ant-col-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+}
+
+.ant-col-push-18 {
+ left: 75%
+}
+
+.ant-col-pull-18 {
+ right: 75%
+}
+
+.ant-col-offset-18 {
+ margin-left: 75%
+}
+
+.ant-col-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+}
+
+.ant-col-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+}
+
+.ant-col-push-17 {
+ left: 70.83333333%
+}
+
+.ant-col-pull-17 {
+ right: 70.83333333%
+}
+
+.ant-col-offset-17 {
+ margin-left: 70.83333333%
+}
+
+.ant-col-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+}
+
+.ant-col-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+}
+
+.ant-col-push-16 {
+ left: 66.66666667%
+}
+
+.ant-col-pull-16 {
+ right: 66.66666667%
+}
+
+.ant-col-offset-16 {
+ margin-left: 66.66666667%
+}
+
+.ant-col-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+}
+
+.ant-col-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+}
+
+.ant-col-push-15 {
+ left: 62.5%
+}
+
+.ant-col-pull-15 {
+ right: 62.5%
+}
+
+.ant-col-offset-15 {
+ margin-left: 62.5%
+}
+
+.ant-col-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+}
+
+.ant-col-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+}
+
+.ant-col-push-14 {
+ left: 58.33333333%
+}
+
+.ant-col-pull-14 {
+ right: 58.33333333%
+}
+
+.ant-col-offset-14 {
+ margin-left: 58.33333333%
+}
+
+.ant-col-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+}
+
+.ant-col-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+}
+
+.ant-col-push-13 {
+ left: 54.16666667%
+}
+
+.ant-col-pull-13 {
+ right: 54.16666667%
+}
+
+.ant-col-offset-13 {
+ margin-left: 54.16666667%
+}
+
+.ant-col-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+}
+
+.ant-col-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+}
+
+.ant-col-push-12 {
+ left: 50%
+}
+
+.ant-col-pull-12 {
+ right: 50%
+}
+
+.ant-col-offset-12 {
+ margin-left: 50%
+}
+
+.ant-col-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+}
+
+.ant-col-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+}
+
+.ant-col-push-11 {
+ left: 45.83333333%
+}
+
+.ant-col-pull-11 {
+ right: 45.83333333%
+}
+
+.ant-col-offset-11 {
+ margin-left: 45.83333333%
+}
+
+.ant-col-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+}
+
+.ant-col-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+}
+
+.ant-col-push-10 {
+ left: 41.66666667%
+}
+
+.ant-col-pull-10 {
+ right: 41.66666667%
+}
+
+.ant-col-offset-10 {
+ margin-left: 41.66666667%
+}
+
+.ant-col-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+}
+
+.ant-col-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+}
+
+.ant-col-push-9 {
+ left: 37.5%
+}
+
+.ant-col-pull-9 {
+ right: 37.5%
+}
+
+.ant-col-offset-9 {
+ margin-left: 37.5%
+}
+
+.ant-col-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+}
+
+.ant-col-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+}
+
+.ant-col-push-8 {
+ left: 33.33333333%
+}
+
+.ant-col-pull-8 {
+ right: 33.33333333%
+}
+
+.ant-col-offset-8 {
+ margin-left: 33.33333333%
+}
+
+.ant-col-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+}
+
+.ant-col-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+}
+
+.ant-col-push-7 {
+ left: 29.16666667%
+}
+
+.ant-col-pull-7 {
+ right: 29.16666667%
+}
+
+.ant-col-offset-7 {
+ margin-left: 29.16666667%
+}
+
+.ant-col-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+}
+
+.ant-col-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+}
+
+.ant-col-push-6 {
+ left: 25%
+}
+
+.ant-col-pull-6 {
+ right: 25%
+}
+
+.ant-col-offset-6 {
+ margin-left: 25%
+}
+
+.ant-col-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+}
+
+.ant-col-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+}
+
+.ant-col-push-5 {
+ left: 20.83333333%
+}
+
+.ant-col-pull-5 {
+ right: 20.83333333%
+}
+
+.ant-col-offset-5 {
+ margin-left: 20.83333333%
+}
+
+.ant-col-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+}
+
+.ant-col-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+}
+
+.ant-col-push-4 {
+ left: 16.66666667%
+}
+
+.ant-col-pull-4 {
+ right: 16.66666667%
+}
+
+.ant-col-offset-4 {
+ margin-left: 16.66666667%
+}
+
+.ant-col-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+}
+
+.ant-col-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+}
+
+.ant-col-push-3 {
+ left: 12.5%
+}
+
+.ant-col-pull-3 {
+ right: 12.5%
+}
+
+.ant-col-offset-3 {
+ margin-left: 12.5%
+}
+
+.ant-col-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+}
+
+.ant-col-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+}
+
+.ant-col-push-2 {
+ left: 8.33333333%
+}
+
+.ant-col-pull-2 {
+ right: 8.33333333%
+}
+
+.ant-col-offset-2 {
+ margin-left: 8.33333333%
+}
+
+.ant-col-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+}
+
+.ant-col-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+}
+
+.ant-col-push-1 {
+ left: 4.16666667%
+}
+
+.ant-col-pull-1 {
+ right: 4.16666667%
+}
+
+.ant-col-offset-1 {
+ margin-left: 4.16666667%
+}
+
+.ant-col-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+}
+
+.ant-col-0 {
+ display: none
+}
+
+.ant-col-offset-0 {
+ margin-left: 0
+}
+
+.ant-col-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+}
+
+.ant-col-xs-1, .ant-col-xs-2, .ant-col-xs-3, .ant-col-xs-4, .ant-col-xs-5, .ant-col-xs-6, .ant-col-xs-7, .ant-col-xs-8, .ant-col-xs-9, .ant-col-xs-10, .ant-col-xs-11, .ant-col-xs-12, .ant-col-xs-13, .ant-col-xs-14, .ant-col-xs-15, .ant-col-xs-16, .ant-col-xs-17, .ant-col-xs-18, .ant-col-xs-19, .ant-col-xs-20, .ant-col-xs-21, .ant-col-xs-22, .ant-col-xs-23, .ant-col-xs-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+}
+
+.ant-col-xs-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+}
+
+.ant-col-xs-push-24 {
+ left: 100%
+}
+
+.ant-col-xs-pull-24 {
+ right: 100%
+}
+
+.ant-col-xs-offset-24 {
+ margin-left: 100%
+}
+
+.ant-col-xs-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+}
+
+.ant-col-xs-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+}
+
+.ant-col-xs-push-23 {
+ left: 95.83333333%
+}
+
+.ant-col-xs-pull-23 {
+ right: 95.83333333%
+}
+
+.ant-col-xs-offset-23 {
+ margin-left: 95.83333333%
+}
+
+.ant-col-xs-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+}
+
+.ant-col-xs-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+}
+
+.ant-col-xs-push-22 {
+ left: 91.66666667%
+}
+
+.ant-col-xs-pull-22 {
+ right: 91.66666667%
+}
+
+.ant-col-xs-offset-22 {
+ margin-left: 91.66666667%
+}
+
+.ant-col-xs-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+}
+
+.ant-col-xs-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+}
+
+.ant-col-xs-push-21 {
+ left: 87.5%
+}
+
+.ant-col-xs-pull-21 {
+ right: 87.5%
+}
+
+.ant-col-xs-offset-21 {
+ margin-left: 87.5%
+}
+
+.ant-col-xs-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+}
+
+.ant-col-xs-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+}
+
+.ant-col-xs-push-20 {
+ left: 83.33333333%
+}
+
+.ant-col-xs-pull-20 {
+ right: 83.33333333%
+}
+
+.ant-col-xs-offset-20 {
+ margin-left: 83.33333333%
+}
+
+.ant-col-xs-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+}
+
+.ant-col-xs-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+}
+
+.ant-col-xs-push-19 {
+ left: 79.16666667%
+}
+
+.ant-col-xs-pull-19 {
+ right: 79.16666667%
+}
+
+.ant-col-xs-offset-19 {
+ margin-left: 79.16666667%
+}
+
+.ant-col-xs-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+}
+
+.ant-col-xs-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+}
+
+.ant-col-xs-push-18 {
+ left: 75%
+}
+
+.ant-col-xs-pull-18 {
+ right: 75%
+}
+
+.ant-col-xs-offset-18 {
+ margin-left: 75%
+}
+
+.ant-col-xs-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+}
+
+.ant-col-xs-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+}
+
+.ant-col-xs-push-17 {
+ left: 70.83333333%
+}
+
+.ant-col-xs-pull-17 {
+ right: 70.83333333%
+}
+
+.ant-col-xs-offset-17 {
+ margin-left: 70.83333333%
+}
+
+.ant-col-xs-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+}
+
+.ant-col-xs-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+}
+
+.ant-col-xs-push-16 {
+ left: 66.66666667%
+}
+
+.ant-col-xs-pull-16 {
+ right: 66.66666667%
+}
+
+.ant-col-xs-offset-16 {
+ margin-left: 66.66666667%
+}
+
+.ant-col-xs-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+}
+
+.ant-col-xs-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+}
+
+.ant-col-xs-push-15 {
+ left: 62.5%
+}
+
+.ant-col-xs-pull-15 {
+ right: 62.5%
+}
+
+.ant-col-xs-offset-15 {
+ margin-left: 62.5%
+}
+
+.ant-col-xs-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+}
+
+.ant-col-xs-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+}
+
+.ant-col-xs-push-14 {
+ left: 58.33333333%
+}
+
+.ant-col-xs-pull-14 {
+ right: 58.33333333%
+}
+
+.ant-col-xs-offset-14 {
+ margin-left: 58.33333333%
+}
+
+.ant-col-xs-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+}
+
+.ant-col-xs-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+}
+
+.ant-col-xs-push-13 {
+ left: 54.16666667%
+}
+
+.ant-col-xs-pull-13 {
+ right: 54.16666667%
+}
+
+.ant-col-xs-offset-13 {
+ margin-left: 54.16666667%
+}
+
+.ant-col-xs-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+}
+
+.ant-col-xs-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+}
+
+.ant-col-xs-push-12 {
+ left: 50%
+}
+
+.ant-col-xs-pull-12 {
+ right: 50%
+}
+
+.ant-col-xs-offset-12 {
+ margin-left: 50%
+}
+
+.ant-col-xs-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+}
+
+.ant-col-xs-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+}
+
+.ant-col-xs-push-11 {
+ left: 45.83333333%
+}
+
+.ant-col-xs-pull-11 {
+ right: 45.83333333%
+}
+
+.ant-col-xs-offset-11 {
+ margin-left: 45.83333333%
+}
+
+.ant-col-xs-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+}
+
+.ant-col-xs-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+}
+
+.ant-col-xs-push-10 {
+ left: 41.66666667%
+}
+
+.ant-col-xs-pull-10 {
+ right: 41.66666667%
+}
+
+.ant-col-xs-offset-10 {
+ margin-left: 41.66666667%
+}
+
+.ant-col-xs-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+}
+
+.ant-col-xs-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+}
+
+.ant-col-xs-push-9 {
+ left: 37.5%
+}
+
+.ant-col-xs-pull-9 {
+ right: 37.5%
+}
+
+.ant-col-xs-offset-9 {
+ margin-left: 37.5%
+}
+
+.ant-col-xs-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+}
+
+.ant-col-xs-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+}
+
+.ant-col-xs-push-8 {
+ left: 33.33333333%
+}
+
+.ant-col-xs-pull-8 {
+ right: 33.33333333%
+}
+
+.ant-col-xs-offset-8 {
+ margin-left: 33.33333333%
+}
+
+.ant-col-xs-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+}
+
+.ant-col-xs-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+}
+
+.ant-col-xs-push-7 {
+ left: 29.16666667%
+}
+
+.ant-col-xs-pull-7 {
+ right: 29.16666667%
+}
+
+.ant-col-xs-offset-7 {
+ margin-left: 29.16666667%
+}
+
+.ant-col-xs-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+}
+
+.ant-col-xs-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+}
+
+.ant-col-xs-push-6 {
+ left: 25%
+}
+
+.ant-col-xs-pull-6 {
+ right: 25%
+}
+
+.ant-col-xs-offset-6 {
+ margin-left: 25%
+}
+
+.ant-col-xs-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+}
+
+.ant-col-xs-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+}
+
+.ant-col-xs-push-5 {
+ left: 20.83333333%
+}
+
+.ant-col-xs-pull-5 {
+ right: 20.83333333%
+}
+
+.ant-col-xs-offset-5 {
+ margin-left: 20.83333333%
+}
+
+.ant-col-xs-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+}
+
+.ant-col-xs-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+}
+
+.ant-col-xs-push-4 {
+ left: 16.66666667%
+}
+
+.ant-col-xs-pull-4 {
+ right: 16.66666667%
+}
+
+.ant-col-xs-offset-4 {
+ margin-left: 16.66666667%
+}
+
+.ant-col-xs-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+}
+
+.ant-col-xs-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+}
+
+.ant-col-xs-push-3 {
+ left: 12.5%
+}
+
+.ant-col-xs-pull-3 {
+ right: 12.5%
+}
+
+.ant-col-xs-offset-3 {
+ margin-left: 12.5%
+}
+
+.ant-col-xs-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+}
+
+.ant-col-xs-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+}
+
+.ant-col-xs-push-2 {
+ left: 8.33333333%
+}
+
+.ant-col-xs-pull-2 {
+ right: 8.33333333%
+}
+
+.ant-col-xs-offset-2 {
+ margin-left: 8.33333333%
+}
+
+.ant-col-xs-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+}
+
+.ant-col-xs-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+}
+
+.ant-col-xs-push-1 {
+ left: 4.16666667%
+}
+
+.ant-col-xs-pull-1 {
+ right: 4.16666667%
+}
+
+.ant-col-xs-offset-1 {
+ margin-left: 4.16666667%
+}
+
+.ant-col-xs-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+}
+
+.ant-col-xs-0 {
+ display: none
+}
+
+.ant-col-push-0 {
+ left: auto
+}
+
+.ant-col-pull-0 {
+ right: auto
+}
+
+.ant-col-xs-push-0 {
+ left: auto
+}
+
+.ant-col-xs-pull-0 {
+ right: auto
+}
+
+.ant-col-xs-offset-0 {
+ margin-left: 0
+}
+
+.ant-col-xs-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+}
+
+@media (min-width:576px) {
+ .ant-col-sm-1, .ant-col-sm-2, .ant-col-sm-3, .ant-col-sm-4, .ant-col-sm-5, .ant-col-sm-6, .ant-col-sm-7, .ant-col-sm-8, .ant-col-sm-9, .ant-col-sm-10, .ant-col-sm-11, .ant-col-sm-12, .ant-col-sm-13, .ant-col-sm-14, .ant-col-sm-15, .ant-col-sm-16, .ant-col-sm-17, .ant-col-sm-18, .ant-col-sm-19, .ant-col-sm-20, .ant-col-sm-21, .ant-col-sm-22, .ant-col-sm-23, .ant-col-sm-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+ }
+
+ .ant-col-sm-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+ }
+
+ .ant-col-sm-push-24 {
+ left: 100%
+ }
+
+ .ant-col-sm-pull-24 {
+ right: 100%
+ }
+
+ .ant-col-sm-offset-24 {
+ margin-left: 100%
+ }
+
+ .ant-col-sm-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+ }
+
+ .ant-col-sm-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+ }
+
+ .ant-col-sm-push-23 {
+ left: 95.83333333%
+ }
+
+ .ant-col-sm-pull-23 {
+ right: 95.83333333%
+ }
+
+ .ant-col-sm-offset-23 {
+ margin-left: 95.83333333%
+ }
+
+ .ant-col-sm-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+ }
+
+ .ant-col-sm-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+ }
+
+ .ant-col-sm-push-22 {
+ left: 91.66666667%
+ }
+
+ .ant-col-sm-pull-22 {
+ right: 91.66666667%
+ }
+
+ .ant-col-sm-offset-22 {
+ margin-left: 91.66666667%
+ }
+
+ .ant-col-sm-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+ }
+
+ .ant-col-sm-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+ }
+
+ .ant-col-sm-push-21 {
+ left: 87.5%
+ }
+
+ .ant-col-sm-pull-21 {
+ right: 87.5%
+ }
+
+ .ant-col-sm-offset-21 {
+ margin-left: 87.5%
+ }
+
+ .ant-col-sm-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+ }
+
+ .ant-col-sm-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+ }
+
+ .ant-col-sm-push-20 {
+ left: 83.33333333%
+ }
+
+ .ant-col-sm-pull-20 {
+ right: 83.33333333%
+ }
+
+ .ant-col-sm-offset-20 {
+ margin-left: 83.33333333%
+ }
+
+ .ant-col-sm-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+ }
+
+ .ant-col-sm-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+ }
+
+ .ant-col-sm-push-19 {
+ left: 79.16666667%
+ }
+
+ .ant-col-sm-pull-19 {
+ right: 79.16666667%
+ }
+
+ .ant-col-sm-offset-19 {
+ margin-left: 79.16666667%
+ }
+
+ .ant-col-sm-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+ }
+
+ .ant-col-sm-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+ }
+
+ .ant-col-sm-push-18 {
+ left: 75%
+ }
+
+ .ant-col-sm-pull-18 {
+ right: 75%
+ }
+
+ .ant-col-sm-offset-18 {
+ margin-left: 75%
+ }
+
+ .ant-col-sm-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+ }
+
+ .ant-col-sm-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+ }
+
+ .ant-col-sm-push-17 {
+ left: 70.83333333%
+ }
+
+ .ant-col-sm-pull-17 {
+ right: 70.83333333%
+ }
+
+ .ant-col-sm-offset-17 {
+ margin-left: 70.83333333%
+ }
+
+ .ant-col-sm-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+ }
+
+ .ant-col-sm-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+ }
+
+ .ant-col-sm-push-16 {
+ left: 66.66666667%
+ }
+
+ .ant-col-sm-pull-16 {
+ right: 66.66666667%
+ }
+
+ .ant-col-sm-offset-16 {
+ margin-left: 66.66666667%
+ }
+
+ .ant-col-sm-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+ }
+
+ .ant-col-sm-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+ }
+
+ .ant-col-sm-push-15 {
+ left: 62.5%
+ }
+
+ .ant-col-sm-pull-15 {
+ right: 62.5%
+ }
+
+ .ant-col-sm-offset-15 {
+ margin-left: 62.5%
+ }
+
+ .ant-col-sm-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+ }
+
+ .ant-col-sm-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+ }
+
+ .ant-col-sm-push-14 {
+ left: 58.33333333%
+ }
+
+ .ant-col-sm-pull-14 {
+ right: 58.33333333%
+ }
+
+ .ant-col-sm-offset-14 {
+ margin-left: 58.33333333%
+ }
+
+ .ant-col-sm-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+ }
+
+ .ant-col-sm-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+ }
+
+ .ant-col-sm-push-13 {
+ left: 54.16666667%
+ }
+
+ .ant-col-sm-pull-13 {
+ right: 54.16666667%
+ }
+
+ .ant-col-sm-offset-13 {
+ margin-left: 54.16666667%
+ }
+
+ .ant-col-sm-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+ }
+
+ .ant-col-sm-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+ }
+
+ .ant-col-sm-push-12 {
+ left: 50%
+ }
+
+ .ant-col-sm-pull-12 {
+ right: 50%
+ }
+
+ .ant-col-sm-offset-12 {
+ margin-left: 50%
+ }
+
+ .ant-col-sm-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+ }
+
+ .ant-col-sm-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+ }
+
+ .ant-col-sm-push-11 {
+ left: 45.83333333%
+ }
+
+ .ant-col-sm-pull-11 {
+ right: 45.83333333%
+ }
+
+ .ant-col-sm-offset-11 {
+ margin-left: 45.83333333%
+ }
+
+ .ant-col-sm-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+ }
+
+ .ant-col-sm-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+ }
+
+ .ant-col-sm-push-10 {
+ left: 41.66666667%
+ }
+
+ .ant-col-sm-pull-10 {
+ right: 41.66666667%
+ }
+
+ .ant-col-sm-offset-10 {
+ margin-left: 41.66666667%
+ }
+
+ .ant-col-sm-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+ }
+
+ .ant-col-sm-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+ }
+
+ .ant-col-sm-push-9 {
+ left: 37.5%
+ }
+
+ .ant-col-sm-pull-9 {
+ right: 37.5%
+ }
+
+ .ant-col-sm-offset-9 {
+ margin-left: 37.5%
+ }
+
+ .ant-col-sm-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+ }
+
+ .ant-col-sm-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+ }
+
+ .ant-col-sm-push-8 {
+ left: 33.33333333%
+ }
+
+ .ant-col-sm-pull-8 {
+ right: 33.33333333%
+ }
+
+ .ant-col-sm-offset-8 {
+ margin-left: 33.33333333%
+ }
+
+ .ant-col-sm-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+ }
+
+ .ant-col-sm-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+ }
+
+ .ant-col-sm-push-7 {
+ left: 29.16666667%
+ }
+
+ .ant-col-sm-pull-7 {
+ right: 29.16666667%
+ }
+
+ .ant-col-sm-offset-7 {
+ margin-left: 29.16666667%
+ }
+
+ .ant-col-sm-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+ }
+
+ .ant-col-sm-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+ }
+
+ .ant-col-sm-push-6 {
+ left: 25%
+ }
+
+ .ant-col-sm-pull-6 {
+ right: 25%
+ }
+
+ .ant-col-sm-offset-6 {
+ margin-left: 25%
+ }
+
+ .ant-col-sm-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+ }
+
+ .ant-col-sm-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+ }
+
+ .ant-col-sm-push-5 {
+ left: 20.83333333%
+ }
+
+ .ant-col-sm-pull-5 {
+ right: 20.83333333%
+ }
+
+ .ant-col-sm-offset-5 {
+ margin-left: 20.83333333%
+ }
+
+ .ant-col-sm-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+ }
+
+ .ant-col-sm-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+ }
+
+ .ant-col-sm-push-4 {
+ left: 16.66666667%
+ }
+
+ .ant-col-sm-pull-4 {
+ right: 16.66666667%
+ }
+
+ .ant-col-sm-offset-4 {
+ margin-left: 16.66666667%
+ }
+
+ .ant-col-sm-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+ }
+
+ .ant-col-sm-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+ }
+
+ .ant-col-sm-push-3 {
+ left: 12.5%
+ }
+
+ .ant-col-sm-pull-3 {
+ right: 12.5%
+ }
+
+ .ant-col-sm-offset-3 {
+ margin-left: 12.5%
+ }
+
+ .ant-col-sm-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+ }
+
+ .ant-col-sm-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+ }
+
+ .ant-col-sm-push-2 {
+ left: 8.33333333%
+ }
+
+ .ant-col-sm-pull-2 {
+ right: 8.33333333%
+ }
+
+ .ant-col-sm-offset-2 {
+ margin-left: 8.33333333%
+ }
+
+ .ant-col-sm-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+ }
+
+ .ant-col-sm-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+ }
+
+ .ant-col-sm-push-1 {
+ left: 4.16666667%
+ }
+
+ .ant-col-sm-pull-1 {
+ right: 4.16666667%
+ }
+
+ .ant-col-sm-offset-1 {
+ margin-left: 4.16666667%
+ }
+
+ .ant-col-sm-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+ }
+
+ .ant-col-sm-0 {
+ display: none
+ }
+
+ .ant-col-push-0 {
+ left: auto
+ }
+
+ .ant-col-pull-0 {
+ right: auto
+ }
+
+ .ant-col-sm-push-0 {
+ left: auto
+ }
+
+ .ant-col-sm-pull-0 {
+ right: auto
+ }
+
+ .ant-col-sm-offset-0 {
+ margin-left: 0
+ }
+
+ .ant-col-sm-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+ }
+}
+
+@media (min-width:768px) {
+ .ant-col-md-1, .ant-col-md-2, .ant-col-md-3, .ant-col-md-4, .ant-col-md-5, .ant-col-md-6, .ant-col-md-7, .ant-col-md-8, .ant-col-md-9, .ant-col-md-10, .ant-col-md-11, .ant-col-md-12, .ant-col-md-13, .ant-col-md-14, .ant-col-md-15, .ant-col-md-16, .ant-col-md-17, .ant-col-md-18, .ant-col-md-19, .ant-col-md-20, .ant-col-md-21, .ant-col-md-22, .ant-col-md-23, .ant-col-md-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+ }
+
+ .ant-col-md-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+ }
+
+ .ant-col-md-push-24 {
+ left: 100%
+ }
+
+ .ant-col-md-pull-24 {
+ right: 100%
+ }
+
+ .ant-col-md-offset-24 {
+ margin-left: 100%
+ }
+
+ .ant-col-md-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+ }
+
+ .ant-col-md-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+ }
+
+ .ant-col-md-push-23 {
+ left: 95.83333333%
+ }
+
+ .ant-col-md-pull-23 {
+ right: 95.83333333%
+ }
+
+ .ant-col-md-offset-23 {
+ margin-left: 95.83333333%
+ }
+
+ .ant-col-md-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+ }
+
+ .ant-col-md-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+ }
+
+ .ant-col-md-push-22 {
+ left: 91.66666667%
+ }
+
+ .ant-col-md-pull-22 {
+ right: 91.66666667%
+ }
+
+ .ant-col-md-offset-22 {
+ margin-left: 91.66666667%
+ }
+
+ .ant-col-md-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+ }
+
+ .ant-col-md-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+ }
+
+ .ant-col-md-push-21 {
+ left: 87.5%
+ }
+
+ .ant-col-md-pull-21 {
+ right: 87.5%
+ }
+
+ .ant-col-md-offset-21 {
+ margin-left: 87.5%
+ }
+
+ .ant-col-md-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+ }
+
+ .ant-col-md-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+ }
+
+ .ant-col-md-push-20 {
+ left: 83.33333333%
+ }
+
+ .ant-col-md-pull-20 {
+ right: 83.33333333%
+ }
+
+ .ant-col-md-offset-20 {
+ margin-left: 83.33333333%
+ }
+
+ .ant-col-md-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+ }
+
+ .ant-col-md-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+ }
+
+ .ant-col-md-push-19 {
+ left: 79.16666667%
+ }
+
+ .ant-col-md-pull-19 {
+ right: 79.16666667%
+ }
+
+ .ant-col-md-offset-19 {
+ margin-left: 79.16666667%
+ }
+
+ .ant-col-md-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+ }
+
+ .ant-col-md-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+ }
+
+ .ant-col-md-push-18 {
+ left: 75%
+ }
+
+ .ant-col-md-pull-18 {
+ right: 75%
+ }
+
+ .ant-col-md-offset-18 {
+ margin-left: 75%
+ }
+
+ .ant-col-md-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+ }
+
+ .ant-col-md-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+ }
+
+ .ant-col-md-push-17 {
+ left: 70.83333333%
+ }
+
+ .ant-col-md-pull-17 {
+ right: 70.83333333%
+ }
+
+ .ant-col-md-offset-17 {
+ margin-left: 70.83333333%
+ }
+
+ .ant-col-md-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+ }
+
+ .ant-col-md-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+ }
+
+ .ant-col-md-push-16 {
+ left: 66.66666667%
+ }
+
+ .ant-col-md-pull-16 {
+ right: 66.66666667%
+ }
+
+ .ant-col-md-offset-16 {
+ margin-left: 66.66666667%
+ }
+
+ .ant-col-md-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+ }
+
+ .ant-col-md-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+ }
+
+ .ant-col-md-push-15 {
+ left: 62.5%
+ }
+
+ .ant-col-md-pull-15 {
+ right: 62.5%
+ }
+
+ .ant-col-md-offset-15 {
+ margin-left: 62.5%
+ }
+
+ .ant-col-md-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+ }
+
+ .ant-col-md-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+ }
+
+ .ant-col-md-push-14 {
+ left: 58.33333333%
+ }
+
+ .ant-col-md-pull-14 {
+ right: 58.33333333%
+ }
+
+ .ant-col-md-offset-14 {
+ margin-left: 58.33333333%
+ }
+
+ .ant-col-md-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+ }
+
+ .ant-col-md-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+ }
+
+ .ant-col-md-push-13 {
+ left: 54.16666667%
+ }
+
+ .ant-col-md-pull-13 {
+ right: 54.16666667%
+ }
+
+ .ant-col-md-offset-13 {
+ margin-left: 54.16666667%
+ }
+
+ .ant-col-md-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+ }
+
+ .ant-col-md-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+ }
+
+ .ant-col-md-push-12 {
+ left: 50%
+ }
+
+ .ant-col-md-pull-12 {
+ right: 50%
+ }
+
+ .ant-col-md-offset-12 {
+ margin-left: 50%
+ }
+
+ .ant-col-md-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+ }
+
+ .ant-col-md-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+ }
+
+ .ant-col-md-push-11 {
+ left: 45.83333333%
+ }
+
+ .ant-col-md-pull-11 {
+ right: 45.83333333%
+ }
+
+ .ant-col-md-offset-11 {
+ margin-left: 45.83333333%
+ }
+
+ .ant-col-md-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+ }
+
+ .ant-col-md-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+ }
+
+ .ant-col-md-push-10 {
+ left: 41.66666667%
+ }
+
+ .ant-col-md-pull-10 {
+ right: 41.66666667%
+ }
+
+ .ant-col-md-offset-10 {
+ margin-left: 41.66666667%
+ }
+
+ .ant-col-md-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+ }
+
+ .ant-col-md-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+ }
+
+ .ant-col-md-push-9 {
+ left: 37.5%
+ }
+
+ .ant-col-md-pull-9 {
+ right: 37.5%
+ }
+
+ .ant-col-md-offset-9 {
+ margin-left: 37.5%
+ }
+
+ .ant-col-md-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+ }
+
+ .ant-col-md-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+ }
+
+ .ant-col-md-push-8 {
+ left: 33.33333333%
+ }
+
+ .ant-col-md-pull-8 {
+ right: 33.33333333%
+ }
+
+ .ant-col-md-offset-8 {
+ margin-left: 33.33333333%
+ }
+
+ .ant-col-md-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+ }
+
+ .ant-col-md-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+ }
+
+ .ant-col-md-push-7 {
+ left: 29.16666667%
+ }
+
+ .ant-col-md-pull-7 {
+ right: 29.16666667%
+ }
+
+ .ant-col-md-offset-7 {
+ margin-left: 29.16666667%
+ }
+
+ .ant-col-md-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+ }
+
+ .ant-col-md-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+ }
+
+ .ant-col-md-push-6 {
+ left: 25%
+ }
+
+ .ant-col-md-pull-6 {
+ right: 25%
+ }
+
+ .ant-col-md-offset-6 {
+ margin-left: 25%
+ }
+
+ .ant-col-md-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+ }
+
+ .ant-col-md-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+ }
+
+ .ant-col-md-push-5 {
+ left: 20.83333333%
+ }
+
+ .ant-col-md-pull-5 {
+ right: 20.83333333%
+ }
+
+ .ant-col-md-offset-5 {
+ margin-left: 20.83333333%
+ }
+
+ .ant-col-md-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+ }
+
+ .ant-col-md-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+ }
+
+ .ant-col-md-push-4 {
+ left: 16.66666667%
+ }
+
+ .ant-col-md-pull-4 {
+ right: 16.66666667%
+ }
+
+ .ant-col-md-offset-4 {
+ margin-left: 16.66666667%
+ }
+
+ .ant-col-md-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+ }
+
+ .ant-col-md-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+ }
+
+ .ant-col-md-push-3 {
+ left: 12.5%
+ }
+
+ .ant-col-md-pull-3 {
+ right: 12.5%
+ }
+
+ .ant-col-md-offset-3 {
+ margin-left: 12.5%
+ }
+
+ .ant-col-md-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+ }
+
+ .ant-col-md-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+ }
+
+ .ant-col-md-push-2 {
+ left: 8.33333333%
+ }
+
+ .ant-col-md-pull-2 {
+ right: 8.33333333%
+ }
+
+ .ant-col-md-offset-2 {
+ margin-left: 8.33333333%
+ }
+
+ .ant-col-md-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+ }
+
+ .ant-col-md-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+ }
+
+ .ant-col-md-push-1 {
+ left: 4.16666667%
+ }
+
+ .ant-col-md-pull-1 {
+ right: 4.16666667%
+ }
+
+ .ant-col-md-offset-1 {
+ margin-left: 4.16666667%
+ }
+
+ .ant-col-md-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+ }
+
+ .ant-col-md-0 {
+ display: none
+ }
+
+ .ant-col-push-0 {
+ left: auto
+ }
+
+ .ant-col-pull-0 {
+ right: auto
+ }
+
+ .ant-col-md-push-0 {
+ left: auto
+ }
+
+ .ant-col-md-pull-0 {
+ right: auto
+ }
+
+ .ant-col-md-offset-0 {
+ margin-left: 0
+ }
+
+ .ant-col-md-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+ }
+}
+
+@media (min-width:992px) {
+ .ant-col-lg-1, .ant-col-lg-2, .ant-col-lg-3, .ant-col-lg-4, .ant-col-lg-5, .ant-col-lg-6, .ant-col-lg-7, .ant-col-lg-8, .ant-col-lg-9, .ant-col-lg-10, .ant-col-lg-11, .ant-col-lg-12, .ant-col-lg-13, .ant-col-lg-14, .ant-col-lg-15, .ant-col-lg-16, .ant-col-lg-17, .ant-col-lg-18, .ant-col-lg-19, .ant-col-lg-20, .ant-col-lg-21, .ant-col-lg-22, .ant-col-lg-23, .ant-col-lg-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+ }
+
+ .ant-col-lg-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+ }
+
+ .ant-col-lg-push-24 {
+ left: 100%
+ }
+
+ .ant-col-lg-pull-24 {
+ right: 100%
+ }
+
+ .ant-col-lg-offset-24 {
+ margin-left: 100%
+ }
+
+ .ant-col-lg-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+ }
+
+ .ant-col-lg-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+ }
+
+ .ant-col-lg-push-23 {
+ left: 95.83333333%
+ }
+
+ .ant-col-lg-pull-23 {
+ right: 95.83333333%
+ }
+
+ .ant-col-lg-offset-23 {
+ margin-left: 95.83333333%
+ }
+
+ .ant-col-lg-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+ }
+
+ .ant-col-lg-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+ }
+
+ .ant-col-lg-push-22 {
+ left: 91.66666667%
+ }
+
+ .ant-col-lg-pull-22 {
+ right: 91.66666667%
+ }
+
+ .ant-col-lg-offset-22 {
+ margin-left: 91.66666667%
+ }
+
+ .ant-col-lg-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+ }
+
+ .ant-col-lg-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+ }
+
+ .ant-col-lg-push-21 {
+ left: 87.5%
+ }
+
+ .ant-col-lg-pull-21 {
+ right: 87.5%
+ }
+
+ .ant-col-lg-offset-21 {
+ margin-left: 87.5%
+ }
+
+ .ant-col-lg-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+ }
+
+ .ant-col-lg-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+ }
+
+ .ant-col-lg-push-20 {
+ left: 83.33333333%
+ }
+
+ .ant-col-lg-pull-20 {
+ right: 83.33333333%
+ }
+
+ .ant-col-lg-offset-20 {
+ margin-left: 83.33333333%
+ }
+
+ .ant-col-lg-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+ }
+
+ .ant-col-lg-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+ }
+
+ .ant-col-lg-push-19 {
+ left: 79.16666667%
+ }
+
+ .ant-col-lg-pull-19 {
+ right: 79.16666667%
+ }
+
+ .ant-col-lg-offset-19 {
+ margin-left: 79.16666667%
+ }
+
+ .ant-col-lg-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+ }
+
+ .ant-col-lg-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+ }
+
+ .ant-col-lg-push-18 {
+ left: 75%
+ }
+
+ .ant-col-lg-pull-18 {
+ right: 75%
+ }
+
+ .ant-col-lg-offset-18 {
+ margin-left: 75%
+ }
+
+ .ant-col-lg-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+ }
+
+ .ant-col-lg-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+ }
+
+ .ant-col-lg-push-17 {
+ left: 70.83333333%
+ }
+
+ .ant-col-lg-pull-17 {
+ right: 70.83333333%
+ }
+
+ .ant-col-lg-offset-17 {
+ margin-left: 70.83333333%
+ }
+
+ .ant-col-lg-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+ }
+
+ .ant-col-lg-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+ }
+
+ .ant-col-lg-push-16 {
+ left: 66.66666667%
+ }
+
+ .ant-col-lg-pull-16 {
+ right: 66.66666667%
+ }
+
+ .ant-col-lg-offset-16 {
+ margin-left: 66.66666667%
+ }
+
+ .ant-col-lg-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+ }
+
+ .ant-col-lg-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+ }
+
+ .ant-col-lg-push-15 {
+ left: 62.5%
+ }
+
+ .ant-col-lg-pull-15 {
+ right: 62.5%
+ }
+
+ .ant-col-lg-offset-15 {
+ margin-left: 62.5%
+ }
+
+ .ant-col-lg-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+ }
+
+ .ant-col-lg-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+ }
+
+ .ant-col-lg-push-14 {
+ left: 58.33333333%
+ }
+
+ .ant-col-lg-pull-14 {
+ right: 58.33333333%
+ }
+
+ .ant-col-lg-offset-14 {
+ margin-left: 58.33333333%
+ }
+
+ .ant-col-lg-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+ }
+
+ .ant-col-lg-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+ }
+
+ .ant-col-lg-push-13 {
+ left: 54.16666667%
+ }
+
+ .ant-col-lg-pull-13 {
+ right: 54.16666667%
+ }
+
+ .ant-col-lg-offset-13 {
+ margin-left: 54.16666667%
+ }
+
+ .ant-col-lg-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+ }
+
+ .ant-col-lg-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+ }
+
+ .ant-col-lg-push-12 {
+ left: 50%
+ }
+
+ .ant-col-lg-pull-12 {
+ right: 50%
+ }
+
+ .ant-col-lg-offset-12 {
+ margin-left: 50%
+ }
+
+ .ant-col-lg-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+ }
+
+ .ant-col-lg-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+ }
+
+ .ant-col-lg-push-11 {
+ left: 45.83333333%
+ }
+
+ .ant-col-lg-pull-11 {
+ right: 45.83333333%
+ }
+
+ .ant-col-lg-offset-11 {
+ margin-left: 45.83333333%
+ }
+
+ .ant-col-lg-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+ }
+
+ .ant-col-lg-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+ }
+
+ .ant-col-lg-push-10 {
+ left: 41.66666667%
+ }
+
+ .ant-col-lg-pull-10 {
+ right: 41.66666667%
+ }
+
+ .ant-col-lg-offset-10 {
+ margin-left: 41.66666667%
+ }
+
+ .ant-col-lg-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+ }
+
+ .ant-col-lg-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+ }
+
+ .ant-col-lg-push-9 {
+ left: 37.5%
+ }
+
+ .ant-col-lg-pull-9 {
+ right: 37.5%
+ }
+
+ .ant-col-lg-offset-9 {
+ margin-left: 37.5%
+ }
+
+ .ant-col-lg-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+ }
+
+ .ant-col-lg-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+ }
+
+ .ant-col-lg-push-8 {
+ left: 33.33333333%
+ }
+
+ .ant-col-lg-pull-8 {
+ right: 33.33333333%
+ }
+
+ .ant-col-lg-offset-8 {
+ margin-left: 33.33333333%
+ }
+
+ .ant-col-lg-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+ }
+
+ .ant-col-lg-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+ }
+
+ .ant-col-lg-push-7 {
+ left: 29.16666667%
+ }
+
+ .ant-col-lg-pull-7 {
+ right: 29.16666667%
+ }
+
+ .ant-col-lg-offset-7 {
+ margin-left: 29.16666667%
+ }
+
+ .ant-col-lg-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+ }
+
+ .ant-col-lg-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+ }
+
+ .ant-col-lg-push-6 {
+ left: 25%
+ }
+
+ .ant-col-lg-pull-6 {
+ right: 25%
+ }
+
+ .ant-col-lg-offset-6 {
+ margin-left: 25%
+ }
+
+ .ant-col-lg-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+ }
+
+ .ant-col-lg-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+ }
+
+ .ant-col-lg-push-5 {
+ left: 20.83333333%
+ }
+
+ .ant-col-lg-pull-5 {
+ right: 20.83333333%
+ }
+
+ .ant-col-lg-offset-5 {
+ margin-left: 20.83333333%
+ }
+
+ .ant-col-lg-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+ }
+
+ .ant-col-lg-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+ }
+
+ .ant-col-lg-push-4 {
+ left: 16.66666667%
+ }
+
+ .ant-col-lg-pull-4 {
+ right: 16.66666667%
+ }
+
+ .ant-col-lg-offset-4 {
+ margin-left: 16.66666667%
+ }
+
+ .ant-col-lg-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+ }
+
+ .ant-col-lg-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+ }
+
+ .ant-col-lg-push-3 {
+ left: 12.5%
+ }
+
+ .ant-col-lg-pull-3 {
+ right: 12.5%
+ }
+
+ .ant-col-lg-offset-3 {
+ margin-left: 12.5%
+ }
+
+ .ant-col-lg-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+ }
+
+ .ant-col-lg-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+ }
+
+ .ant-col-lg-push-2 {
+ left: 8.33333333%
+ }
+
+ .ant-col-lg-pull-2 {
+ right: 8.33333333%
+ }
+
+ .ant-col-lg-offset-2 {
+ margin-left: 8.33333333%
+ }
+
+ .ant-col-lg-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+ }
+
+ .ant-col-lg-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+ }
+
+ .ant-col-lg-push-1 {
+ left: 4.16666667%
+ }
+
+ .ant-col-lg-pull-1 {
+ right: 4.16666667%
+ }
+
+ .ant-col-lg-offset-1 {
+ margin-left: 4.16666667%
+ }
+
+ .ant-col-lg-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+ }
+
+ .ant-col-lg-0 {
+ display: none
+ }
+
+ .ant-col-push-0 {
+ left: auto
+ }
+
+ .ant-col-pull-0 {
+ right: auto
+ }
+
+ .ant-col-lg-push-0 {
+ left: auto
+ }
+
+ .ant-col-lg-pull-0 {
+ right: auto
+ }
+
+ .ant-col-lg-offset-0 {
+ margin-left: 0
+ }
+
+ .ant-col-lg-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+ }
+}
+
+@media (min-width:1200px) {
+ .ant-col-xl-1, .ant-col-xl-2, .ant-col-xl-3, .ant-col-xl-4, .ant-col-xl-5, .ant-col-xl-6, .ant-col-xl-7, .ant-col-xl-8, .ant-col-xl-9, .ant-col-xl-10, .ant-col-xl-11, .ant-col-xl-12, .ant-col-xl-13, .ant-col-xl-14, .ant-col-xl-15, .ant-col-xl-16, .ant-col-xl-17, .ant-col-xl-18, .ant-col-xl-19, .ant-col-xl-20, .ant-col-xl-21, .ant-col-xl-22, .ant-col-xl-23, .ant-col-xl-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+ }
+
+ .ant-col-xl-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+ }
+
+ .ant-col-xl-push-24 {
+ left: 100%
+ }
+
+ .ant-col-xl-pull-24 {
+ right: 100%
+ }
+
+ .ant-col-xl-offset-24 {
+ margin-left: 100%
+ }
+
+ .ant-col-xl-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+ }
+
+ .ant-col-xl-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+ }
+
+ .ant-col-xl-push-23 {
+ left: 95.83333333%
+ }
+
+ .ant-col-xl-pull-23 {
+ right: 95.83333333%
+ }
+
+ .ant-col-xl-offset-23 {
+ margin-left: 95.83333333%
+ }
+
+ .ant-col-xl-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+ }
+
+ .ant-col-xl-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+ }
+
+ .ant-col-xl-push-22 {
+ left: 91.66666667%
+ }
+
+ .ant-col-xl-pull-22 {
+ right: 91.66666667%
+ }
+
+ .ant-col-xl-offset-22 {
+ margin-left: 91.66666667%
+ }
+
+ .ant-col-xl-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+ }
+
+ .ant-col-xl-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+ }
+
+ .ant-col-xl-push-21 {
+ left: 87.5%
+ }
+
+ .ant-col-xl-pull-21 {
+ right: 87.5%
+ }
+
+ .ant-col-xl-offset-21 {
+ margin-left: 87.5%
+ }
+
+ .ant-col-xl-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+ }
+
+ .ant-col-xl-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+ }
+
+ .ant-col-xl-push-20 {
+ left: 83.33333333%
+ }
+
+ .ant-col-xl-pull-20 {
+ right: 83.33333333%
+ }
+
+ .ant-col-xl-offset-20 {
+ margin-left: 83.33333333%
+ }
+
+ .ant-col-xl-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+ }
+
+ .ant-col-xl-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+ }
+
+ .ant-col-xl-push-19 {
+ left: 79.16666667%
+ }
+
+ .ant-col-xl-pull-19 {
+ right: 79.16666667%
+ }
+
+ .ant-col-xl-offset-19 {
+ margin-left: 79.16666667%
+ }
+
+ .ant-col-xl-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+ }
+
+ .ant-col-xl-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+ }
+
+ .ant-col-xl-push-18 {
+ left: 75%
+ }
+
+ .ant-col-xl-pull-18 {
+ right: 75%
+ }
+
+ .ant-col-xl-offset-18 {
+ margin-left: 75%
+ }
+
+ .ant-col-xl-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+ }
+
+ .ant-col-xl-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+ }
+
+ .ant-col-xl-push-17 {
+ left: 70.83333333%
+ }
+
+ .ant-col-xl-pull-17 {
+ right: 70.83333333%
+ }
+
+ .ant-col-xl-offset-17 {
+ margin-left: 70.83333333%
+ }
+
+ .ant-col-xl-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+ }
+
+ .ant-col-xl-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+ }
+
+ .ant-col-xl-push-16 {
+ left: 66.66666667%
+ }
+
+ .ant-col-xl-pull-16 {
+ right: 66.66666667%
+ }
+
+ .ant-col-xl-offset-16 {
+ margin-left: 66.66666667%
+ }
+
+ .ant-col-xl-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+ }
+
+ .ant-col-xl-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+ }
+
+ .ant-col-xl-push-15 {
+ left: 62.5%
+ }
+
+ .ant-col-xl-pull-15 {
+ right: 62.5%
+ }
+
+ .ant-col-xl-offset-15 {
+ margin-left: 62.5%
+ }
+
+ .ant-col-xl-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+ }
+
+ .ant-col-xl-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+ }
+
+ .ant-col-xl-push-14 {
+ left: 58.33333333%
+ }
+
+ .ant-col-xl-pull-14 {
+ right: 58.33333333%
+ }
+
+ .ant-col-xl-offset-14 {
+ margin-left: 58.33333333%
+ }
+
+ .ant-col-xl-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+ }
+
+ .ant-col-xl-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+ }
+
+ .ant-col-xl-push-13 {
+ left: 54.16666667%
+ }
+
+ .ant-col-xl-pull-13 {
+ right: 54.16666667%
+ }
+
+ .ant-col-xl-offset-13 {
+ margin-left: 54.16666667%
+ }
+
+ .ant-col-xl-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+ }
+
+ .ant-col-xl-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+ }
+
+ .ant-col-xl-push-12 {
+ left: 50%
+ }
+
+ .ant-col-xl-pull-12 {
+ right: 50%
+ }
+
+ .ant-col-xl-offset-12 {
+ margin-left: 50%
+ }
+
+ .ant-col-xl-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+ }
+
+ .ant-col-xl-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+ }
+
+ .ant-col-xl-push-11 {
+ left: 45.83333333%
+ }
+
+ .ant-col-xl-pull-11 {
+ right: 45.83333333%
+ }
+
+ .ant-col-xl-offset-11 {
+ margin-left: 45.83333333%
+ }
+
+ .ant-col-xl-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+ }
+
+ .ant-col-xl-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+ }
+
+ .ant-col-xl-push-10 {
+ left: 41.66666667%
+ }
+
+ .ant-col-xl-pull-10 {
+ right: 41.66666667%
+ }
+
+ .ant-col-xl-offset-10 {
+ margin-left: 41.66666667%
+ }
+
+ .ant-col-xl-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+ }
+
+ .ant-col-xl-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+ }
+
+ .ant-col-xl-push-9 {
+ left: 37.5%
+ }
+
+ .ant-col-xl-pull-9 {
+ right: 37.5%
+ }
+
+ .ant-col-xl-offset-9 {
+ margin-left: 37.5%
+ }
+
+ .ant-col-xl-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+ }
+
+ .ant-col-xl-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+ }
+
+ .ant-col-xl-push-8 {
+ left: 33.33333333%
+ }
+
+ .ant-col-xl-pull-8 {
+ right: 33.33333333%
+ }
+
+ .ant-col-xl-offset-8 {
+ margin-left: 33.33333333%
+ }
+
+ .ant-col-xl-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+ }
+
+ .ant-col-xl-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+ }
+
+ .ant-col-xl-push-7 {
+ left: 29.16666667%
+ }
+
+ .ant-col-xl-pull-7 {
+ right: 29.16666667%
+ }
+
+ .ant-col-xl-offset-7 {
+ margin-left: 29.16666667%
+ }
+
+ .ant-col-xl-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+ }
+
+ .ant-col-xl-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+ }
+
+ .ant-col-xl-push-6 {
+ left: 25%
+ }
+
+ .ant-col-xl-pull-6 {
+ right: 25%
+ }
+
+ .ant-col-xl-offset-6 {
+ margin-left: 25%
+ }
+
+ .ant-col-xl-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+ }
+
+ .ant-col-xl-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+ }
+
+ .ant-col-xl-push-5 {
+ left: 20.83333333%
+ }
+
+ .ant-col-xl-pull-5 {
+ right: 20.83333333%
+ }
+
+ .ant-col-xl-offset-5 {
+ margin-left: 20.83333333%
+ }
+
+ .ant-col-xl-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+ }
+
+ .ant-col-xl-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+ }
+
+ .ant-col-xl-push-4 {
+ left: 16.66666667%
+ }
+
+ .ant-col-xl-pull-4 {
+ right: 16.66666667%
+ }
+
+ .ant-col-xl-offset-4 {
+ margin-left: 16.66666667%
+ }
+
+ .ant-col-xl-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+ }
+
+ .ant-col-xl-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+ }
+
+ .ant-col-xl-push-3 {
+ left: 12.5%
+ }
+
+ .ant-col-xl-pull-3 {
+ right: 12.5%
+ }
+
+ .ant-col-xl-offset-3 {
+ margin-left: 12.5%
+ }
+
+ .ant-col-xl-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+ }
+
+ .ant-col-xl-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+ }
+
+ .ant-col-xl-push-2 {
+ left: 8.33333333%
+ }
+
+ .ant-col-xl-pull-2 {
+ right: 8.33333333%
+ }
+
+ .ant-col-xl-offset-2 {
+ margin-left: 8.33333333%
+ }
+
+ .ant-col-xl-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+ }
+
+ .ant-col-xl-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+ }
+
+ .ant-col-xl-push-1 {
+ left: 4.16666667%
+ }
+
+ .ant-col-xl-pull-1 {
+ right: 4.16666667%
+ }
+
+ .ant-col-xl-offset-1 {
+ margin-left: 4.16666667%
+ }
+
+ .ant-col-xl-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+ }
+
+ .ant-col-xl-0 {
+ display: none
+ }
+
+ .ant-col-push-0 {
+ left: auto
+ }
+
+ .ant-col-pull-0 {
+ right: auto
+ }
+
+ .ant-col-xl-push-0 {
+ left: auto
+ }
+
+ .ant-col-xl-pull-0 {
+ right: auto
+ }
+
+ .ant-col-xl-offset-0 {
+ margin-left: 0
+ }
+
+ .ant-col-xl-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+ }
+}
+
+@media (min-width:1600px) {
+ .ant-col-xxl-1, .ant-col-xxl-2, .ant-col-xxl-3, .ant-col-xxl-4, .ant-col-xxl-5, .ant-col-xxl-6, .ant-col-xxl-7, .ant-col-xxl-8, .ant-col-xxl-9, .ant-col-xxl-10, .ant-col-xxl-11, .ant-col-xxl-12, .ant-col-xxl-13, .ant-col-xxl-14, .ant-col-xxl-15, .ant-col-xxl-16, .ant-col-xxl-17, .ant-col-xxl-18, .ant-col-xxl-19, .ant-col-xxl-20, .ant-col-xxl-21, .ant-col-xxl-22, .ant-col-xxl-23, .ant-col-xxl-24 {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ float: left
+ }
+
+ .ant-col-xxl-24 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%
+ }
+
+ .ant-col-xxl-push-24 {
+ left: 100%
+ }
+
+ .ant-col-xxl-pull-24 {
+ right: 100%
+ }
+
+ .ant-col-xxl-offset-24 {
+ margin-left: 100%
+ }
+
+ .ant-col-xxl-order-24 {
+ -webkit-box-ordinal-group: 25;
+ -ms-flex-order: 24;
+ order: 24
+ }
+
+ .ant-col-xxl-23 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 95.83333333%
+ }
+
+ .ant-col-xxl-push-23 {
+ left: 95.83333333%
+ }
+
+ .ant-col-xxl-pull-23 {
+ right: 95.83333333%
+ }
+
+ .ant-col-xxl-offset-23 {
+ margin-left: 95.83333333%
+ }
+
+ .ant-col-xxl-order-23 {
+ -webkit-box-ordinal-group: 24;
+ -ms-flex-order: 23;
+ order: 23
+ }
+
+ .ant-col-xxl-22 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 91.66666667%
+ }
+
+ .ant-col-xxl-push-22 {
+ left: 91.66666667%
+ }
+
+ .ant-col-xxl-pull-22 {
+ right: 91.66666667%
+ }
+
+ .ant-col-xxl-offset-22 {
+ margin-left: 91.66666667%
+ }
+
+ .ant-col-xxl-order-22 {
+ -webkit-box-ordinal-group: 23;
+ -ms-flex-order: 22;
+ order: 22
+ }
+
+ .ant-col-xxl-21 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 87.5%
+ }
+
+ .ant-col-xxl-push-21 {
+ left: 87.5%
+ }
+
+ .ant-col-xxl-pull-21 {
+ right: 87.5%
+ }
+
+ .ant-col-xxl-offset-21 {
+ margin-left: 87.5%
+ }
+
+ .ant-col-xxl-order-21 {
+ -webkit-box-ordinal-group: 22;
+ -ms-flex-order: 21;
+ order: 21
+ }
+
+ .ant-col-xxl-20 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 83.33333333%
+ }
+
+ .ant-col-xxl-push-20 {
+ left: 83.33333333%
+ }
+
+ .ant-col-xxl-pull-20 {
+ right: 83.33333333%
+ }
+
+ .ant-col-xxl-offset-20 {
+ margin-left: 83.33333333%
+ }
+
+ .ant-col-xxl-order-20 {
+ -webkit-box-ordinal-group: 21;
+ -ms-flex-order: 20;
+ order: 20
+ }
+
+ .ant-col-xxl-19 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 79.16666667%
+ }
+
+ .ant-col-xxl-push-19 {
+ left: 79.16666667%
+ }
+
+ .ant-col-xxl-pull-19 {
+ right: 79.16666667%
+ }
+
+ .ant-col-xxl-offset-19 {
+ margin-left: 79.16666667%
+ }
+
+ .ant-col-xxl-order-19 {
+ -webkit-box-ordinal-group: 20;
+ -ms-flex-order: 19;
+ order: 19
+ }
+
+ .ant-col-xxl-18 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 75%
+ }
+
+ .ant-col-xxl-push-18 {
+ left: 75%
+ }
+
+ .ant-col-xxl-pull-18 {
+ right: 75%
+ }
+
+ .ant-col-xxl-offset-18 {
+ margin-left: 75%
+ }
+
+ .ant-col-xxl-order-18 {
+ -webkit-box-ordinal-group: 19;
+ -ms-flex-order: 18;
+ order: 18
+ }
+
+ .ant-col-xxl-17 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 70.83333333%
+ }
+
+ .ant-col-xxl-push-17 {
+ left: 70.83333333%
+ }
+
+ .ant-col-xxl-pull-17 {
+ right: 70.83333333%
+ }
+
+ .ant-col-xxl-offset-17 {
+ margin-left: 70.83333333%
+ }
+
+ .ant-col-xxl-order-17 {
+ -webkit-box-ordinal-group: 18;
+ -ms-flex-order: 17;
+ order: 17
+ }
+
+ .ant-col-xxl-16 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 66.66666667%
+ }
+
+ .ant-col-xxl-push-16 {
+ left: 66.66666667%
+ }
+
+ .ant-col-xxl-pull-16 {
+ right: 66.66666667%
+ }
+
+ .ant-col-xxl-offset-16 {
+ margin-left: 66.66666667%
+ }
+
+ .ant-col-xxl-order-16 {
+ -webkit-box-ordinal-group: 17;
+ -ms-flex-order: 16;
+ order: 16
+ }
+
+ .ant-col-xxl-15 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 62.5%
+ }
+
+ .ant-col-xxl-push-15 {
+ left: 62.5%
+ }
+
+ .ant-col-xxl-pull-15 {
+ right: 62.5%
+ }
+
+ .ant-col-xxl-offset-15 {
+ margin-left: 62.5%
+ }
+
+ .ant-col-xxl-order-15 {
+ -webkit-box-ordinal-group: 16;
+ -ms-flex-order: 15;
+ order: 15
+ }
+
+ .ant-col-xxl-14 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 58.33333333%
+ }
+
+ .ant-col-xxl-push-14 {
+ left: 58.33333333%
+ }
+
+ .ant-col-xxl-pull-14 {
+ right: 58.33333333%
+ }
+
+ .ant-col-xxl-offset-14 {
+ margin-left: 58.33333333%
+ }
+
+ .ant-col-xxl-order-14 {
+ -webkit-box-ordinal-group: 15;
+ -ms-flex-order: 14;
+ order: 14
+ }
+
+ .ant-col-xxl-13 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 54.16666667%
+ }
+
+ .ant-col-xxl-push-13 {
+ left: 54.16666667%
+ }
+
+ .ant-col-xxl-pull-13 {
+ right: 54.16666667%
+ }
+
+ .ant-col-xxl-offset-13 {
+ margin-left: 54.16666667%
+ }
+
+ .ant-col-xxl-order-13 {
+ -webkit-box-ordinal-group: 14;
+ -ms-flex-order: 13;
+ order: 13
+ }
+
+ .ant-col-xxl-12 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 50%
+ }
+
+ .ant-col-xxl-push-12 {
+ left: 50%
+ }
+
+ .ant-col-xxl-pull-12 {
+ right: 50%
+ }
+
+ .ant-col-xxl-offset-12 {
+ margin-left: 50%
+ }
+
+ .ant-col-xxl-order-12 {
+ -webkit-box-ordinal-group: 13;
+ -ms-flex-order: 12;
+ order: 12
+ }
+
+ .ant-col-xxl-11 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 45.83333333%
+ }
+
+ .ant-col-xxl-push-11 {
+ left: 45.83333333%
+ }
+
+ .ant-col-xxl-pull-11 {
+ right: 45.83333333%
+ }
+
+ .ant-col-xxl-offset-11 {
+ margin-left: 45.83333333%
+ }
+
+ .ant-col-xxl-order-11 {
+ -webkit-box-ordinal-group: 12;
+ -ms-flex-order: 11;
+ order: 11
+ }
+
+ .ant-col-xxl-10 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 41.66666667%
+ }
+
+ .ant-col-xxl-push-10 {
+ left: 41.66666667%
+ }
+
+ .ant-col-xxl-pull-10 {
+ right: 41.66666667%
+ }
+
+ .ant-col-xxl-offset-10 {
+ margin-left: 41.66666667%
+ }
+
+ .ant-col-xxl-order-10 {
+ -webkit-box-ordinal-group: 11;
+ -ms-flex-order: 10;
+ order: 10
+ }
+
+ .ant-col-xxl-9 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 37.5%
+ }
+
+ .ant-col-xxl-push-9 {
+ left: 37.5%
+ }
+
+ .ant-col-xxl-pull-9 {
+ right: 37.5%
+ }
+
+ .ant-col-xxl-offset-9 {
+ margin-left: 37.5%
+ }
+
+ .ant-col-xxl-order-9 {
+ -webkit-box-ordinal-group: 10;
+ -ms-flex-order: 9;
+ order: 9
+ }
+
+ .ant-col-xxl-8 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 33.33333333%
+ }
+
+ .ant-col-xxl-push-8 {
+ left: 33.33333333%
+ }
+
+ .ant-col-xxl-pull-8 {
+ right: 33.33333333%
+ }
+
+ .ant-col-xxl-offset-8 {
+ margin-left: 33.33333333%
+ }
+
+ .ant-col-xxl-order-8 {
+ -webkit-box-ordinal-group: 9;
+ -ms-flex-order: 8;
+ order: 8
+ }
+
+ .ant-col-xxl-7 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 29.16666667%
+ }
+
+ .ant-col-xxl-push-7 {
+ left: 29.16666667%
+ }
+
+ .ant-col-xxl-pull-7 {
+ right: 29.16666667%
+ }
+
+ .ant-col-xxl-offset-7 {
+ margin-left: 29.16666667%
+ }
+
+ .ant-col-xxl-order-7 {
+ -webkit-box-ordinal-group: 8;
+ -ms-flex-order: 7;
+ order: 7
+ }
+
+ .ant-col-xxl-6 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 25%
+ }
+
+ .ant-col-xxl-push-6 {
+ left: 25%
+ }
+
+ .ant-col-xxl-pull-6 {
+ right: 25%
+ }
+
+ .ant-col-xxl-offset-6 {
+ margin-left: 25%
+ }
+
+ .ant-col-xxl-order-6 {
+ -webkit-box-ordinal-group: 7;
+ -ms-flex-order: 6;
+ order: 6
+ }
+
+ .ant-col-xxl-5 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 20.83333333%
+ }
+
+ .ant-col-xxl-push-5 {
+ left: 20.83333333%
+ }
+
+ .ant-col-xxl-pull-5 {
+ right: 20.83333333%
+ }
+
+ .ant-col-xxl-offset-5 {
+ margin-left: 20.83333333%
+ }
+
+ .ant-col-xxl-order-5 {
+ -webkit-box-ordinal-group: 6;
+ -ms-flex-order: 5;
+ order: 5
+ }
+
+ .ant-col-xxl-4 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 16.66666667%
+ }
+
+ .ant-col-xxl-push-4 {
+ left: 16.66666667%
+ }
+
+ .ant-col-xxl-pull-4 {
+ right: 16.66666667%
+ }
+
+ .ant-col-xxl-offset-4 {
+ margin-left: 16.66666667%
+ }
+
+ .ant-col-xxl-order-4 {
+ -webkit-box-ordinal-group: 5;
+ -ms-flex-order: 4;
+ order: 4
+ }
+
+ .ant-col-xxl-3 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 12.5%
+ }
+
+ .ant-col-xxl-push-3 {
+ left: 12.5%
+ }
+
+ .ant-col-xxl-pull-3 {
+ right: 12.5%
+ }
+
+ .ant-col-xxl-offset-3 {
+ margin-left: 12.5%
+ }
+
+ .ant-col-xxl-order-3 {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3
+ }
+
+ .ant-col-xxl-2 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 8.33333333%
+ }
+
+ .ant-col-xxl-push-2 {
+ left: 8.33333333%
+ }
+
+ .ant-col-xxl-pull-2 {
+ right: 8.33333333%
+ }
+
+ .ant-col-xxl-offset-2 {
+ margin-left: 8.33333333%
+ }
+
+ .ant-col-xxl-order-2 {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2
+ }
+
+ .ant-col-xxl-1 {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 4.16666667%
+ }
+
+ .ant-col-xxl-push-1 {
+ left: 4.16666667%
+ }
+
+ .ant-col-xxl-pull-1 {
+ right: 4.16666667%
+ }
+
+ .ant-col-xxl-offset-1 {
+ margin-left: 4.16666667%
+ }
+
+ .ant-col-xxl-order-1 {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+ }
+
+ .ant-col-xxl-0 {
+ display: none
+ }
+
+ .ant-col-push-0 {
+ left: auto
+ }
+
+ .ant-col-pull-0 {
+ right: auto
+ }
+
+ .ant-col-xxl-push-0 {
+ left: auto
+ }
+
+ .ant-col-xxl-pull-0 {
+ right: auto
+ }
+
+ .ant-col-xxl-offset-0 {
+ margin-left: 0
+ }
+
+ .ant-col-xxl-order-0 {
+ -webkit-box-ordinal-group: 1;
+ -ms-flex-order: 0;
+ order: 0
+ }
+}
+
+.ant-input {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ font-variant: tabular-nums;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ height: 32px;
+ padding: 4px 11px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input:focus, .ant-input:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-input:focus {
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+.ant-input-disabled {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-input-disabled:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+.ant-input[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-input[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+textarea.ant-input {
+ max-width: 100%;
+ height: auto;
+ min-height: 32px;
+ line-height: 1.5;
+ vertical-align: bottom;
+ -webkit-transition: all .3s,height 0s;
+ transition: all .3s,height 0s
+}
+
+.ant-input-lg {
+ height: 40px;
+ padding: 6px 11px;
+ font-size: 16px
+}
+
+.ant-input-sm {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-input-group {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: table;
+ width: 100%;
+ border-collapse: separate;
+ border-spacing: 0
+}
+
+ .ant-input-group[class*=col-] {
+ float: none;
+ padding-right: 0;
+ padding-left: 0
+ }
+
+ .ant-input-group > [class*=col-] {
+ padding-right: 8px
+ }
+
+ .ant-input-group > [class*=col-]:last-child {
+ padding-right: 0
+ }
+
+ .ant-input-group-addon, .ant-input-group-wrap, .ant-input-group > .ant-input {
+ display: table-cell
+ }
+
+ .ant-input-group-addon:not(:first-child):not(:last-child), .ant-input-group-wrap:not(:first-child):not(:last-child), .ant-input-group > .ant-input:not(:first-child):not(:last-child) {
+ border-radius: 0
+ }
+
+.ant-input-group-addon, .ant-input-group-wrap {
+ width: 1px;
+ white-space: nowrap;
+ vertical-align: middle
+}
+
+ .ant-input-group-wrap > * {
+ display: block !important
+ }
+
+.ant-input-group .ant-input {
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+ text-align: inherit
+}
+
+ .ant-input-group .ant-input:focus, .ant-input-group .ant-input:hover {
+ z-index: 1;
+ border-right-width: 1px
+ }
+
+.ant-input-group-addon {
+ position: relative;
+ padding: 0 11px;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ font-size: 14px;
+ text-align: center;
+ background-color: #fafafa;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-input-group-addon .ant-select {
+ margin: -5px -11px
+ }
+
+ .ant-input-group-addon .ant-select .ant-select-selection {
+ margin: -1px;
+ background-color: inherit;
+ border: 1px solid transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-input-group-addon .ant-select-focused .ant-select-selection, .ant-input-group-addon .ant-select-open .ant-select-selection {
+ color: #fa541c
+ }
+
+ .ant-input-group-addon > i:only-child:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ content: ""
+ }
+
+ .ant-input-group-addon:first-child, .ant-input-group-addon:first-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:first-child, .ant-input-group > .ant-input:first-child .ant-select .ant-select-selection {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+ }
+
+.ant-input-group > .ant-input-affix-wrapper:not(:first-child) .ant-input {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+}
+
+.ant-input-group > .ant-input-affix-wrapper:not(:last-child) .ant-input {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0
+}
+
+.ant-input-group-addon:first-child {
+ border-right: 0
+}
+
+.ant-input-group-addon:last-child {
+ border-left: 0
+}
+
+ .ant-input-group-addon:last-child, .ant-input-group-addon:last-child .ant-select .ant-select-selection, .ant-input-group > .ant-input:last-child, .ant-input-group > .ant-input:last-child .ant-select .ant-select-selection {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+.ant-input-group-lg .ant-input, .ant-input-group-lg > .ant-input-group-addon {
+ height: 40px;
+ padding: 6px 11px;
+ font-size: 16px
+}
+
+.ant-input-group-sm .ant-input, .ant-input-group-sm > .ant-input-group-addon {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-input-group-lg .ant-select-selection--single {
+ height: 40px
+}
+
+.ant-input-group-sm .ant-select-selection--single {
+ height: 24px
+}
+
+.ant-input-group .ant-input-affix-wrapper {
+ display: table-cell;
+ float: left;
+ width: 100%
+}
+
+.ant-input-group.ant-input-group-compact {
+ display: block;
+ zoom: 1
+}
+
+ .ant-input-group.ant-input-group-compact:after, .ant-input-group.ant-input-group-compact:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-input-group.ant-input-group-compact:after {
+ clear: both
+ }
+
+ .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child), .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child) {
+ border-right-width: 1px
+ }
+
+ .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-addon:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact-wrap:not(:first-child):not(:last-child):hover, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):focus, .ant-input-group.ant-input-group-compact > .ant-input:not(:first-child):not(:last-child):hover {
+ z-index: 1
+ }
+
+ .ant-input-group.ant-input-group-compact > * {
+ display: inline-block;
+ float: none;
+ vertical-align: top;
+ border-radius: 0
+ }
+
+ .ant-input-group.ant-input-group-compact > :not(:last-child) {
+ margin-right: -1px;
+ border-right-width: 1px
+ }
+
+ .ant-input-group.ant-input-group-compact .ant-input {
+ float: none
+ }
+
+ .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input {
+ border-right-width: 1px;
+ border-radius: 0
+ }
+
+ .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-calendar-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-cascader-picker .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-input-group-wrapper .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:focus, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper .ant-mention-editor:hover, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:focus, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input:hover, .ant-input-group.ant-input-group-compact > .ant-select-focused, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:focus, .ant-input-group.ant-input-group-compact > .ant-select > .ant-select-selection:hover, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:focus, .ant-input-group.ant-input-group-compact > .ant-time-picker .ant-time-picker-input:hover {
+ z-index: 1
+ }
+
+ .ant-input-group.ant-input-group-compact > .ant-calendar-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:first-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:first-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :first-child {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px
+ }
+
+ .ant-input-group.ant-input-group-compact > .ant-calendar-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-mention-wrapper:last-child .ant-mention-editor, .ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selection, .ant-input-group.ant-input-group-compact > .ant-time-picker:last-child .ant-time-picker-input, .ant-input-group.ant-input-group-compact > :last-child {
+ border-right-width: 1px;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px
+ }
+
+ .ant-input-group.ant-input-group-compact > .ant-select-auto-complete .ant-input {
+ vertical-align: top
+ }
+
+.ant-input-group-wrapper {
+ display: inline-block;
+ width: 100%;
+ text-align: start;
+ vertical-align: top
+}
+
+.ant-input-affix-wrapper {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ text-align: start
+}
+
+ .ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-input-affix-wrapper .ant-input {
+ position: relative;
+ text-align: inherit
+ }
+
+ .ant-input-affix-wrapper .ant-input-prefix, .ant-input-affix-wrapper .ant-input-suffix {
+ position: absolute;
+ top: 50%;
+ z-index: 2;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ color: rgba(0,0,0,.65);
+ line-height: 0;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%)
+ }
+
+ .ant-input-affix-wrapper .ant-input-prefix :not(.anticon), .ant-input-affix-wrapper .ant-input-suffix :not(.anticon) {
+ line-height: 1.5
+ }
+
+ .ant-input-affix-wrapper .ant-input-disabled ~ .ant-input-suffix .anticon {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+ }
+
+ .ant-input-affix-wrapper .ant-input-prefix {
+ left: 12px
+ }
+
+ .ant-input-affix-wrapper .ant-input-suffix {
+ right: 12px
+ }
+
+ .ant-input-affix-wrapper .ant-input:not(:first-child) {
+ padding-left: 30px
+ }
+
+ .ant-input-affix-wrapper .ant-input:not(:last-child) {
+ padding-right: 30px
+ }
+
+ .ant-input-affix-wrapper.ant-input-affix-wrapper-input-with-clear-btn .ant-input:not(:last-child) {
+ padding-right: 49px
+ }
+
+ .ant-input-affix-wrapper.ant-input-affix-wrapper-textarea-with-clear-btn .ant-input {
+ padding-right: 22px
+ }
+
+.ant-input-password-icon {
+ color: rgba(0,0,0,.45);
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-input-password-icon:hover {
+ color: #333
+ }
+
+.ant-input-clear-icon {
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ vertical-align: 0
+}
+
+ .ant-input-clear-icon:hover {
+ color: rgba(0,0,0,.45)
+ }
+
+ .ant-input-clear-icon:active {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-input-clear-icon + i {
+ margin-left: 6px
+ }
+
+.ant-input-textarea-clear-icon {
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 8px 8px 0 0
+}
+
+ .ant-input-textarea-clear-icon:hover {
+ color: rgba(0,0,0,.45)
+ }
+
+ .ant-input-textarea-clear-icon:active {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-input-textarea-clear-icon + i {
+ margin-left: 6px
+ }
+
+.ant-input-search-icon {
+ color: rgba(0,0,0,.45);
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-input-search-icon:hover {
+ color: rgba(0,0,0,.8)
+ }
+
+.ant-input-search-enter-button input {
+ border-right: 0
+}
+
+ .ant-input-search-enter-button + .ant-input-group-addon, .ant-input-search-enter-button input + .ant-input-group-addon {
+ padding: 0;
+ border: 0
+ }
+
+ .ant-input-search-enter-button + .ant-input-group-addon .ant-input-search-button, .ant-input-search-enter-button input + .ant-input-group-addon .ant-input-search-button {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0
+ }
+
+.ant-input-number {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-variant: tabular-nums;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ width: 100%;
+ height: 32px;
+ padding: 4px 11px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5;
+ background-color: #fff;
+ background-image: none;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ display: inline-block;
+ width: 90px;
+ margin: 0;
+ padding: 0;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px
+}
+
+ .ant-input-number::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-input-number:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input-number::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input-number:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number:focus {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+ .ant-input-number[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+ }
+
+ .ant-input-number[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+textarea.ant-input-number {
+ max-width: 100%;
+ height: auto;
+ min-height: 32px;
+ line-height: 1.5;
+ vertical-align: bottom;
+ -webkit-transition: all .3s,height 0s;
+ transition: all .3s,height 0s
+}
+
+.ant-input-number-lg {
+ height: 40px;
+ padding: 6px 11px
+}
+
+.ant-input-number-sm {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-input-number-handler {
+ position: relative;
+ display: block;
+ width: 100%;
+ height: 50%;
+ overflow: hidden;
+ color: rgba(0,0,0,.45);
+ font-weight: 700;
+ line-height: 0;
+ text-align: center;
+ -webkit-transition: all .1s linear;
+ transition: all .1s linear
+}
+
+ .ant-input-number-handler:active {
+ background: #f4f4f4
+ }
+
+ .ant-input-number-handler:hover .ant-input-number-handler-down-inner, .ant-input-number-handler:hover .ant-input-number-handler-up-inner {
+ color: #ff7a45
+ }
+
+.ant-input-number-handler-down-inner, .ant-input-number-handler-up-inner {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: absolute;
+ right: 4px;
+ width: 12px;
+ height: 12px;
+ color: rgba(0,0,0,.45);
+ line-height: 12px;
+ -webkit-transition: all .1s linear;
+ transition: all .1s linear;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-input-number-handler-down-inner > *, .ant-input-number-handler-up-inner > * {
+ line-height: 1
+ }
+
+ .ant-input-number-handler-down-inner svg, .ant-input-number-handler-up-inner svg {
+ display: inline-block
+ }
+
+ .ant-input-number-handler-down-inner:before, .ant-input-number-handler-up-inner:before {
+ display: none
+ }
+
+ .ant-input-number-handler-down-inner .ant-input-number-handler-down-inner-icon, .ant-input-number-handler-down-inner .ant-input-number-handler-up-inner-icon, .ant-input-number-handler-up-inner .ant-input-number-handler-down-inner-icon, .ant-input-number-handler-up-inner .ant-input-number-handler-up-inner-icon {
+ display: block
+ }
+
+.ant-input-number-focused, .ant-input-number:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+}
+
+.ant-input-number-focused {
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-input-number-disabled {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-input-number-disabled:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+ .ant-input-number-disabled .ant-input-number-input {
+ cursor: not-allowed
+ }
+
+ .ant-input-number-disabled .ant-input-number-handler-wrap {
+ display: none
+ }
+
+.ant-input-number-input {
+ width: 100%;
+ height: 30px;
+ padding: 0 11px;
+ text-align: left;
+ background-color: transparent;
+ border: 0;
+ border-radius: 2px;
+ outline: 0;
+ -webkit-transition: all .3s linear;
+ transition: all .3s linear;
+ -moz-appearance: textfield !important
+}
+
+ .ant-input-number-input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-input-number-input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input-number-input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-input-number-input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number-input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number-input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-input-number-input[type=number]::-webkit-inner-spin-button, .ant-input-number-input[type=number]::-webkit-outer-spin-button {
+ margin: 0;
+ -webkit-appearance: none
+ }
+
+.ant-input-number-lg {
+ padding: 0;
+ font-size: 16px
+}
+
+ .ant-input-number-lg input {
+ height: 38px
+ }
+
+.ant-input-number-sm {
+ padding: 0
+}
+
+ .ant-input-number-sm input {
+ height: 22px;
+ padding: 0 7px
+ }
+
+.ant-input-number-handler-wrap {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 22px;
+ height: 100%;
+ background: #fff;
+ border-left: 1px solid #d9d9d9;
+ border-radius: 0 2px 2px 0;
+ opacity: 0;
+ -webkit-transition: opacity .24s linear .1s;
+ transition: opacity .24s linear .1s
+}
+
+ .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner, .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 7px\9;
+ -webkit-transform: scale(.58333333) rotate(0deg);
+ transform: scale(.58333333) rotate(0deg);
+ min-width: auto;
+ margin-right: 0
+ }
+
+:root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-down-inner, :root .ant-input-number-handler-wrap .ant-input-number-handler .ant-input-number-handler-up-inner {
+ font-size: 12px
+}
+
+.ant-input-number-handler-wrap:hover .ant-input-number-handler {
+ height: 40%
+}
+
+.ant-input-number:hover .ant-input-number-handler-wrap {
+ opacity: 1
+}
+
+.ant-input-number-handler-up {
+ border-top-right-radius: 2px;
+ cursor: pointer
+}
+
+.ant-input-number-handler-up-inner {
+ top: 50%;
+ margin-top: -5px;
+ text-align: center
+}
+
+.ant-input-number-handler-up:hover {
+ height: 60% !important
+}
+
+.ant-input-number-handler-down {
+ top: 0;
+ border-top: 1px solid #d9d9d9;
+ border-bottom-right-radius: 2px;
+ cursor: pointer
+}
+
+.ant-input-number-handler-down-inner {
+ top: 50%;
+ margin-top: -6px;
+ text-align: center
+}
+
+.ant-input-number-handler-down:hover {
+ height: 60% !important
+}
+
+.ant-input-number-handler-down-disabled, .ant-input-number-handler-up-disabled {
+ cursor: not-allowed
+}
+
+ .ant-input-number-handler-down-disabled:hover .ant-input-number-handler-down-inner, .ant-input-number-handler-up-disabled:hover .ant-input-number-handler-up-inner {
+ color: rgba(0,0,0,.25)
+ }
+
+.ant-layout {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -ms-flex: auto;
+ flex: auto;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ min-height: 0;
+ background: #f0f2f5
+}
+
+ .ant-layout, .ant-layout * {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box
+ }
+
+ .ant-layout.ant-layout-has-sider {
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row
+ }
+
+ .ant-layout.ant-layout-has-sider > .ant-layout, .ant-layout.ant-layout-has-sider > .ant-layout-content {
+ overflow-x: hidden
+ }
+
+.ant-layout-footer, .ant-layout-header {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto
+}
+
+.ant-layout-header {
+ height: 64px;
+ padding: 0 50px;
+ line-height: 64px;
+ background: #001529
+}
+
+.ant-layout-footer {
+ padding: 24px 50px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ background: #f0f2f5
+}
+
+.ant-layout-content {
+ -webkit-box-flex: 1;
+ -ms-flex: auto;
+ flex: auto;
+ min-height: 0
+}
+
+.ant-layout-sider {
+ position: relative;
+ min-width: 0;
+ background: #001529;
+ -webkit-transition: all .2s;
+ transition: all .2s
+}
+
+.ant-layout-sider-children {
+ height: 100%;
+ margin-top: -.1px;
+ padding-top: .1px
+}
+
+.ant-layout-sider-has-trigger {
+ padding-bottom: 48px
+}
+
+.ant-layout-sider-right {
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1
+}
+
+.ant-layout-sider-trigger {
+ position: fixed;
+ bottom: 0;
+ z-index: 1;
+ height: 48px;
+ color: #fff;
+ line-height: 48px;
+ text-align: center;
+ background: #002140;
+ cursor: pointer;
+ -webkit-transition: all .2s;
+ transition: all .2s
+}
+
+.ant-layout-sider-zero-width > * {
+ overflow: hidden
+}
+
+.ant-layout-sider-zero-width-trigger {
+ position: absolute;
+ top: 64px;
+ right: -36px;
+ z-index: 1;
+ width: 36px;
+ height: 42px;
+ color: #fff;
+ font-size: 18px;
+ line-height: 42px;
+ text-align: center;
+ background: #001529;
+ border-radius: 0 2px 2px 0;
+ cursor: pointer;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-layout-sider-zero-width-trigger:hover {
+ background: #192c3e
+ }
+
+.ant-layout-sider-zero-width-trigger-right {
+ left: -36px;
+ border-radius: 2px 0 0 2px
+}
+
+.ant-layout-sider-light {
+ background: #fff
+}
+
+ .ant-layout-sider-light .ant-layout-sider-trigger, .ant-layout-sider-light .ant-layout-sider-zero-width-trigger {
+ color: rgba(0,0,0,.65);
+ background: #fff
+ }
+
+.ant-list {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative
+}
+
+ .ant-list * {
+ outline: none
+ }
+
+.ant-list-pagination {
+ margin-top: 24px;
+ text-align: right
+}
+
+ .ant-list-pagination .ant-pagination-options {
+ text-align: left
+ }
+
+.ant-list-more {
+ margin-top: 12px;
+ text-align: center
+}
+
+ .ant-list-more button {
+ padding-right: 32px;
+ padding-left: 32px
+ }
+
+.ant-list-spin {
+ min-height: 40px;
+ text-align: center
+}
+
+.ant-list-empty-text {
+ padding: 16px;
+ color: rgba(0,0,0,.25);
+ font-size: 14px;
+ text-align: center
+}
+
+.ant-list-items {
+ margin: 0;
+ padding: 0;
+ list-style: none
+}
+
+.ant-list-item {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ padding: 12px 0
+}
+
+.ant-list-item-content {
+ color: rgba(0,0,0,.65)
+}
+
+.ant-list-item-meta {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ font-size: 0
+}
+
+.ant-list-item-meta-avatar {
+ margin-right: 16px
+}
+
+.ant-list-item-meta-content {
+ -webkit-box-flex: 1;
+ -ms-flex: 1 0;
+ flex: 1 0
+}
+
+.ant-list-item-meta-title {
+ margin-bottom: 4px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 22px
+}
+
+ .ant-list-item-meta-title > a {
+ color: rgba(0,0,0,.65);
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-list-item-meta-title > a:hover {
+ color: #fa541c
+ }
+
+.ant-list-item-meta-description {
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 22px
+}
+
+.ant-list-item-action {
+ -webkit-box-flex: 0;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ margin-left: 48px;
+ padding: 0;
+ font-size: 0;
+ list-style: none
+}
+
+ .ant-list-item-action > li {
+ position: relative;
+ display: inline-block;
+ padding: 0 8px;
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 22px;
+ text-align: center;
+ cursor: pointer
+ }
+
+ .ant-list-item-action > li:first-child {
+ padding-left: 0
+ }
+
+.ant-list-item-action-split {
+ position: absolute;
+ top: 50%;
+ right: 0;
+ width: 1px;
+ height: 14px;
+ margin-top: -7px;
+ background-color: #e8e8e8
+}
+
+.ant-list-footer, .ant-list-header {
+ background: transparent
+}
+
+.ant-list-footer, .ant-list-header {
+ padding-top: 12px;
+ padding-bottom: 12px
+}
+
+.ant-list-empty {
+ padding: 16px 0;
+ color: rgba(0,0,0,.45);
+ font-size: 12px;
+ text-align: center
+}
+
+.ant-list-split .ant-list-item {
+ border-bottom: 1px solid #e8e8e8
+}
+
+ .ant-list-split .ant-list-item:last-child {
+ border-bottom: none
+ }
+
+.ant-list-split .ant-list-header {
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-list-loading .ant-list-spin-nested-loading {
+ min-height: 32px
+}
+
+.ant-list-something-after-last-item .ant-spin-container > .ant-list-items > .ant-list-item:last-child {
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-list-lg .ant-list-item {
+ padding-top: 16px;
+ padding-bottom: 16px
+}
+
+.ant-list-sm .ant-list-item {
+ padding-top: 8px;
+ padding-bottom: 8px
+}
+
+.ant-list-vertical .ant-list-item {
+ -webkit-box-align: initial;
+ -ms-flex-align: initial;
+ align-items: normal
+}
+
+.ant-list-vertical .ant-list-item-main {
+ display: block;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+}
+
+.ant-list-vertical .ant-list-item-extra {
+ margin-left: 40px
+}
+
+.ant-list-vertical .ant-list-item-meta {
+ margin-bottom: 16px
+}
+
+.ant-list-vertical .ant-list-item-meta-title {
+ margin-bottom: 12px;
+ color: rgba(0,0,0,.85);
+ font-size: 16px;
+ line-height: 24px
+}
+
+.ant-list-vertical .ant-list-item-action {
+ margin-top: 16px;
+ margin-left: auto
+}
+
+ .ant-list-vertical .ant-list-item-action > li {
+ padding: 0 16px
+ }
+
+ .ant-list-vertical .ant-list-item-action > li:first-child {
+ padding-left: 0
+ }
+
+.ant-list-grid .ant-col > .ant-list-item {
+ display: block;
+ max-width: 100%;
+ margin-bottom: 16px;
+ padding-top: 0;
+ padding-bottom: 0;
+ border-bottom: none
+}
+
+.ant-list-item-no-flex {
+ display: block
+}
+
+.ant-list:not(.ant-list-vertical) .ant-list-item-no-flex .ant-list-item-action {
+ float: right
+}
+
+.ant-list-bordered {
+ border: 1px solid #d9d9d9;
+ border-radius: 2px
+}
+
+ .ant-list-bordered .ant-list-footer, .ant-list-bordered .ant-list-header, .ant-list-bordered .ant-list-item {
+ padding-right: 24px;
+ padding-left: 24px
+ }
+
+ .ant-list-bordered .ant-list-item {
+ border-bottom: 1px solid #e8e8e8
+ }
+
+ .ant-list-bordered .ant-list-pagination {
+ margin: 16px 24px
+ }
+
+ .ant-list-bordered.ant-list-sm .ant-list-item {
+ padding-right: 16px;
+ padding-left: 16px
+ }
+
+ .ant-list-bordered.ant-list-sm .ant-list-footer, .ant-list-bordered.ant-list-sm .ant-list-header {
+ padding: 8px 16px
+ }
+
+ .ant-list-bordered.ant-list-lg .ant-list-footer, .ant-list-bordered.ant-list-lg .ant-list-header {
+ padding: 16px 24px
+ }
+
+@media screen and (max-width:768px) {
+ .ant-list-item-action, .ant-list-vertical .ant-list-item-extra {
+ margin-left: 24px
+ }
+}
+
+@media screen and (max-width:576px) {
+ .ant-list-item {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap
+ }
+
+ .ant-list-item-action {
+ margin-left: 12px
+ }
+
+ .ant-list-vertical .ant-list-item {
+ -ms-flex-wrap: wrap-reverse;
+ flex-wrap: wrap-reverse
+ }
+
+ .ant-list-vertical .ant-list-item-main {
+ min-width: 220px
+ }
+
+ .ant-list-vertical .ant-list-item-extra {
+ margin: auto auto 16px
+ }
+}
+
+.ant-mentions {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ font-variant: tabular-nums;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ width: 100%;
+ height: 32px;
+ padding: 4px 11px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ position: relative;
+ display: inline-block;
+ height: auto;
+ padding: 0;
+ overflow: hidden;
+ line-height: 1.5;
+ white-space: pre-wrap;
+ vertical-align: bottom
+}
+
+ .ant-mentions::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-mentions:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-mentions::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-mentions:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions:focus, .ant-mentions:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-mentions:focus {
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+.ant-mentions-disabled {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-mentions-disabled:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+.ant-mentions[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-mentions[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+textarea.ant-mentions {
+ max-width: 100%;
+ height: auto;
+ min-height: 32px;
+ line-height: 1.5;
+ vertical-align: bottom;
+ -webkit-transition: all .3s,height 0s;
+ transition: all .3s,height 0s
+}
+
+.ant-mentions-lg {
+ height: 40px;
+ padding: 6px 11px;
+ font-size: 16px
+}
+
+.ant-mentions-sm {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-mentions-disabled > textarea {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+}
+
+ .ant-mentions-disabled > textarea:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+.ant-mentions-focused {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-mentions-measure, .ant-mentions > textarea {
+ min-height: 30px;
+ margin: 0;
+ padding: 4px 11px;
+ overflow: inherit;
+ overflow-x: hidden;
+ overflow-y: auto;
+ font-weight: inherit;
+ font-size: inherit;
+ font-family: inherit;
+ font-style: inherit;
+ font-variant: inherit;
+ font-size-adjust: inherit;
+ font-stretch: inherit;
+ line-height: inherit;
+ direction: inherit;
+ letter-spacing: inherit;
+ white-space: inherit;
+ text-align: inherit;
+ vertical-align: top;
+ word-wrap: break-word;
+ word-break: inherit;
+ -moz-tab-size: inherit;
+ -o-tab-size: inherit;
+ tab-size: inherit
+}
+
+.ant-mentions > textarea {
+ width: 100%;
+ border: none;
+ outline: none;
+ resize: none
+}
+
+ .ant-mentions > textarea::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-mentions > textarea:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-mentions > textarea::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-mentions > textarea:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions > textarea:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions > textarea:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-mentions > textarea:-moz-read-only {
+ cursor: default
+ }
+
+ .ant-mentions > textarea:read-only {
+ cursor: default
+ }
+
+.ant-mentions-measure {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+ color: transparent;
+ pointer-events: none
+}
+
+ .ant-mentions-measure > span {
+ display: inline-block;
+ min-height: 1em
+ }
+
+.ant-mentions-dropdown {
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ z-index: 1050;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: 14px;
+ font-variant: normal;
+ background-color: #fff;
+ border-radius: 2px;
+ outline: none;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+.ant-mentions-dropdown-hidden {
+ display: none
+}
+
+.ant-mentions-dropdown-menu {
+ max-height: 250px;
+ margin-bottom: 0;
+ padding-left: 0;
+ overflow: auto;
+ list-style: none;
+ outline: none
+}
+
+.ant-mentions-dropdown-menu-item {
+ position: relative;
+ display: block;
+ min-width: 100px;
+ padding: 5px 12px;
+ overflow: hidden;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ line-height: 22px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ cursor: pointer;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-mentions-dropdown-menu-item:hover {
+ background-color: #fff2e8
+ }
+
+ .ant-mentions-dropdown-menu-item:first-child {
+ border-radius: 2px 2px 0 0
+ }
+
+ .ant-mentions-dropdown-menu-item:last-child {
+ border-radius: 0 0 2px 2px
+ }
+
+.ant-mentions-dropdown-menu-item-disabled {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+ .ant-mentions-dropdown-menu-item-disabled:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #fff;
+ cursor: not-allowed
+ }
+
+.ant-mentions-dropdown-menu-item-selected {
+ color: rgba(0,0,0,.65);
+ font-weight: 600;
+ background-color: #fafafa
+}
+
+.ant-mentions-dropdown-menu-item-active {
+ background-color: #fff2e8
+}
+
+.ant-menu {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ margin-bottom: 0;
+ padding-left: 0;
+ color: rgba(0,0,0,.65);
+ line-height: 0;
+ list-style: none;
+ background: #fff;
+ outline: none;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ -webkit-transition: background .3s,width .3s cubic-bezier(.2,0,0,1) 0s;
+ transition: background .3s,width .3s cubic-bezier(.2,0,0,1) 0s;
+ zoom: 1
+}
+
+ .ant-menu:after, .ant-menu:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-menu:after {
+ clear: both
+ }
+
+ .ant-menu ol, .ant-menu ul {
+ margin: 0;
+ padding: 0;
+ list-style: none
+ }
+
+.ant-menu-hidden {
+ display: none
+}
+
+.ant-menu-item-group-title {
+ padding: 8px 16px;
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 1.5;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-menu-submenu, .ant-menu-submenu-inline {
+ -webkit-transition: border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);
+ transition: border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-submenu-selected {
+ color: #fa541c
+}
+
+.ant-menu-item:active, .ant-menu-submenu-title:active {
+ background: #fff2e8
+}
+
+.ant-menu-submenu .ant-menu-sub {
+ cursor: auto;
+ -webkit-transition: background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);
+ transition: background .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-item > a {
+ display: block;
+ color: rgba(0,0,0,.65)
+}
+
+ .ant-menu-item > a:hover {
+ color: #fa541c
+ }
+
+ .ant-menu-item > a:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: transparent;
+ content: ""
+ }
+
+.ant-menu-item > .ant-badge > a {
+ color: rgba(0,0,0,.65)
+}
+
+ .ant-menu-item > .ant-badge > a:hover {
+ color: #fa541c
+ }
+
+.ant-menu-item-divider {
+ height: 1px;
+ overflow: hidden;
+ line-height: 0;
+ background-color: #e8e8e8
+}
+
+.ant-menu-item-active, .ant-menu-item:hover, .ant-menu-submenu-active, .ant-menu-submenu-title:hover, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open {
+ color: #fa541c
+}
+
+.ant-menu-horizontal .ant-menu-item, .ant-menu-horizontal .ant-menu-submenu {
+ margin-top: -1px
+}
+
+.ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-submenu .ant-menu-submenu-title:hover {
+ background-color: transparent
+}
+
+.ant-menu-item-selected, .ant-menu-item-selected > a, .ant-menu-item-selected > a:hover {
+ color: #fa541c
+}
+
+.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
+ background-color: #fff2e8
+}
+
+.ant-menu-inline, .ant-menu-vertical, .ant-menu-vertical-left {
+ border-right: 1px solid #e8e8e8
+}
+
+.ant-menu-vertical-right {
+ border-left: 1px solid #e8e8e8
+}
+
+ .ant-menu-vertical-left.ant-menu-sub, .ant-menu-vertical-right.ant-menu-sub, .ant-menu-vertical.ant-menu-sub {
+ min-width: 160px;
+ padding: 0;
+ border-right: 0;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+ }
+
+ .ant-menu-vertical-left.ant-menu-sub .ant-menu-item, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item, .ant-menu-vertical.ant-menu-sub .ant-menu-item {
+ left: 0;
+ margin-left: 0;
+ border-right: 0
+ }
+
+ .ant-menu-vertical-left.ant-menu-sub .ant-menu-item:after, .ant-menu-vertical-right.ant-menu-sub .ant-menu-item:after, .ant-menu-vertical.ant-menu-sub .ant-menu-item:after {
+ border-right: 0
+ }
+
+ .ant-menu-vertical-left.ant-menu-sub > .ant-menu-item, .ant-menu-vertical-left.ant-menu-sub > .ant-menu-submenu, .ant-menu-vertical-right.ant-menu-sub > .ant-menu-item, .ant-menu-vertical-right.ant-menu-sub > .ant-menu-submenu, .ant-menu-vertical.ant-menu-sub > .ant-menu-item, .ant-menu-vertical.ant-menu-sub > .ant-menu-submenu {
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+ }
+
+.ant-menu-horizontal.ant-menu-sub {
+ min-width: 114px
+}
+
+.ant-menu-item, .ant-menu-submenu-title {
+ position: relative;
+ display: block;
+ margin: 0;
+ padding: 0 20px;
+ white-space: nowrap;
+ cursor: pointer;
+ -webkit-transition: color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1);
+ transition: color .3s cubic-bezier(.645,.045,.355,1),border-color .3s cubic-bezier(.645,.045,.355,1),background .3s cubic-bezier(.645,.045,.355,1),padding .15s cubic-bezier(.645,.045,.355,1)
+}
+
+ .ant-menu-item .anticon, .ant-menu-submenu-title .anticon {
+ min-width: 14px;
+ margin-right: 10px;
+ font-size: 14px;
+ -webkit-transition: font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1);
+ transition: font-size .15s cubic-bezier(.215,.61,.355,1),margin .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-menu-item .anticon + span, .ant-menu-submenu-title .anticon + span {
+ opacity: 1;
+ -webkit-transition: opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1);
+ transition: opacity .3s cubic-bezier(.645,.045,.355,1),width .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+.ant-menu > .ant-menu-item-divider {
+ height: 1px;
+ margin: 1px 0;
+ padding: 0;
+ overflow: hidden;
+ line-height: 0;
+ background-color: #e8e8e8
+}
+
+.ant-menu-submenu-popup {
+ position: absolute;
+ z-index: 1050;
+ background: #fff;
+ border-radius: 2px
+}
+
+ .ant-menu-submenu-popup .submenu-title-wrapper {
+ padding-right: 20px
+ }
+
+ .ant-menu-submenu-popup:before {
+ position: absolute;
+ top: -7px;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ opacity: .0001;
+ content: " "
+ }
+
+.ant-menu-submenu > .ant-menu {
+ background-color: #fff;
+ border-radius: 2px
+}
+
+.ant-menu-submenu > .ant-menu-submenu-title:after {
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+ position: absolute;
+ top: 50%;
+ right: 16px;
+ width: 10px;
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+ .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+ position: absolute;
+ width: 6px;
+ height: 1.5px;
+ background: #fff;
+ background: rgba(0,0,0,.65)\9;
+ background-image: -webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.65)),to(rgba(0,0,0,.65)));
+ background-image: linear-gradient(90deg,rgba(0,0,0,.65),rgba(0,0,0,.65));
+ background-image: none\9;
+ border-radius: 2px;
+ -webkit-transition: background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: background .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1);
+ transition: background .3s cubic-bezier(.645,.045,.355,1),transform .3s cubic-bezier(.645,.045,.355,1),top .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ content: ""
+ }
+
+ .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+ -webkit-transform: rotate(45deg) translateY(-2px);
+ transform: rotate(45deg) translateY(-2px)
+ }
+
+ .ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+ -webkit-transform: rotate(-45deg) translateY(2px);
+ transform: rotate(-45deg) translateY(2px)
+ }
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-inline > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-left > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical-right > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:after, .ant-menu-submenu-vertical > .ant-menu-submenu-title:hover .ant-menu-submenu-arrow:before {
+ background: -webkit-gradient(linear,left top,right top,from(#fa541c),to(#fa541c));
+ background: linear-gradient(90deg,#fa541c,#fa541c)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+ -webkit-transform: rotate(-45deg) translateX(2px);
+ transform: rotate(-45deg) translateX(2px)
+}
+
+.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+ -webkit-transform: rotate(45deg) translateX(-2px);
+ transform: rotate(45deg) translateX(-2px)
+}
+
+.ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+ -webkit-transform: translateY(-2px);
+ transform: translateY(-2px)
+}
+
+ .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:after {
+ -webkit-transform: rotate(-45deg) translateX(-2px);
+ transform: rotate(-45deg) translateX(-2px)
+ }
+
+ .ant-menu-submenu-open.ant-menu-submenu-inline > .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+ -webkit-transform: rotate(45deg) translateX(2px);
+ transform: rotate(45deg) translateX(2px)
+ }
+
+.ant-menu-vertical-left .ant-menu-submenu-selected, .ant-menu-vertical-left .ant-menu-submenu-selected > a, .ant-menu-vertical-right .ant-menu-submenu-selected, .ant-menu-vertical-right .ant-menu-submenu-selected > a, .ant-menu-vertical .ant-menu-submenu-selected, .ant-menu-vertical .ant-menu-submenu-selected > a {
+ color: #fa541c
+}
+
+.ant-menu-horizontal {
+ line-height: 46px;
+ white-space: nowrap;
+ border: 0;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+ .ant-menu-horizontal > .ant-menu-item, .ant-menu-horizontal > .ant-menu-submenu {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ vertical-align: bottom;
+ border-bottom: 2px solid transparent
+ }
+
+ .ant-menu-horizontal > .ant-menu-item-active, .ant-menu-horizontal > .ant-menu-item-open, .ant-menu-horizontal > .ant-menu-item-selected, .ant-menu-horizontal > .ant-menu-item:hover, .ant-menu-horizontal > .ant-menu-submenu-active, .ant-menu-horizontal > .ant-menu-submenu-open, .ant-menu-horizontal > .ant-menu-submenu-selected, .ant-menu-horizontal > .ant-menu-submenu:hover {
+ color: #fa541c;
+ border-bottom: 2px solid #fa541c
+ }
+
+ .ant-menu-horizontal > .ant-menu-item > a {
+ display: block;
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-menu-horizontal > .ant-menu-item > a:hover {
+ color: #fa541c
+ }
+
+ .ant-menu-horizontal > .ant-menu-item > a:before {
+ bottom: -2px
+ }
+
+ .ant-menu-horizontal > .ant-menu-item-selected > a {
+ color: #fa541c
+ }
+
+ .ant-menu-horizontal:after {
+ display: block;
+ clear: both;
+ height: 0;
+ content: "\20"
+ }
+
+.ant-menu-inline .ant-menu-item, .ant-menu-vertical-left .ant-menu-item, .ant-menu-vertical-right .ant-menu-item, .ant-menu-vertical .ant-menu-item {
+ position: relative
+}
+
+ .ant-menu-inline .ant-menu-item:after, .ant-menu-vertical-left .ant-menu-item:after, .ant-menu-vertical-right .ant-menu-item:after, .ant-menu-vertical .ant-menu-item:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ border-right: 3px solid #fa541c;
+ -webkit-transform: scaleY(.0001);
+ transform: scaleY(.0001);
+ opacity: 0;
+ -webkit-transition: opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+ transition: opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+ transition: transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1);
+ transition: transform .15s cubic-bezier(.215,.61,.355,1),opacity .15s cubic-bezier(.215,.61,.355,1),-webkit-transform .15s cubic-bezier(.215,.61,.355,1);
+ content: ""
+ }
+
+.ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title, .ant-menu-vertical-left .ant-menu-item, .ant-menu-vertical-left .ant-menu-submenu-title, .ant-menu-vertical-right .ant-menu-item, .ant-menu-vertical-right .ant-menu-submenu-title, .ant-menu-vertical .ant-menu-item, .ant-menu-vertical .ant-menu-submenu-title {
+ height: 40px;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ padding: 0 16px;
+ overflow: hidden;
+ font-size: 14px;
+ line-height: 40px;
+ text-overflow: ellipsis
+}
+
+.ant-menu-inline .ant-menu-submenu, .ant-menu-vertical-left .ant-menu-submenu, .ant-menu-vertical-right .ant-menu-submenu, .ant-menu-vertical .ant-menu-submenu {
+ padding-bottom: .02px
+}
+
+.ant-menu-inline .ant-menu-item:not(:last-child), .ant-menu-vertical-left .ant-menu-item:not(:last-child), .ant-menu-vertical-right .ant-menu-item:not(:last-child), .ant-menu-vertical .ant-menu-item:not(:last-child) {
+ margin-bottom: 8px
+}
+
+.ant-menu-inline > .ant-menu-item, .ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-left > .ant-menu-item, .ant-menu-vertical-left > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical-right > .ant-menu-item, .ant-menu-vertical-right > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-vertical > .ant-menu-item, .ant-menu-vertical > .ant-menu-submenu > .ant-menu-submenu-title {
+ height: 40px;
+ line-height: 40px
+}
+
+.ant-menu-inline {
+ width: 100%
+}
+
+ .ant-menu-inline .ant-menu-item-selected:after, .ant-menu-inline .ant-menu-selected:after {
+ -webkit-transform: scaleY(1);
+ transform: scaleY(1);
+ opacity: 1;
+ -webkit-transition: opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);
+ transition: opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1);
+ transition: transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1);
+ transition: transform .15s cubic-bezier(.645,.045,.355,1),opacity .15s cubic-bezier(.645,.045,.355,1),-webkit-transform .15s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title {
+ width: calc(100% + 1px)
+ }
+
+ .ant-menu-inline .ant-menu-submenu-title {
+ padding-right: 34px
+ }
+
+.ant-menu-inline-collapsed {
+ width: 80px
+}
+
+ .ant-menu-inline-collapsed > .ant-menu-item, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title {
+ left: 0;
+ padding: 0 32px !important;
+ text-overflow: clip
+ }
+
+ .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-item .ant-menu-submenu-arrow, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .ant-menu-submenu-arrow {
+ display: none
+ }
+
+ .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon, .ant-menu-inline-collapsed > .ant-menu-item .anticon, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon {
+ margin: 0;
+ font-size: 16px;
+ line-height: 40px
+ }
+
+ .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-item .anticon + span, .ant-menu-inline-collapsed > .ant-menu-item-group > .ant-menu-item-group-list > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span, .ant-menu-inline-collapsed > .ant-menu-item .anticon + span, .ant-menu-inline-collapsed > .ant-menu-submenu > .ant-menu-submenu-title .anticon + span {
+ display: inline-block;
+ max-width: 0;
+ opacity: 0
+ }
+
+.ant-menu-inline-collapsed-tooltip {
+ pointer-events: none
+}
+
+ .ant-menu-inline-collapsed-tooltip .anticon {
+ display: none
+ }
+
+ .ant-menu-inline-collapsed-tooltip a {
+ color: hsla(0,0%,100%,.85)
+ }
+
+.ant-menu-inline-collapsed .ant-menu-item-group-title {
+ padding-right: 4px;
+ padding-left: 4px;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+.ant-menu-item-group-list {
+ margin: 0;
+ padding: 0
+}
+
+ .ant-menu-item-group-list .ant-menu-item, .ant-menu-item-group-list .ant-menu-submenu-title {
+ padding: 0 16px 0 28px
+ }
+
+.ant-menu-root.ant-menu-inline, .ant-menu-root.ant-menu-vertical, .ant-menu-root.ant-menu-vertical-left, .ant-menu-root.ant-menu-vertical-right, .ant-menu-sub.ant-menu-inline {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.ant-menu-sub.ant-menu-inline {
+ padding: 0;
+ border: 0;
+ border-radius: 0
+}
+
+ .ant-menu-sub.ant-menu-inline > .ant-menu-item, .ant-menu-sub.ant-menu-inline > .ant-menu-submenu > .ant-menu-submenu-title {
+ height: 40px;
+ line-height: 40px;
+ list-style-position: inside;
+ list-style-type: disc
+ }
+
+ .ant-menu-sub.ant-menu-inline .ant-menu-item-group-title {
+ padding-left: 32px
+ }
+
+.ant-menu-item-disabled, .ant-menu-submenu-disabled {
+ color: rgba(0,0,0,.25) !important;
+ background: none;
+ border-color: transparent !important;
+ cursor: not-allowed
+}
+
+ .ant-menu-item-disabled > a, .ant-menu-submenu-disabled > a {
+ color: rgba(0,0,0,.25) !important;
+ pointer-events: none
+ }
+
+ .ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-submenu-disabled > .ant-menu-submenu-title {
+ color: rgba(0,0,0,.25) !important;
+ cursor: not-allowed
+ }
+
+ .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+ background: rgba(0,0,0,.25) !important
+ }
+
+.ant-menu-dark, .ant-menu-dark .ant-menu-sub {
+ color: hsla(0,0%,100%,.65);
+ background: #001529
+}
+
+ .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow {
+ opacity: .45;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-sub .ant-menu-submenu-title .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title .ant-menu-submenu-arrow:before {
+ background: #fff
+ }
+
+ .ant-menu-dark.ant-menu-submenu-popup {
+ background: transparent
+ }
+
+ .ant-menu-dark .ant-menu-inline.ant-menu-sub {
+ background: #000c17;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.45) inset;
+ box-shadow: inset 0 2px 8px rgba(0,0,0,.45)
+ }
+
+ .ant-menu-dark.ant-menu-horizontal {
+ border-bottom: 0
+ }
+
+ .ant-menu-dark.ant-menu-horizontal > .ant-menu-item, .ant-menu-dark.ant-menu-horizontal > .ant-menu-submenu {
+ top: 0;
+ margin-top: 0;
+ border-color: #001529;
+ border-bottom: 0
+ }
+
+ .ant-menu-dark.ant-menu-horizontal > .ant-menu-item > a:before {
+ bottom: 0
+ }
+
+ .ant-menu-dark .ant-menu-item, .ant-menu-dark .ant-menu-item-group-title, .ant-menu-dark .ant-menu-item > a {
+ color: hsla(0,0%,100%,.65)
+ }
+
+ .ant-menu-dark.ant-menu-inline, .ant-menu-dark.ant-menu-vertical, .ant-menu-dark.ant-menu-vertical-left, .ant-menu-dark.ant-menu-vertical-right {
+ border-right: 0
+ }
+
+ .ant-menu-dark.ant-menu-inline .ant-menu-item, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item, .ant-menu-dark.ant-menu-vertical .ant-menu-item {
+ left: 0;
+ margin-left: 0;
+ border-right: 0
+ }
+
+ .ant-menu-dark.ant-menu-inline .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical-left .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical-right .ant-menu-item:after, .ant-menu-dark.ant-menu-vertical .ant-menu-item:after {
+ border-right: 0
+ }
+
+ .ant-menu-dark.ant-menu-inline .ant-menu-item, .ant-menu-dark.ant-menu-inline .ant-menu-submenu-title {
+ width: 100%
+ }
+
+ .ant-menu-dark .ant-menu-item-active, .ant-menu-dark .ant-menu-item:hover, .ant-menu-dark .ant-menu-submenu-active, .ant-menu-dark .ant-menu-submenu-open, .ant-menu-dark .ant-menu-submenu-selected, .ant-menu-dark .ant-menu-submenu-title:hover {
+ color: #fff;
+ background-color: transparent
+ }
+
+ .ant-menu-dark .ant-menu-item-active > a, .ant-menu-dark .ant-menu-item:hover > a, .ant-menu-dark .ant-menu-submenu-active > a, .ant-menu-dark .ant-menu-submenu-open > a, .ant-menu-dark .ant-menu-submenu-selected > a, .ant-menu-dark .ant-menu-submenu-title:hover > a {
+ color: #fff
+ }
+
+ .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow {
+ opacity: 1
+ }
+
+ .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-active > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-open > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title:hover > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-title:hover > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+ background: #fff
+ }
+
+ .ant-menu-dark .ant-menu-item:hover {
+ background-color: transparent
+ }
+
+ .ant-menu-dark .ant-menu-item-selected {
+ color: #fff;
+ border-right: 0
+ }
+
+ .ant-menu-dark .ant-menu-item-selected:after {
+ border-right: 0
+ }
+
+ .ant-menu-dark .ant-menu-item-selected .anticon, .ant-menu-dark .ant-menu-item-selected .anticon + span, .ant-menu-dark .ant-menu-item-selected > a, .ant-menu-dark .ant-menu-item-selected > a:hover {
+ color: #fff
+ }
+
+.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected, .ant-menu.ant-menu-dark .ant-menu-item-selected {
+ background-color: #fa541c
+}
+
+.ant-menu-dark .ant-menu-item-disabled, .ant-menu-dark .ant-menu-item-disabled > a, .ant-menu-dark .ant-menu-submenu-disabled, .ant-menu-dark .ant-menu-submenu-disabled > a {
+ color: hsla(0,0%,100%,.35) !important;
+ opacity: .8
+}
+
+ .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title {
+ color: hsla(0,0%,100%,.35) !important
+ }
+
+ .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-item-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:after, .ant-menu-dark .ant-menu-submenu-disabled > .ant-menu-submenu-title > .ant-menu-submenu-arrow:before {
+ background: hsla(0,0%,100%,.35) !important
+ }
+
+.ant-message {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: fixed;
+ top: 16px;
+ left: 0;
+ z-index: 1010;
+ width: 100%;
+ pointer-events: none
+}
+
+.ant-message-notice {
+ padding: 8px;
+ text-align: center
+}
+
+ .ant-message-notice:first-child {
+ margin-top: -8px
+ }
+
+.ant-message-notice-content {
+ display: inline-block;
+ padding: 10px 16px;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ pointer-events: all
+}
+
+.ant-message-success .anticon {
+ color: #52c41a
+}
+
+.ant-message-error .anticon {
+ color: #f5222d
+}
+
+.ant-message-warning .anticon {
+ color: #faad14
+}
+
+.ant-message-info .anticon, .ant-message-loading .anticon {
+ color: #1890ff
+}
+
+.ant-message .anticon {
+ position: relative;
+ top: 1px;
+ margin-right: 8px;
+ font-size: 16px
+}
+
+.ant-message-notice.move-up-leave.move-up-leave-active {
+ overflow: hidden;
+ -webkit-animation-name: MessageMoveOut;
+ animation-name: MessageMoveOut;
+ -webkit-animation-duration: .3s;
+ animation-duration: .3s
+}
+
+@-webkit-keyframes MessageMoveOut {
+ 0% {
+ max-height: 150px;
+ padding: 8px;
+ opacity: 1
+ }
+
+ to {
+ max-height: 0;
+ padding: 0;
+ opacity: 0
+ }
+}
+
+@keyframes MessageMoveOut {
+ 0% {
+ max-height: 150px;
+ padding: 8px;
+ opacity: 1
+ }
+
+ to {
+ max-height: 0;
+ padding: 0;
+ opacity: 0
+ }
+}
+
+.ant-modal {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ top: 100px;
+ width: auto;
+ margin: 0 auto;
+ padding-bottom: 24px;
+ pointer-events: none
+}
+
+.ant-modal-wrap {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1000;
+ overflow: auto;
+ outline: 0;
+ -webkit-overflow-scrolling: touch
+}
+
+.ant-modal-title {
+ margin: 0;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 22px;
+ word-wrap: break-word
+}
+
+.ant-modal-content {
+ position: relative;
+ background-color: #fff;
+ background-clip: padding-box;
+ border: 0;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ pointer-events: auto
+}
+
+.ant-modal-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 10;
+ padding: 0;
+ color: rgba(0,0,0,.45);
+ font-weight: 700;
+ line-height: 1;
+ text-decoration: none;
+ background: transparent;
+ border: 0;
+ outline: 0;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s
+}
+
+.ant-modal-close-x {
+ display: block;
+ width: 56px;
+ height: 56px;
+ font-size: 16px;
+ font-style: normal;
+ line-height: 56px;
+ text-align: center;
+ text-transform: none;
+ text-rendering: auto
+}
+
+.ant-modal-close:focus, .ant-modal-close:hover {
+ color: rgba(0,0,0,.75);
+ text-decoration: none
+}
+
+.ant-modal-header {
+ padding: 16px 24px;
+ color: rgba(0,0,0,.65);
+ background: #fff;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 2px 2px 0 0
+}
+
+.ant-modal-body {
+ padding: 24px;
+ font-size: 14px;
+ line-height: 1.5;
+ word-wrap: break-word
+}
+
+.ant-modal-footer {
+ padding: 10px 16px;
+ text-align: right;
+ background: transparent;
+ border-top: 1px solid #e8e8e8;
+ border-radius: 0 0 2px 2px
+}
+
+ .ant-modal-footer button + button {
+ margin-bottom: 0;
+ margin-left: 8px
+ }
+
+.ant-modal.zoom-appear, .ant-modal.zoom-enter {
+ -webkit-transform: none;
+ transform: none;
+ opacity: 0;
+ -webkit-animation-duration: .3s;
+ animation-duration: .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-modal-mask {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1000;
+ height: 100%;
+ background-color: rgba(0,0,0,.45);
+ filter: alpha(opacity=50)
+}
+
+.ant-modal-mask-hidden {
+ display: none
+}
+
+.ant-modal-open {
+ overflow: hidden
+}
+
+.ant-modal-centered {
+ text-align: center
+}
+
+ .ant-modal-centered:before {
+ display: inline-block;
+ width: 0;
+ height: 100%;
+ vertical-align: middle;
+ content: ""
+ }
+
+ .ant-modal-centered .ant-modal {
+ top: 0;
+ display: inline-block;
+ text-align: left;
+ vertical-align: middle
+ }
+
+@media (max-width:767px) {
+ .ant-modal {
+ max-width: calc(100vw - 16px);
+ margin: 8px auto
+ }
+
+ .ant-modal-centered .ant-modal {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+}
+
+.ant-modal-confirm .ant-modal-header {
+ display: none
+}
+
+.ant-modal-confirm .ant-modal-body {
+ padding: 32px 32px 24px
+}
+
+.ant-modal-confirm-body-wrapper {
+ zoom: 1
+}
+
+ .ant-modal-confirm-body-wrapper:after, .ant-modal-confirm-body-wrapper:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-modal-confirm-body-wrapper:after {
+ clear: both
+ }
+
+.ant-modal-confirm-body .ant-modal-confirm-title {
+ display: block;
+ overflow: hidden;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ font-size: 16px;
+ line-height: 1.4
+}
+
+.ant-modal-confirm-body .ant-modal-confirm-content {
+ margin-top: 8px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px
+}
+
+.ant-modal-confirm-body > .anticon {
+ float: left;
+ margin-right: 16px;
+ font-size: 22px
+}
+
+ .ant-modal-confirm-body > .anticon + .ant-modal-confirm-title + .ant-modal-confirm-content {
+ margin-left: 38px
+ }
+
+.ant-modal-confirm .ant-modal-confirm-btns {
+ float: right;
+ margin-top: 24px
+}
+
+ .ant-modal-confirm .ant-modal-confirm-btns button + button {
+ margin-bottom: 0;
+ margin-left: 8px
+ }
+
+.ant-modal-confirm-error .ant-modal-confirm-body > .anticon {
+ color: #f5222d
+}
+
+.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon, .ant-modal-confirm-warning .ant-modal-confirm-body > .anticon {
+ color: #faad14
+}
+
+.ant-modal-confirm-info .ant-modal-confirm-body > .anticon {
+ color: #1890ff
+}
+
+.ant-modal-confirm-success .ant-modal-confirm-body > .anticon {
+ color: #52c41a
+}
+
+.ant-notification {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: fixed;
+ z-index: 1010;
+ width: 384px;
+ max-width: calc(100vw - 32px);
+ margin-right: 24px
+}
+
+.ant-notification-bottomLeft, .ant-notification-topLeft {
+ margin-right: 0;
+ margin-left: 24px
+}
+
+ .ant-notification-bottomLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-bottomLeft .ant-notification-fade-enter.ant-notification-fade-enter-active, .ant-notification-topLeft .ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-topLeft .ant-notification-fade-enter.ant-notification-fade-enter-active {
+ -webkit-animation-name: NotificationLeftFadeIn;
+ animation-name: NotificationLeftFadeIn
+ }
+
+.ant-notification-close-icon {
+ font-size: 14px;
+ cursor: pointer
+}
+
+.ant-notification-notice {
+ position: relative;
+ margin-bottom: 16px;
+ padding: 16px 24px;
+ overflow: hidden;
+ line-height: 1.5;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 4px 12px rgba(0,0,0,.15);
+ box-shadow: 0 4px 12px rgba(0,0,0,.15)
+}
+
+.ant-notification-notice-message {
+ display: inline-block;
+ margin-bottom: 8px;
+ color: rgba(0,0,0,.85);
+ font-size: 16px;
+ line-height: 24px
+}
+
+.ant-notification-notice-message-single-line-auto-margin {
+ display: block;
+ width: calc(264px - 100%);
+ max-width: 4px;
+ background-color: transparent;
+ pointer-events: none
+}
+
+ .ant-notification-notice-message-single-line-auto-margin:before {
+ display: block;
+ content: ""
+ }
+
+.ant-notification-notice-description {
+ font-size: 14px
+}
+
+.ant-notification-notice-closable .ant-notification-notice-message {
+ padding-right: 24px
+}
+
+.ant-notification-notice-with-icon .ant-notification-notice-message {
+ margin-bottom: 4px;
+ margin-left: 48px;
+ font-size: 16px
+}
+
+.ant-notification-notice-with-icon .ant-notification-notice-description {
+ margin-left: 48px;
+ font-size: 14px
+}
+
+.ant-notification-notice-icon {
+ position: absolute;
+ margin-left: 4px;
+ font-size: 24px;
+ line-height: 24px
+}
+
+.anticon.ant-notification-notice-icon-success {
+ color: #52c41a
+}
+
+.anticon.ant-notification-notice-icon-info {
+ color: #1890ff
+}
+
+.anticon.ant-notification-notice-icon-warning {
+ color: #faad14
+}
+
+.anticon.ant-notification-notice-icon-error {
+ color: #f5222d
+}
+
+.ant-notification-notice-close {
+ position: absolute;
+ top: 16px;
+ right: 22px;
+ color: rgba(0,0,0,.45);
+ outline: none
+}
+
+ .ant-notification-notice-close:hover {
+ color: rgba(0,0,0,.67)
+ }
+
+.ant-notification-notice-btn {
+ float: right;
+ margin-top: 16px
+}
+
+.ant-notification .notification-fade-effect {
+ -webkit-animation-duration: .24s;
+ animation-duration: .24s;
+ -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both
+}
+
+.ant-notification-fade-appear, .ant-notification-fade-enter {
+ opacity: 0;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.ant-notification-fade-appear, .ant-notification-fade-enter, .ant-notification-fade-leave {
+ -webkit-animation-duration: .24s;
+ animation-duration: .24s;
+ -webkit-animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ animation-timing-function: cubic-bezier(.645,.045,.355,1);
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both
+}
+
+.ant-notification-fade-leave {
+ -webkit-animation-duration: .2s;
+ animation-duration: .2s;
+ -webkit-animation-play-state: paused;
+ animation-play-state: paused
+}
+
+.ant-notification-fade-appear.ant-notification-fade-appear-active, .ant-notification-fade-enter.ant-notification-fade-enter-active {
+ -webkit-animation-name: NotificationFadeIn;
+ animation-name: NotificationFadeIn;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+.ant-notification-fade-leave.ant-notification-fade-leave-active {
+ -webkit-animation-name: NotificationFadeOut;
+ animation-name: NotificationFadeOut;
+ -webkit-animation-play-state: running;
+ animation-play-state: running
+}
+
+@-webkit-keyframes NotificationFadeIn {
+ 0% {
+ left: 384px;
+ opacity: 0
+ }
+
+ to {
+ left: 0;
+ opacity: 1
+ }
+}
+
+@keyframes NotificationFadeIn {
+ 0% {
+ left: 384px;
+ opacity: 0
+ }
+
+ to {
+ left: 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes NotificationLeftFadeIn {
+ 0% {
+ right: 384px;
+ opacity: 0
+ }
+
+ to {
+ right: 0;
+ opacity: 1
+ }
+}
+
+@keyframes NotificationLeftFadeIn {
+ 0% {
+ right: 384px;
+ opacity: 0
+ }
+
+ to {
+ right: 0;
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes NotificationFadeOut {
+ 0% {
+ max-height: 150px;
+ margin-bottom: 16px;
+ padding-top: 16px 24px;
+ padding-bottom: 16px 24px;
+ opacity: 1
+ }
+
+ to {
+ max-height: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ opacity: 0
+ }
+}
+
+@keyframes NotificationFadeOut {
+ 0% {
+ max-height: 150px;
+ margin-bottom: 16px;
+ padding-top: 16px 24px;
+ padding-bottom: 16px 24px;
+ opacity: 1
+ }
+
+ to {
+ max-height: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ opacity: 0
+ }
+}
+
+.ant-page-header {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ padding: 16px 24px;
+ background-color: #fff
+}
+
+.ant-page-header-ghost {
+ background-color: inherit
+}
+
+.ant-page-header.has-breadcrumb {
+ padding-top: 12px
+}
+
+.ant-page-header.has-footer {
+ padding-bottom: 0
+}
+
+.ant-page-header-back {
+ float: left;
+ margin: 8px 0;
+ margin-right: 16px;
+ font-size: 16px;
+ line-height: 1
+}
+
+.ant-page-header-back-button {
+ color: #fa541c;
+ text-decoration: none;
+ outline: none;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ color: #000;
+ cursor: pointer
+}
+
+ .ant-page-header-back-button:focus, .ant-page-header-back-button:hover {
+ color: #ff7a45
+ }
+
+ .ant-page-header-back-button:active {
+ color: #d4380d
+ }
+
+.ant-page-header .ant-divider-vertical {
+ height: 14px;
+ margin: 0 12px;
+ vertical-align: middle
+}
+
+.ant-breadcrumb + .ant-page-header-heading {
+ margin-top: 8px
+}
+
+.ant-page-header-heading {
+ width: 100%;
+ overflow: hidden
+}
+
+.ant-page-header-heading-title {
+ display: block;
+ float: left;
+ margin-bottom: 0;
+ padding-right: 12px;
+ color: rgba(0,0,0,.85);
+ font-weight: 600;
+ font-size: 20px;
+ line-height: 32px
+}
+
+.ant-page-header-heading .ant-avatar {
+ float: left;
+ margin-right: 12px
+}
+
+.ant-page-header-heading-sub-title {
+ float: left;
+ margin: 5px 0;
+ margin-right: 12px;
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 22px
+}
+
+.ant-page-header-heading-tags {
+ float: left;
+ margin: 4px 0
+}
+
+.ant-page-header-heading-extra {
+ float: right
+}
+
+ .ant-page-header-heading-extra > * {
+ margin-left: 8px
+ }
+
+ .ant-page-header-heading-extra > :first-child {
+ margin-left: 0
+ }
+
+.ant-page-header-content {
+ padding-top: 12px;
+ overflow: hidden
+}
+
+.ant-page-header-footer {
+ margin-top: 16px
+}
+
+ .ant-page-header-footer .ant-tabs-bar {
+ margin-bottom: 1px;
+ border-bottom: 0
+ }
+
+ .ant-page-header-footer .ant-tabs-bar .ant-tabs-nav .ant-tabs-tab {
+ padding: 8px;
+ font-size: 16px
+ }
+
+@media (max-width:576px) {
+ .ant-page-header-heading-extra {
+ display: block;
+ float: unset;
+ width: 100%;
+ padding-top: 12px;
+ overflow: hidden
+ }
+}
+
+.ant-pagination {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+ .ant-pagination, .ant-pagination ol, .ant-pagination ul {
+ margin: 0;
+ padding: 0;
+ list-style: none
+ }
+
+ .ant-pagination:after {
+ display: block;
+ clear: both;
+ height: 0;
+ overflow: hidden;
+ visibility: hidden;
+ content: " "
+ }
+
+.ant-pagination-item, .ant-pagination-total-text {
+ display: inline-block;
+ height: 32px;
+ margin-right: 8px;
+ line-height: 30px;
+ vertical-align: middle
+}
+
+.ant-pagination-item {
+ min-width: 32px;
+ font-family: Arial;
+ text-align: center;
+ list-style: none;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ outline: 0;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-pagination-item a {
+ display: block;
+ padding: 0 6px;
+ color: rgba(0,0,0,.65);
+ -webkit-transition: none;
+ transition: none
+ }
+
+ .ant-pagination-item a:hover {
+ text-decoration: none
+ }
+
+ .ant-pagination-item:focus, .ant-pagination-item:hover {
+ border-color: #fa541c;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-pagination-item:focus a, .ant-pagination-item:hover a {
+ color: #fa541c
+ }
+
+.ant-pagination-item-active {
+ font-weight: 500;
+ background: #fff;
+ border-color: #fa541c
+}
+
+ .ant-pagination-item-active a {
+ color: #fa541c
+ }
+
+ .ant-pagination-item-active:focus, .ant-pagination-item-active:hover {
+ border-color: #ff7a45
+ }
+
+ .ant-pagination-item-active:focus a, .ant-pagination-item-active:hover a {
+ color: #ff7a45
+ }
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev {
+ outline: 0
+}
+
+ .ant-pagination-jump-next .ant-pagination-item-container, .ant-pagination-jump-prev .ant-pagination-item-container {
+ position: relative
+ }
+
+ .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 12px\9;
+ -webkit-transform: scale(1) rotate(0deg);
+ transform: scale(1) rotate(0deg);
+ color: #fa541c;
+ letter-spacing: -1px;
+ opacity: 0;
+ -webkit-transition: all .2s;
+ transition: all .2s
+ }
+
+:root .ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon, :root .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon {
+ font-size: 12px
+}
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon-svg, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon-svg {
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto
+}
+
+.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis, .ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ margin: auto;
+ color: rgba(0,0,0,.25);
+ letter-spacing: 2px;
+ text-align: center;
+ text-indent: .13em;
+ opacity: 1;
+ -webkit-transition: all .2s;
+ transition: all .2s
+}
+
+.ant-pagination-jump-next:focus .ant-pagination-item-link-icon, .ant-pagination-jump-next:hover .ant-pagination-item-link-icon, .ant-pagination-jump-prev:focus .ant-pagination-item-link-icon, .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon {
+ opacity: 1
+}
+
+.ant-pagination-jump-next:focus .ant-pagination-item-ellipsis, .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis, .ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis, .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis {
+ opacity: 0
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-prev {
+ margin-right: 8px
+}
+
+.ant-pagination-jump-next, .ant-pagination-jump-prev, .ant-pagination-next, .ant-pagination-prev {
+ display: inline-block;
+ min-width: 32px;
+ height: 32px;
+ color: rgba(0,0,0,.65);
+ font-family: Arial;
+ line-height: 32px;
+ text-align: center;
+ vertical-align: middle;
+ list-style: none;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-pagination-next, .ant-pagination-prev {
+ outline: 0
+}
+
+ .ant-pagination-next a, .ant-pagination-prev a {
+ color: rgba(0,0,0,.65);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+ }
+
+ .ant-pagination-next:hover a, .ant-pagination-prev:hover a {
+ border-color: #ff7a45
+ }
+
+ .ant-pagination-next .ant-pagination-item-link, .ant-pagination-prev .ant-pagination-item-link {
+ display: block;
+ height: 100%;
+ font-size: 12px;
+ text-align: center;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ outline: none;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-pagination-next:focus .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link, .ant-pagination-prev:focus .ant-pagination-item-link, .ant-pagination-prev:hover .ant-pagination-item-link {
+ color: #fa541c;
+ border-color: #fa541c
+ }
+
+.ant-pagination-disabled, .ant-pagination-disabled:focus, .ant-pagination-disabled:hover {
+ cursor: not-allowed
+}
+
+ .ant-pagination-disabled .ant-pagination-item-link, .ant-pagination-disabled:focus .ant-pagination-item-link, .ant-pagination-disabled:focus a, .ant-pagination-disabled:hover .ant-pagination-item-link, .ant-pagination-disabled:hover a, .ant-pagination-disabled a {
+ color: rgba(0,0,0,.25);
+ border-color: #d9d9d9;
+ cursor: not-allowed
+ }
+
+.ant-pagination-slash {
+ margin: 0 10px 0 5px
+}
+
+.ant-pagination-options {
+ display: inline-block;
+ margin-left: 16px;
+ vertical-align: middle
+}
+
+.ant-pagination-options-size-changer.ant-select {
+ display: inline-block;
+ width: auto;
+ margin-right: 8px
+}
+
+.ant-pagination-options-quick-jumper {
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ vertical-align: top
+}
+
+ .ant-pagination-options-quick-jumper input {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ height: 32px;
+ padding: 4px 11px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ line-height: 1.5;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ width: 50px;
+ margin: 0 8px
+ }
+
+ .ant-pagination-options-quick-jumper input::-moz-placeholder {
+ color: #bfbfbf;
+ opacity: 1
+ }
+
+ .ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-pagination-options-quick-jumper input::-webkit-input-placeholder {
+ color: #bfbfbf
+ }
+
+ .ant-pagination-options-quick-jumper input:-moz-placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-pagination-options-quick-jumper input:-ms-input-placeholder {
+ text-overflow: ellipsis
+ }
+
+ .ant-pagination-options-quick-jumper input:placeholder-shown {
+ text-overflow: ellipsis
+ }
+
+ .ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-pagination-options-quick-jumper input:focus {
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+ .ant-pagination-options-quick-jumper input-disabled {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+ }
+
+ .ant-pagination-options-quick-jumper input-disabled:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+ .ant-pagination-options-quick-jumper input[disabled] {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ cursor: not-allowed;
+ opacity: 1
+ }
+
+ .ant-pagination-options-quick-jumper input[disabled]:hover {
+ border-color: #d9d9d9;
+ border-right-width: 1px !important
+ }
+
+textarea.ant-pagination-options-quick-jumper input {
+ max-width: 100%;
+ height: auto;
+ min-height: 32px;
+ line-height: 1.5;
+ vertical-align: bottom;
+ -webkit-transition: all .3s,height 0s;
+ transition: all .3s,height 0s
+}
+
+.ant-pagination-options-quick-jumper input-lg {
+ height: 40px;
+ padding: 6px 11px;
+ font-size: 16px
+}
+
+.ant-pagination-options-quick-jumper input-sm {
+ height: 24px;
+ padding: 1px 7px
+}
+
+.ant-pagination-simple .ant-pagination-next, .ant-pagination-simple .ant-pagination-prev {
+ height: 24px;
+ line-height: 24px;
+ vertical-align: top
+}
+
+ .ant-pagination-simple .ant-pagination-next .ant-pagination-item-link, .ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link {
+ height: 24px;
+ border: 0
+ }
+
+ .ant-pagination-simple .ant-pagination-next .ant-pagination-item-link:after, .ant-pagination-simple .ant-pagination-prev .ant-pagination-item-link:after {
+ height: 24px;
+ line-height: 24px
+ }
+
+.ant-pagination-simple .ant-pagination-simple-pager {
+ display: inline-block;
+ height: 24px;
+ margin-right: 8px
+}
+
+ .ant-pagination-simple .ant-pagination-simple-pager input {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 100%;
+ margin-right: 8px;
+ padding: 0 6px;
+ text-align: center;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-radius: 2px;
+ outline: none;
+ -webkit-transition: border-color .3s;
+ transition: border-color .3s
+ }
+
+ .ant-pagination-simple .ant-pagination-simple-pager input:hover {
+ border-color: #fa541c
+ }
+
+.ant-pagination.mini .ant-pagination-simple-pager, .ant-pagination.mini .ant-pagination-total-text {
+ height: 24px;
+ line-height: 24px
+}
+
+.ant-pagination.mini .ant-pagination-item {
+ min-width: 24px;
+ height: 24px;
+ margin: 0;
+ line-height: 22px
+}
+
+ .ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {
+ background: transparent;
+ border-color: transparent
+ }
+
+.ant-pagination.mini .ant-pagination-next, .ant-pagination.mini .ant-pagination-prev {
+ min-width: 24px;
+ height: 24px;
+ margin: 0;
+ line-height: 24px
+}
+
+ .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link, .ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link {
+ background: transparent;
+ border-color: transparent
+ }
+
+ .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link:after, .ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link:after {
+ height: 24px;
+ line-height: 24px
+ }
+
+.ant-pagination.mini .ant-pagination-jump-next, .ant-pagination.mini .ant-pagination-jump-prev {
+ height: 24px;
+ margin-right: 0;
+ line-height: 24px
+}
+
+.ant-pagination.mini .ant-pagination-options {
+ margin-left: 2px
+}
+
+.ant-pagination.mini .ant-pagination-options-quick-jumper {
+ height: 24px;
+ line-height: 24px
+}
+
+ .ant-pagination.mini .ant-pagination-options-quick-jumper input {
+ height: 24px;
+ padding: 1px 7px;
+ width: 44px
+ }
+
+.ant-pagination.ant-pagination-disabled {
+ cursor: not-allowed
+}
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-item {
+ background: #f5f5f5;
+ border-color: #d9d9d9;
+ cursor: not-allowed
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-item a {
+ color: rgba(0,0,0,.25);
+ background: transparent;
+ border: none;
+ cursor: not-allowed
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-item-active {
+ background: #dbdbdb;
+ border-color: transparent
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-item-active a {
+ color: #fff
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-item-link, .ant-pagination.ant-pagination-disabled .ant-pagination-item-link:focus, .ant-pagination.ant-pagination-disabled .ant-pagination-item-link:hover {
+ color: rgba(0,0,0,.45);
+ background: #f5f5f5;
+ border-color: #d9d9d9;
+ cursor: not-allowed
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:focus .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:hover .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:focus .ant-pagination-item-link-icon, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:hover .ant-pagination-item-link-icon {
+ opacity: 0
+ }
+
+ .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:focus .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-next:hover .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:focus .ant-pagination-item-ellipsis, .ant-pagination.ant-pagination-disabled .ant-pagination-jump-prev:hover .ant-pagination-item-ellipsis {
+ opacity: 1
+ }
+
+@media only screen and (max-width:992px) {
+ .ant-pagination-item-after-jump-prev, .ant-pagination-item-before-jump-next {
+ display: none
+ }
+}
+
+@media only screen and (max-width:576px) {
+ .ant-pagination-options {
+ display: none
+ }
+}
+
+.ant-popover {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1030;
+ font-weight: 400;
+ white-space: normal;
+ text-align: left;
+ cursor: auto;
+ -webkit-user-select: text;
+ -moz-user-select: text;
+ -ms-user-select: text;
+ user-select: text
+}
+
+ .ant-popover:after {
+ position: absolute;
+ background: hsla(0,0%,100%,.01);
+ content: ""
+ }
+
+.ant-popover-hidden {
+ display: none
+}
+
+.ant-popover-placement-top, .ant-popover-placement-topLeft, .ant-popover-placement-topRight {
+ padding-bottom: 10px
+}
+
+.ant-popover-placement-right, .ant-popover-placement-rightBottom, .ant-popover-placement-rightTop {
+ padding-left: 10px
+}
+
+.ant-popover-placement-bottom, .ant-popover-placement-bottomLeft, .ant-popover-placement-bottomRight {
+ padding-top: 10px
+}
+
+.ant-popover-placement-left, .ant-popover-placement-leftBottom, .ant-popover-placement-leftTop {
+ padding-right: 10px
+}
+
+.ant-popover-inner {
+ background-color: #fff;
+ background-clip: padding-box;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ -webkit-box-shadow: 0 0 8px rgba(0,0,0,.15)\9;
+ box-shadow: 0 0 8px rgba(0,0,0,.15)\9
+}
+
+@media (-ms-high-contrast:none),screen and (-ms-high-contrast:active) {
+ .ant-popover-inner {
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+ }
+}
+
+.ant-popover-title {
+ min-width: 177px;
+ min-height: 32px;
+ margin: 0;
+ padding: 5px 16px 4px;
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-popover-inner-content {
+ padding: 12px 16px;
+ color: rgba(0,0,0,.65)
+}
+
+.ant-popover-message {
+ position: relative;
+ padding: 4px 0 12px;
+ color: rgba(0,0,0,.65);
+ font-size: 14px
+}
+
+ .ant-popover-message > .anticon {
+ position: absolute;
+ top: 8px;
+ color: #faad14;
+ font-size: 14px
+ }
+
+.ant-popover-message-title {
+ padding-left: 22px
+}
+
+.ant-popover-buttons {
+ margin-bottom: 4px;
+ text-align: right
+}
+
+ .ant-popover-buttons button {
+ margin-left: 8px
+ }
+
+.ant-popover-arrow {
+ position: absolute;
+ display: block;
+ width: 8.48528137px;
+ height: 8.48528137px;
+ background: transparent;
+ border-style: solid;
+ border-width: 4.24264069px;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg)
+}
+
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+ bottom: 6.2px;
+ border-top-color: transparent;
+ border-right-color: #fff;
+ border-bottom-color: #fff;
+ border-left-color: transparent;
+ -webkit-box-shadow: 3px 3px 7px rgba(0,0,0,.07);
+ box-shadow: 3px 3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-top > .ant-popover-content > .ant-popover-arrow {
+ left: 50%;
+ -webkit-transform: translateX(-50%) rotate(45deg);
+ transform: translateX(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-topLeft > .ant-popover-content > .ant-popover-arrow {
+ left: 16px
+}
+
+.ant-popover-placement-topRight > .ant-popover-content > .ant-popover-arrow {
+ right: 16px
+}
+
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {
+ left: 6px;
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: #fff;
+ border-left-color: #fff;
+ -webkit-box-shadow: -3px 3px 7px rgba(0,0,0,.07);
+ box-shadow: -3px 3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-right > .ant-popover-content > .ant-popover-arrow {
+ top: 50%;
+ -webkit-transform: translateY(-50%) rotate(45deg);
+ transform: translateY(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-rightTop > .ant-popover-content > .ant-popover-arrow {
+ top: 12px
+}
+
+.ant-popover-placement-rightBottom > .ant-popover-content > .ant-popover-arrow {
+ bottom: 12px
+}
+
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+ top: 6px;
+ border-top-color: #fff;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: #fff;
+ -webkit-box-shadow: -2px -2px 5px rgba(0,0,0,.06);
+ box-shadow: -2px -2px 5px rgba(0,0,0,.06)
+}
+
+.ant-popover-placement-bottom > .ant-popover-content > .ant-popover-arrow {
+ left: 50%;
+ -webkit-transform: translateX(-50%) rotate(45deg);
+ transform: translateX(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-bottomLeft > .ant-popover-content > .ant-popover-arrow {
+ left: 16px
+}
+
+.ant-popover-placement-bottomRight > .ant-popover-content > .ant-popover-arrow {
+ right: 16px
+}
+
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow, .ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {
+ right: 6px;
+ border-top-color: #fff;
+ border-right-color: #fff;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+ -webkit-box-shadow: 3px -3px 7px rgba(0,0,0,.07);
+ box-shadow: 3px -3px 7px rgba(0,0,0,.07)
+}
+
+.ant-popover-placement-left > .ant-popover-content > .ant-popover-arrow {
+ top: 50%;
+ -webkit-transform: translateY(-50%) rotate(45deg);
+ transform: translateY(-50%) rotate(45deg)
+}
+
+.ant-popover-placement-leftTop > .ant-popover-content > .ant-popover-arrow {
+ top: 12px
+}
+
+.ant-popover-placement-leftBottom > .ant-popover-content > .ant-popover-arrow {
+ bottom: 12px
+}
+
+.ant-progress {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: inline-block
+}
+
+.ant-progress-line {
+ position: relative;
+ width: 100%;
+ font-size: 14px
+}
+
+.ant-progress-small.ant-progress-line, .ant-progress-small.ant-progress-line .ant-progress-text .anticon {
+ font-size: 12px
+}
+
+.ant-progress-outer {
+ display: inline-block;
+ width: 100%;
+ margin-right: 0;
+ padding-right: 0
+}
+
+.ant-progress-show-info .ant-progress-outer {
+ margin-right: calc(-2em - 8px);
+ padding-right: calc(2em + 8px)
+}
+
+.ant-progress-inner {
+ position: relative;
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ vertical-align: middle;
+ background-color: #f5f5f5;
+ border-radius: 100px
+}
+
+.ant-progress-circle-trail {
+ stroke: #f5f5f5
+}
+
+.ant-progress-circle-path {
+ -webkit-animation: ant-progress-appear .3s;
+ animation: ant-progress-appear .3s
+}
+
+.ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+ stroke: #1890ff
+}
+
+.ant-progress-bg, .ant-progress-success-bg {
+ position: relative;
+ background-color: #1890ff;
+ border-radius: 100px;
+ -webkit-transition: all .4s cubic-bezier(.08,.82,.17,1) 0s;
+ transition: all .4s cubic-bezier(.08,.82,.17,1) 0s
+}
+
+.ant-progress-success-bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: #52c41a
+}
+
+.ant-progress-text {
+ display: inline-block;
+ width: 2em;
+ margin-left: 8px;
+ color: rgba(0,0,0,.45);
+ font-size: 1em;
+ line-height: 1;
+ white-space: nowrap;
+ text-align: left;
+ vertical-align: middle;
+ word-break: normal
+}
+
+ .ant-progress-text .anticon {
+ font-size: 14px
+ }
+
+.ant-progress-status-active .ant-progress-bg:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: #fff;
+ border-radius: 10px;
+ opacity: 0;
+ -webkit-animation: ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;
+ animation: ant-progress-active 2.4s cubic-bezier(.23,1,.32,1) infinite;
+ content: ""
+}
+
+.ant-progress-status-exception .ant-progress-bg {
+ background-color: #f5222d
+}
+
+.ant-progress-status-exception .ant-progress-text {
+ color: #f5222d
+}
+
+.ant-progress-status-exception .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+ stroke: #f5222d
+}
+
+.ant-progress-status-success .ant-progress-bg {
+ background-color: #52c41a
+}
+
+.ant-progress-status-success .ant-progress-text {
+ color: #52c41a
+}
+
+.ant-progress-status-success .ant-progress-inner:not(.ant-progress-circle-gradient) .ant-progress-circle-path {
+ stroke: #52c41a
+}
+
+.ant-progress-circle .ant-progress-inner {
+ position: relative;
+ line-height: 1;
+ background-color: transparent
+}
+
+.ant-progress-circle .ant-progress-text {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ line-height: 1;
+ white-space: normal;
+ text-align: center;
+ -webkit-transform: translate(-50%,-50%);
+ transform: translate(-50%,-50%)
+}
+
+ .ant-progress-circle .ant-progress-text .anticon {
+ font-size: 1.16666667em
+ }
+
+.ant-progress-circle.ant-progress-status-exception .ant-progress-text {
+ color: #f5222d
+}
+
+.ant-progress-circle.ant-progress-status-success .ant-progress-text {
+ color: #52c41a
+}
+
+@-webkit-keyframes ant-progress-active {
+ 0% {
+ width: 0;
+ opacity: .1
+ }
+
+ 20% {
+ width: 0;
+ opacity: .5
+ }
+
+ to {
+ width: 100%;
+ opacity: 0
+ }
+}
+
+@keyframes ant-progress-active {
+ 0% {
+ width: 0;
+ opacity: .1
+ }
+
+ 20% {
+ width: 0;
+ opacity: .5
+ }
+
+ to {
+ width: 100%;
+ opacity: 0
+ }
+}
+
+.ant-radio-group {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: inline-block
+}
+
+.ant-radio-wrapper {
+ margin: 0;
+ margin-right: 8px
+}
+
+.ant-radio, .ant-radio-wrapper {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ white-space: nowrap;
+ cursor: pointer
+}
+
+.ant-radio {
+ margin: 0;
+ line-height: 1;
+ vertical-align: sub;
+ outline: none
+}
+
+ .ant-radio-input:focus + .ant-radio-inner, .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner {
+ border-color: #fa541c
+ }
+
+.ant-radio-input:focus + .ant-radio-inner {
+ -webkit-box-shadow: 0 0 0 3px rgba(250,84,28,.08);
+ box-shadow: 0 0 0 3px rgba(250,84,28,.08)
+}
+
+.ant-radio-checked:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 1px solid #fa541c;
+ border-radius: 50%;
+ visibility: hidden;
+ -webkit-animation: antRadioEffect .36s ease-in-out;
+ animation: antRadioEffect .36s ease-in-out;
+ -webkit-animation-fill-mode: both;
+ animation-fill-mode: both;
+ content: ""
+}
+
+.ant-radio-wrapper:hover .ant-radio:after, .ant-radio:hover:after {
+ visibility: visible
+}
+
+.ant-radio-inner {
+ position: relative;
+ top: 0;
+ left: 0;
+ display: block;
+ width: 16px;
+ height: 16px;
+ background-color: #fff;
+ border-color: #d9d9d9;
+ border-style: solid;
+ border-width: 1px;
+ border-radius: 100px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-radio-inner:after {
+ position: absolute;
+ top: 3px;
+ left: 3px;
+ display: table;
+ width: 8px;
+ height: 8px;
+ background-color: #fa541c;
+ border-top: 0;
+ border-left: 0;
+ border-radius: 8px;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ opacity: 0;
+ -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+ transition: all .3s cubic-bezier(.78,.14,.15,.86);
+ content: " "
+ }
+
+.ant-radio-input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1;
+ cursor: pointer;
+ opacity: 0
+}
+
+.ant-radio-checked .ant-radio-inner {
+ border-color: #fa541c
+}
+
+ .ant-radio-checked .ant-radio-inner:after {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: 1;
+ -webkit-transition: all .3s cubic-bezier(.78,.14,.15,.86);
+ transition: all .3s cubic-bezier(.78,.14,.15,.86)
+ }
+
+.ant-radio-disabled .ant-radio-inner {
+ background-color: #f5f5f5;
+ border-color: #d9d9d9 !important;
+ cursor: not-allowed
+}
+
+ .ant-radio-disabled .ant-radio-inner:after {
+ background-color: rgba(0,0,0,.2)
+ }
+
+.ant-radio-disabled .ant-radio-input {
+ cursor: not-allowed
+}
+
+.ant-radio-disabled + span {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+span.ant-radio + * {
+ padding-right: 8px;
+ padding-left: 8px
+}
+
+.ant-radio-button-wrapper {
+ position: relative;
+ display: inline-block;
+ height: 32px;
+ margin: 0;
+ padding: 0 15px;
+ color: rgba(0,0,0,.65);
+ line-height: 30px;
+ background: #fff;
+ border: 1px solid #d9d9d9;
+ border-top-width: 1.02px;
+ border-left: 0;
+ cursor: pointer;
+ -webkit-transition: color .3s,background .3s,border-color .3s;
+ transition: color .3s,background .3s,border-color .3s
+}
+
+ .ant-radio-button-wrapper a {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-radio-button-wrapper > .ant-radio-button {
+ display: block;
+ width: 0;
+ height: 0;
+ margin-left: 0
+ }
+
+.ant-radio-group-large .ant-radio-button-wrapper {
+ height: 40px;
+ font-size: 16px;
+ line-height: 38px
+}
+
+.ant-radio-group-small .ant-radio-button-wrapper {
+ height: 24px;
+ padding: 0 7px;
+ line-height: 22px
+}
+
+.ant-radio-button-wrapper:not(:first-child):before {
+ position: absolute;
+ top: 0;
+ left: -1px;
+ display: block;
+ width: 1px;
+ height: 100%;
+ background-color: #d9d9d9;
+ content: ""
+}
+
+.ant-radio-button-wrapper:first-child {
+ border-left: 1px solid #d9d9d9;
+ border-radius: 2px 0 0 2px
+}
+
+.ant-radio-button-wrapper:last-child {
+ border-radius: 0 2px 2px 0
+}
+
+.ant-radio-button-wrapper:first-child:last-child {
+ border-radius: 2px
+}
+
+.ant-radio-button-wrapper:hover {
+ position: relative;
+ color: #fa541c
+}
+
+.ant-radio-button-wrapper:focus-within {
+ outline: 3px solid rgba(250,84,28,.06)
+}
+
+.ant-radio-button-wrapper .ant-radio-inner, .ant-radio-button-wrapper input[type=checkbox], .ant-radio-button-wrapper input[type=radio] {
+ width: 0;
+ height: 0;
+ opacity: 0;
+ pointer-events: none
+}
+
+.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+ z-index: 1;
+ color: #fa541c;
+ background: #fff;
+ border-color: #fa541c;
+ -webkit-box-shadow: -1px 0 0 0 #fa541c;
+ box-shadow: -1px 0 0 0 #fa541c
+}
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before {
+ background-color: #fa541c !important;
+ opacity: .1
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {
+ border-color: #fa541c;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+ color: #ff7a45;
+ border-color: #ff7a45;
+ -webkit-box-shadow: -1px 0 0 0 #ff7a45;
+ box-shadow: -1px 0 0 0 #ff7a45
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+ color: #d4380d;
+ border-color: #d4380d;
+ -webkit-box-shadow: -1px 0 0 0 #d4380d;
+ box-shadow: -1px 0 0 0 #d4380d
+ }
+
+ .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+ outline: 3px solid rgba(250,84,28,.06)
+ }
+
+.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
+ color: #fff;
+ background: #fa541c;
+ border-color: #fa541c
+}
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
+ color: #fff;
+ background: #ff7a45;
+ border-color: #ff7a45
+ }
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {
+ color: #fff;
+ background: #d4380d;
+ border-color: #d4380d
+ }
+
+ .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
+ outline: 3px solid rgba(250,84,28,.06)
+ }
+
+.ant-radio-button-wrapper-disabled {
+ cursor: not-allowed
+}
+
+ .ant-radio-button-wrapper-disabled, .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {
+ color: rgba(0,0,0,.25);
+ background-color: #f5f5f5;
+ border-color: #d9d9d9
+ }
+
+ .ant-radio-button-wrapper-disabled:first-child {
+ border-left-color: #d9d9d9
+ }
+
+ .ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked {
+ color: #fff;
+ background-color: #e6e6e6;
+ border-color: #d9d9d9;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+@-webkit-keyframes antRadioEffect {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(1.6);
+ transform: scale(1.6);
+ opacity: 0
+ }
+}
+
+@keyframes antRadioEffect {
+ 0% {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: .5
+ }
+
+ to {
+ -webkit-transform: scale(1.6);
+ transform: scale(1.6);
+ opacity: 0
+ }
+}
+
+@supports (-moz-appearance:meterbar) and (background-blend-mode:difference,normal) {
+ .ant-radio {
+ vertical-align: text-bottom
+ }
+}
+
+.ant-rate {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ color: #fadb14;
+ font-size: 20px;
+ line-height: unset;
+ list-style: none;
+ outline: none
+}
+
+.ant-rate-disabled .ant-rate-star {
+ cursor: default
+}
+
+ .ant-rate-disabled .ant-rate-star:hover {
+ -webkit-transform: scale(1);
+ transform: scale(1)
+ }
+
+.ant-rate-star {
+ position: relative;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ color: inherit;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-rate-star:not(:last-child) {
+ margin-right: 8px
+ }
+
+ .ant-rate-star > div:focus {
+ outline: 0
+ }
+
+ .ant-rate-star > div:focus, .ant-rate-star > div:hover {
+ -webkit-transform: scale(1.1);
+ transform: scale(1.1)
+ }
+
+.ant-rate-star-first, .ant-rate-star-second {
+ color: #e8e8e8;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-rate-star-first .anticon, .ant-rate-star-second .anticon {
+ vertical-align: middle
+ }
+
+.ant-rate-star-first {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 50%;
+ height: 100%;
+ overflow: hidden;
+ opacity: 0
+}
+
+.ant-rate-star-half .ant-rate-star-first, .ant-rate-star-half .ant-rate-star-second {
+ opacity: 1
+}
+
+.ant-rate-star-full .ant-rate-star-second, .ant-rate-star-half .ant-rate-star-first {
+ color: inherit
+}
+
+.ant-rate-text {
+ display: inline-block;
+ margin-left: 8px;
+ font-size: 14px
+}
+
+.ant-result {
+ padding: 48px 32px
+}
+
+.ant-result-success .ant-result-icon > .anticon {
+ color: #52c41a
+}
+
+.ant-result-error .ant-result-icon > .anticon {
+ color: #f5222d
+}
+
+.ant-result-info .ant-result-icon > .anticon {
+ color: #1890ff
+}
+
+.ant-result-warning .ant-result-icon > .anticon {
+ color: #faad14
+}
+
+.ant-result-image {
+ width: 250px;
+ height: 295px;
+ margin: auto
+}
+
+.ant-result-icon {
+ margin-bottom: 24px;
+ text-align: center
+}
+
+ .ant-result-icon > .anticon {
+ font-size: 72px
+ }
+
+.ant-result-title {
+ color: rgba(0,0,0,.85);
+ font-size: 24px;
+ line-height: 1.8;
+ text-align: center
+}
+
+.ant-result-subtitle {
+ color: rgba(0,0,0,.45);
+ font-size: 14px;
+ line-height: 1.6;
+ text-align: center
+}
+
+.ant-result-extra {
+ margin-top: 32px;
+ text-align: center
+}
+
+ .ant-result-extra > * {
+ margin-right: 8px
+ }
+
+ .ant-result-extra > :last-child {
+ margin-right: 0
+ }
+
+.ant-result-content {
+ margin-top: 24px;
+ padding: 24px 40px;
+ background-color: #fafafa
+}
+
+.ant-select {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ outline: 0
+}
+
+ .ant-select, .ant-select ol, .ant-select ul {
+ margin: 0;
+ padding: 0;
+ list-style: none
+ }
+
+ .ant-select > ul > li > a {
+ padding: 0;
+ background-color: #fff
+ }
+
+.ant-select-arrow {
+ display: inline-block;
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: absolute;
+ top: 50%;
+ right: 11px;
+ margin-top: -6px;
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ line-height: 1;
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%
+}
+
+ .ant-select-arrow > * {
+ line-height: 1
+ }
+
+ .ant-select-arrow svg {
+ display: inline-block
+ }
+
+ .ant-select-arrow:before {
+ display: none
+ }
+
+ .ant-select-arrow .ant-select-arrow-icon {
+ display: block
+ }
+
+ .ant-select-arrow .ant-select-arrow-icon svg {
+ -webkit-transition: -webkit-transform .3s;
+ transition: -webkit-transform .3s;
+ transition: transform .3s;
+ transition: transform .3s,-webkit-transform .3s
+ }
+
+.ant-select-selection {
+ display: block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ background-color: #fff;
+ border: 1px solid #d9d9d9;
+ border-top-width: 1.02px;
+ border-radius: 2px;
+ outline: none;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-select-selection:hover {
+ border-color: #ff7a45;
+ border-right-width: 1px !important
+ }
+
+ .ant-select-focused .ant-select-selection, .ant-select-selection:active, .ant-select-selection:focus {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+ }
+
+.ant-select-selection__clear {
+ position: absolute;
+ top: 50%;
+ right: 11px;
+ z-index: 1;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ margin-top: -6px;
+ color: rgba(0,0,0,.25);
+ font-size: 12px;
+ font-style: normal;
+ line-height: 12px;
+ text-align: center;
+ text-transform: none;
+ background: #fff;
+ cursor: pointer;
+ opacity: 0;
+ -webkit-transition: color .3s ease,opacity .15s ease;
+ transition: color .3s ease,opacity .15s ease;
+ text-rendering: auto
+}
+
+ .ant-select-selection__clear:before {
+ display: block
+ }
+
+ .ant-select-selection__clear:hover {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-select-selection:hover .ant-select-selection__clear {
+ opacity: 1
+}
+
+.ant-select-selection-selected-value {
+ float: left;
+ max-width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+.ant-select-no-arrow .ant-select-selection-selected-value {
+ padding-right: 0
+}
+
+.ant-select-disabled {
+ color: rgba(0,0,0,.25)
+}
+
+ .ant-select-disabled .ant-select-selection {
+ background: #f5f5f5;
+ cursor: not-allowed
+ }
+
+ .ant-select-disabled .ant-select-selection:active, .ant-select-disabled .ant-select-selection:focus, .ant-select-disabled .ant-select-selection:hover {
+ border-color: #d9d9d9;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-select-disabled .ant-select-selection__clear {
+ display: none;
+ visibility: hidden;
+ pointer-events: none
+ }
+
+ .ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice {
+ padding-right: 10px;
+ color: rgba(0,0,0,.33);
+ background: #f5f5f5
+ }
+
+ .ant-select-disabled .ant-select-selection--multiple .ant-select-selection__choice__remove {
+ display: none
+ }
+
+.ant-select-selection--single {
+ position: relative;
+ height: 32px;
+ cursor: pointer
+}
+
+ .ant-select-selection--single .ant-select-selection__rendered {
+ margin-right: 24px
+ }
+
+.ant-select-no-arrow .ant-select-selection__rendered {
+ margin-right: 11px
+}
+
+.ant-select-selection__rendered {
+ position: relative;
+ display: block;
+ margin-right: 11px;
+ margin-left: 11px;
+ line-height: 30px
+}
+
+ .ant-select-selection__rendered:after {
+ display: inline-block;
+ width: 0;
+ visibility: hidden;
+ content: ".";
+ pointer-events: none
+ }
+
+.ant-select-lg {
+ font-size: 16px
+}
+
+ .ant-select-lg .ant-select-selection--single {
+ height: 40px
+ }
+
+ .ant-select-lg .ant-select-selection__rendered {
+ line-height: 38px
+ }
+
+ .ant-select-lg .ant-select-selection--multiple {
+ min-height: 40px
+ }
+
+ .ant-select-lg .ant-select-selection--multiple .ant-select-selection__rendered li {
+ height: 32px;
+ line-height: 32px
+ }
+
+ .ant-select-lg .ant-select-selection--multiple .ant-select-arrow, .ant-select-lg .ant-select-selection--multiple .ant-select-selection__clear {
+ top: 20px
+ }
+
+.ant-select-sm .ant-select-selection--single {
+ height: 24px
+}
+
+.ant-select-sm .ant-select-selection__rendered {
+ margin-left: 7px;
+ line-height: 22px
+}
+
+.ant-select-sm .ant-select-selection--multiple {
+ min-height: 24px
+}
+
+ .ant-select-sm .ant-select-selection--multiple .ant-select-selection__rendered li {
+ height: 16px;
+ line-height: 14px
+ }
+
+ .ant-select-sm .ant-select-selection--multiple .ant-select-arrow, .ant-select-sm .ant-select-selection--multiple .ant-select-selection__clear {
+ top: 12px
+ }
+
+.ant-select-sm .ant-select-arrow, .ant-select-sm .ant-select-selection__clear {
+ right: 8px
+}
+
+.ant-select-disabled .ant-select-selection__choice__remove {
+ color: rgba(0,0,0,.25);
+ cursor: default
+}
+
+ .ant-select-disabled .ant-select-selection__choice__remove:hover {
+ color: rgba(0,0,0,.25)
+ }
+
+.ant-select-search__field__wrap {
+ position: relative;
+ display: inline-block
+}
+
+.ant-select-search__field__placeholder, .ant-select-selection__placeholder {
+ position: absolute;
+ top: 50%;
+ right: 9px;
+ left: 0;
+ max-width: 100%;
+ height: 20px;
+ margin-top: -10px;
+ overflow: hidden;
+ color: #bfbfbf;
+ line-height: 20px;
+ white-space: nowrap;
+ text-align: left;
+ text-overflow: ellipsis
+}
+
+.ant-select-search__field__placeholder {
+ left: 12px
+}
+
+.ant-select-search__field__mirror {
+ position: absolute;
+ top: 0;
+ left: 0;
+ white-space: pre;
+ opacity: 0;
+ pointer-events: none
+}
+
+.ant-select-search--inline {
+ position: absolute;
+ width: 100%;
+ height: 100%
+}
+
+ .ant-select-search--inline .ant-select-search__field__wrap {
+ width: 100%;
+ height: 100%
+ }
+
+ .ant-select-search--inline .ant-select-search__field {
+ width: 100%;
+ height: 100%;
+ font-size: 100%;
+ line-height: 1;
+ background: transparent;
+ border-width: 0;
+ border-radius: 2px;
+ outline: 0
+ }
+
+ .ant-select-search--inline > i {
+ float: right
+ }
+
+.ant-select-selection--multiple {
+ min-height: 32px;
+ padding-bottom: 3px;
+ cursor: text;
+ zoom: 1
+}
+
+ .ant-select-selection--multiple:after, .ant-select-selection--multiple:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-select-selection--multiple:after {
+ clear: both
+ }
+
+ .ant-select-selection--multiple .ant-select-search--inline {
+ position: static;
+ float: left;
+ width: auto;
+ max-width: 100%;
+ padding: 0
+ }
+
+ .ant-select-selection--multiple .ant-select-search--inline .ant-select-search__field {
+ width: .75em;
+ max-width: 100%;
+ padding: 1px
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__rendered {
+ height: auto;
+ margin-bottom: -3px;
+ margin-left: 5px
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__placeholder {
+ margin-left: 6px
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__rendered > ul > li, .ant-select-selection--multiple > ul > li {
+ height: 24px;
+ margin-top: 3px;
+ line-height: 22px
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice {
+ position: relative;
+ float: left;
+ max-width: 99%;
+ margin-right: 4px;
+ padding: 0 20px 0 10px;
+ overflow: hidden;
+ color: rgba(0,0,0,.65);
+ background-color: #fafafa;
+ border: 1px solid #e8e8e8;
+ border-radius: 2px;
+ cursor: default;
+ -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+ transition: padding .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__disabled {
+ padding: 0 10px
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__content {
+ display: inline-block;
+ max-width: 100%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ -webkit-transition: margin .3s cubic-bezier(.645,.045,.355,1);
+ transition: margin .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__remove {
+ color: inherit;
+ font-style: normal;
+ line-height: 0;
+ text-align: center;
+ text-transform: none;
+ vertical-align: -.125em;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ position: absolute;
+ right: 4px;
+ color: rgba(0,0,0,.45);
+ font-weight: 700;
+ line-height: inherit;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__remove > * {
+ line-height: 1
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__remove svg {
+ display: inline-block
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__remove:before {
+ display: none
+ }
+
+ .ant-select-selection--multiple .ant-select-selection__choice__remove .ant-select-selection--multiple .ant-select-selection__choice__remove-icon {
+ display: block
+ }
+
+:root .ant-select-selection--multiple .ant-select-selection__choice__remove {
+ font-size: 12px
+}
+
+.ant-select-selection--multiple .ant-select-selection__choice__remove:hover {
+ color: rgba(0,0,0,.75)
+}
+
+.ant-select-selection--multiple .ant-select-arrow, .ant-select-selection--multiple .ant-select-selection__clear {
+ top: 16px
+}
+
+.ant-select-allow-clear .ant-select-selection--multiple .ant-select-selection__rendered, .ant-select-show-arrow .ant-select-selection--multiple .ant-select-selection__rendered {
+ margin-right: 20px
+}
+
+.ant-select-open .ant-select-arrow-icon svg {
+ -webkit-transform: rotate(180deg);
+ transform: rotate(180deg)
+}
+
+.ant-select-open .ant-select-selection {
+ border-color: #ff7a45;
+ border-right-width: 1px !important;
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+.ant-select-combobox .ant-select-arrow {
+ display: none
+}
+
+.ant-select-combobox .ant-select-search--inline {
+ float: none;
+ width: 100%;
+ height: 100%
+}
+
+.ant-select-combobox .ant-select-search__field__wrap {
+ width: 100%;
+ height: 100%
+}
+
+.ant-select-combobox .ant-select-search__field {
+ position: relative;
+ z-index: 1;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1),height 0s;
+ transition: all .3s cubic-bezier(.645,.045,.355,1),height 0s
+}
+
+.ant-select-combobox.ant-select-allow-clear .ant-select-selection:hover .ant-select-selection__rendered, .ant-select-combobox.ant-select-show-arrow .ant-select-selection:hover .ant-select-selection__rendered {
+ margin-right: 20px
+}
+
+.ant-select-dropdown {
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ z-index: 1050;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ font-size: 14px;
+ font-variant: normal;
+ background-color: #fff;
+ border-radius: 2px;
+ outline: none;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+ .ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-bottomLeft, .ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-bottomLeft {
+ -webkit-animation-name: antSlideUpIn;
+ animation-name: antSlideUpIn
+ }
+
+ .ant-select-dropdown.slide-up-appear.slide-up-appear-active.ant-select-dropdown-placement-topLeft, .ant-select-dropdown.slide-up-enter.slide-up-enter-active.ant-select-dropdown-placement-topLeft {
+ -webkit-animation-name: antSlideDownIn;
+ animation-name: antSlideDownIn
+ }
+
+ .ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-bottomLeft {
+ -webkit-animation-name: antSlideUpOut;
+ animation-name: antSlideUpOut
+ }
+
+ .ant-select-dropdown.slide-up-leave.slide-up-leave-active.ant-select-dropdown-placement-topLeft {
+ -webkit-animation-name: antSlideDownOut;
+ animation-name: antSlideDownOut
+ }
+
+.ant-select-dropdown-hidden {
+ display: none
+}
+
+.ant-select-dropdown-menu {
+ max-height: 250px;
+ margin-bottom: 0;
+ padding: 4px 0;
+ padding-left: 0;
+ overflow: auto;
+ list-style: none;
+ outline: none
+}
+
+.ant-select-dropdown-menu-item-group-list {
+ margin: 0;
+ padding: 0
+}
+
+ .ant-select-dropdown-menu-item-group-list > .ant-select-dropdown-menu-item {
+ padding-left: 20px
+ }
+
+.ant-select-dropdown-menu-item-group-title {
+ height: 32px;
+ padding: 0 12px;
+ color: rgba(0,0,0,.45);
+ font-size: 12px;
+ line-height: 32px
+}
+
+.ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:first-child:not(:last-child), .ant-select-dropdown-menu-item-group:not(:last-child) .ant-select-dropdown-menu-item-group-list .ant-select-dropdown-menu-item:last-child {
+ border-radius: 0
+}
+
+.ant-select-dropdown-menu-item {
+ position: relative;
+ display: block;
+ padding: 5px 12px;
+ overflow: hidden;
+ color: rgba(0,0,0,.65);
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 22px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ cursor: pointer;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-select-dropdown-menu-item:hover:not(.ant-select-dropdown-menu-item-disabled) {
+ background-color: #fff2e8
+ }
+
+.ant-select-dropdown-menu-item-selected {
+ color: rgba(0,0,0,.65);
+ font-weight: 600;
+ background-color: #fafafa
+}
+
+.ant-select-dropdown-menu-item-disabled, .ant-select-dropdown-menu-item-disabled:hover {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+}
+
+.ant-select-dropdown-menu-item-active:not(.ant-select-dropdown-menu-item-disabled) {
+ background-color: #fff2e8
+}
+
+.ant-select-dropdown-menu-item-divider {
+ height: 1px;
+ margin: 1px 0;
+ overflow: hidden;
+ line-height: 0;
+ background-color: #e8e8e8
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item {
+ padding-right: 32px
+}
+
+ .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item .ant-select-selected-icon {
+ position: absolute;
+ top: 50%;
+ right: 12px;
+ color: transparent;
+ font-weight: 700;
+ font-size: 12px;
+ text-shadow: 0 .1px 0,.1px 0 0,0 -.1px 0,-.1px 0;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+ -webkit-transition: all .2s;
+ transition: all .2s
+ }
+
+ .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item:hover .ant-select-selected-icon {
+ color: rgba(0,0,0,.87)
+ }
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-disabled .ant-select-selected-icon {
+ display: none
+}
+
+.ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected .ant-select-selected-icon, .ant-select-dropdown.ant-select-dropdown--multiple .ant-select-dropdown-menu-item-selected:hover .ant-select-selected-icon {
+ display: inline-block;
+ color: #fa541c
+}
+
+.ant-select-dropdown--empty.ant-select-dropdown--multiple .ant-select-dropdown-menu-item {
+ padding-right: 12px
+}
+
+.ant-select-dropdown-container-open .ant-select-dropdown, .ant-select-dropdown-open .ant-select-dropdown {
+ display: block
+}
+
+.ant-skeleton {
+ display: table;
+ width: 100%
+}
+
+.ant-skeleton-header {
+ display: table-cell;
+ padding-right: 16px;
+ vertical-align: top
+}
+
+ .ant-skeleton-header .ant-skeleton-avatar {
+ display: inline-block;
+ vertical-align: top;
+ background: #f2f2f2;
+ width: 32px;
+ height: 32px;
+ line-height: 32px
+ }
+
+ .ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {
+ border-radius: 50%
+ }
+
+ .ant-skeleton-header .ant-skeleton-avatar-lg {
+ width: 40px;
+ height: 40px;
+ line-height: 40px
+ }
+
+ .ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {
+ border-radius: 50%
+ }
+
+ .ant-skeleton-header .ant-skeleton-avatar-sm {
+ width: 24px;
+ height: 24px;
+ line-height: 24px
+ }
+
+ .ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {
+ border-radius: 50%
+ }
+
+.ant-skeleton-content {
+ display: table-cell;
+ width: 100%;
+ vertical-align: top
+}
+
+ .ant-skeleton-content .ant-skeleton-title {
+ width: 100%;
+ height: 16px;
+ margin-top: 16px;
+ background: #f2f2f2
+ }
+
+ .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+ margin-top: 24px
+ }
+
+ .ant-skeleton-content .ant-skeleton-paragraph {
+ padding: 0
+ }
+
+ .ant-skeleton-content .ant-skeleton-paragraph > li {
+ width: 100%;
+ height: 16px;
+ list-style: none;
+ background: #f2f2f2
+ }
+
+ .ant-skeleton-content .ant-skeleton-paragraph > li:last-child:not(:first-child):not(:nth-child(2)) {
+ width: 61%
+ }
+
+ .ant-skeleton-content .ant-skeleton-paragraph > li + li {
+ margin-top: 16px
+ }
+
+.ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title {
+ margin-top: 12px
+}
+
+ .ant-skeleton-with-avatar .ant-skeleton-content .ant-skeleton-title + .ant-skeleton-paragraph {
+ margin-top: 28px
+ }
+
+.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title {
+ background: -webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));
+ background: linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);
+ background-size: 400% 100%;
+ -webkit-animation: ant-skeleton-loading 1.4s ease infinite;
+ animation: ant-skeleton-loading 1.4s ease infinite
+}
+
+@-webkit-keyframes ant-skeleton-loading {
+ 0% {
+ background-position: 100% 50%
+ }
+
+ to {
+ background-position: 0 50%
+ }
+}
+
+@keyframes ant-skeleton-loading {
+ 0% {
+ background-position: 100% 50%
+ }
+
+ to {
+ background-position: 0 50%
+ }
+}
+
+.ant-slider {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ height: 12px;
+ margin: 14px 6px 10px;
+ padding: 4px 0;
+ cursor: pointer;
+ -ms-touch-action: none;
+ touch-action: none
+}
+
+.ant-slider-vertical {
+ width: 12px;
+ height: 100%;
+ margin: 6px 10px;
+ padding: 0 4px
+}
+
+ .ant-slider-vertical .ant-slider-rail {
+ width: 4px;
+ height: 100%
+ }
+
+ .ant-slider-vertical .ant-slider-track {
+ width: 4px
+ }
+
+ .ant-slider-vertical .ant-slider-handle {
+ margin-top: -6px;
+ margin-left: -5px
+ }
+
+ .ant-slider-vertical .ant-slider-mark {
+ top: 0;
+ left: 12px;
+ width: 18px;
+ height: 100%
+ }
+
+ .ant-slider-vertical .ant-slider-mark-text {
+ left: 4px;
+ white-space: nowrap
+ }
+
+ .ant-slider-vertical .ant-slider-step {
+ width: 4px;
+ height: 100%
+ }
+
+ .ant-slider-vertical .ant-slider-dot {
+ top: auto;
+ left: 2px;
+ margin-bottom: -4px
+ }
+
+.ant-slider-tooltip .ant-tooltip-inner {
+ min-width: unset
+}
+
+.ant-slider-with-marks {
+ margin-bottom: 28px
+}
+
+.ant-slider-rail {
+ width: 100%;
+ background-color: #f5f5f5
+}
+
+.ant-slider-rail, .ant-slider-track {
+ position: absolute;
+ height: 4px;
+ border-radius: 2px;
+ -webkit-transition: background-color .3s;
+ transition: background-color .3s
+}
+
+.ant-slider-track {
+ background-color: #ffbb96
+}
+
+.ant-slider-handle {
+ position: absolute;
+ width: 14px;
+ height: 14px;
+ margin-top: -5px;
+ background-color: #fff;
+ border: 2px solid #ffbb96;
+ border-radius: 50%;
+ -webkit-box-shadow: 0;
+ box-shadow: 0;
+ cursor: pointer;
+ -webkit-transition: border-color .3s,-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28);
+ transition: border-color .3s,-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28);
+ transition: border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28);
+ transition: border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28),-webkit-box-shadow .6s,-webkit-transform .3s cubic-bezier(.18,.89,.32,1.28)
+}
+
+ .ant-slider-handle:focus {
+ border-color: #fb7649;
+ outline: none;
+ -webkit-box-shadow: 0 0 0 5px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 5px rgba(250,84,28,.2)
+ }
+
+ .ant-slider-handle.ant-tooltip-open {
+ border-color: #fa541c
+ }
+
+.ant-slider:hover .ant-slider-rail {
+ background-color: #e1e1e1
+}
+
+.ant-slider:hover .ant-slider-track {
+ background-color: #ff9c6e
+}
+
+.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open) {
+ border-color: #ff9c6e
+}
+
+.ant-slider-mark {
+ position: absolute;
+ top: 14px;
+ left: 0;
+ width: 100%;
+ font-size: 14px
+}
+
+.ant-slider-mark-text {
+ position: absolute;
+ display: inline-block;
+ color: rgba(0,0,0,.45);
+ text-align: center;
+ word-break: keep-all;
+ cursor: pointer
+}
+
+.ant-slider-mark-text-active {
+ color: rgba(0,0,0,.65)
+}
+
+.ant-slider-step {
+ position: absolute;
+ width: 100%;
+ height: 4px;
+ background: transparent
+}
+
+.ant-slider-dot {
+ position: absolute;
+ top: -2px;
+ width: 8px;
+ height: 8px;
+ background-color: #fff;
+ border: 2px solid #e8e8e8;
+ border-radius: 50%;
+ cursor: pointer
+}
+
+ .ant-slider-dot, .ant-slider-dot:first-child, .ant-slider-dot:last-child {
+ margin-left: -4px
+ }
+
+.ant-slider-dot-active {
+ border-color: #fdaa8e
+}
+
+.ant-slider-disabled {
+ cursor: not-allowed
+}
+
+ .ant-slider-disabled .ant-slider-track {
+ background-color: rgba(0,0,0,.25) !important
+ }
+
+ .ant-slider-disabled .ant-slider-dot, .ant-slider-disabled .ant-slider-handle {
+ background-color: #fff;
+ border-color: rgba(0,0,0,.25) !important;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ cursor: not-allowed
+ }
+
+ .ant-slider-disabled .ant-slider-dot, .ant-slider-disabled .ant-slider-mark-text {
+ cursor: not-allowed !important
+ }
+
+.ant-space {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex
+}
+
+.ant-space-vertical {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column
+}
+
+.ant-space-align-center {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center
+}
+
+.ant-space-align-start {
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start
+}
+
+.ant-space-align-end {
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end
+}
+
+.ant-space-align-baseline {
+ -webkit-box-align: baseline;
+ -ms-flex-align: baseline;
+ align-items: baseline
+}
+
+.ant-spin {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: absolute;
+ display: none;
+ color: #fa541c;
+ text-align: center;
+ vertical-align: middle;
+ opacity: 0;
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.78,.14,.15,.86);
+ transition: -webkit-transform .3s cubic-bezier(.78,.14,.15,.86);
+ transition: transform .3s cubic-bezier(.78,.14,.15,.86);
+ transition: transform .3s cubic-bezier(.78,.14,.15,.86),-webkit-transform .3s cubic-bezier(.78,.14,.15,.86)
+}
+
+.ant-spin-spinning {
+ position: static;
+ display: inline-block;
+ opacity: 1
+}
+
+.ant-spin-nested-loading {
+ position: relative
+}
+
+ .ant-spin-nested-loading > div > .ant-spin {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 4;
+ display: block;
+ width: 100%;
+ height: 100%;
+ max-height: 400px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin: -10px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin .ant-spin-text {
+ position: absolute;
+ top: 50%;
+ width: 100%;
+ padding-top: 5px;
+ text-shadow: 0 1px 2px #fff
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {
+ margin-top: -20px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {
+ margin: -7px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {
+ padding-top: 2px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {
+ margin-top: -17px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {
+ margin: -16px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {
+ padding-top: 11px
+ }
+
+ .ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {
+ margin-top: -26px
+ }
+
+.ant-spin-container {
+ position: relative;
+ -webkit-transition: opacity .3s;
+ transition: opacity .3s
+}
+
+ .ant-spin-container:after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 10;
+ display: none\9;
+ width: 100%;
+ height: 100%;
+ background: #fff;
+ opacity: 0;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: "";
+ pointer-events: none
+ }
+
+.ant-spin-blur {
+ clear: both;
+ overflow: hidden;
+ opacity: .5;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none
+}
+
+ .ant-spin-blur:after {
+ opacity: .4;
+ pointer-events: auto
+ }
+
+.ant-spin-tip {
+ color: rgba(0,0,0,.45)
+}
+
+.ant-spin-dot {
+ position: relative;
+ display: inline-block;
+ font-size: 20px;
+ width: 1em;
+ height: 1em
+}
+
+.ant-spin-dot-item {
+ position: absolute;
+ display: block;
+ width: 9px;
+ height: 9px;
+ background-color: #fa541c;
+ border-radius: 100%;
+ -webkit-transform: scale(.75);
+ transform: scale(.75);
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ opacity: .3;
+ -webkit-animation: antSpinMove 1s linear infinite alternate;
+ animation: antSpinMove 1s linear infinite alternate
+}
+
+ .ant-spin-dot-item:first-child {
+ top: 0;
+ left: 0
+ }
+
+ .ant-spin-dot-item:nth-child(2) {
+ top: 0;
+ right: 0;
+ -webkit-animation-delay: .4s;
+ animation-delay: .4s
+ }
+
+ .ant-spin-dot-item:nth-child(3) {
+ right: 0;
+ bottom: 0;
+ -webkit-animation-delay: .8s;
+ animation-delay: .8s
+ }
+
+ .ant-spin-dot-item:nth-child(4) {
+ bottom: 0;
+ left: 0;
+ -webkit-animation-delay: 1.2s;
+ animation-delay: 1.2s
+ }
+
+.ant-spin-dot-spin {
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ -webkit-animation: antRotate 1.2s linear infinite;
+ animation: antRotate 1.2s linear infinite
+}
+
+.ant-spin-sm .ant-spin-dot {
+ font-size: 14px
+}
+
+ .ant-spin-sm .ant-spin-dot i {
+ width: 6px;
+ height: 6px
+ }
+
+.ant-spin-lg .ant-spin-dot {
+ font-size: 32px
+}
+
+ .ant-spin-lg .ant-spin-dot i {
+ width: 14px;
+ height: 14px
+ }
+
+.ant-spin.ant-spin-show-text .ant-spin-text {
+ display: block
+}
+
+@media (-ms-high-contrast:active),(-ms-high-contrast:none) {
+ .ant-spin-blur {
+ background: #fff;
+ opacity: .5
+ }
+}
+
+@-webkit-keyframes antSpinMove {
+ to {
+ opacity: 1
+ }
+}
+
+@keyframes antSpinMove {
+ to {
+ opacity: 1
+ }
+}
+
+@-webkit-keyframes antRotate {
+ to {
+ -webkit-transform: rotate(405deg);
+ transform: rotate(405deg)
+ }
+}
+
+@keyframes antRotate {
+ to {
+ -webkit-transform: rotate(405deg);
+ transform: rotate(405deg)
+ }
+}
+
+.ant-statistic {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum"
+}
+
+.ant-statistic-title {
+ margin-bottom: 4px;
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.ant-statistic-content {
+ color: rgba(0,0,0,.85);
+ font-size: 24px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol
+}
+
+.ant-statistic-content-value-decimal {
+ font-size: 16px
+}
+
+.ant-statistic-content-prefix, .ant-statistic-content-suffix {
+ display: inline-block
+}
+
+.ant-statistic-content-prefix {
+ margin-right: 4px
+}
+
+.ant-statistic-content-suffix {
+ margin-left: 4px;
+ font-size: 16px
+}
+
+.ant-steps {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ width: 100%;
+ font-size: 0
+}
+
+.ant-steps-item {
+ position: relative;
+ display: inline-block;
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ overflow: hidden;
+ vertical-align: top
+}
+
+.ant-steps-item-container {
+ outline: none
+}
+
+.ant-steps-item:last-child {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none
+}
+
+ .ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after, .ant-steps-item:last-child > .ant-steps-item-container > .ant-steps-item-tail {
+ display: none
+ }
+
+.ant-steps-item-content, .ant-steps-item-icon {
+ display: inline-block;
+ vertical-align: top
+}
+
+.ant-steps-item-icon {
+ width: 32px;
+ height: 32px;
+ margin-right: 8px;
+ font-size: 16px;
+ font-family: -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;
+ line-height: 32px;
+ text-align: center;
+ border: 1px solid rgba(0,0,0,.25);
+ border-radius: 32px;
+ -webkit-transition: background-color .3s,border-color .3s;
+ transition: background-color .3s,border-color .3s
+}
+
+ .ant-steps-item-icon > .ant-steps-icon {
+ position: relative;
+ top: -1px;
+ color: #fa541c;
+ line-height: 1
+ }
+
+.ant-steps-item-tail {
+ position: absolute;
+ top: 12px;
+ left: 0;
+ width: 100%;
+ padding: 0 10px
+}
+
+ .ant-steps-item-tail:after {
+ display: inline-block;
+ width: 100%;
+ height: 1px;
+ background: #e8e8e8;
+ border-radius: 1px;
+ -webkit-transition: background .3s;
+ transition: background .3s;
+ content: ""
+ }
+
+.ant-steps-item-title {
+ position: relative;
+ display: inline-block;
+ padding-right: 16px;
+ color: rgba(0,0,0,.65);
+ font-size: 16px;
+ line-height: 32px
+}
+
+ .ant-steps-item-title:after {
+ position: absolute;
+ top: 16px;
+ left: 100%;
+ display: block;
+ width: 9999px;
+ height: 1px;
+ background: #e8e8e8;
+ content: ""
+ }
+
+.ant-steps-item-subtitle {
+ display: inline;
+ margin-left: 8px;
+ font-weight: 400
+}
+
+.ant-steps-item-description, .ant-steps-item-subtitle {
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.ant-steps-item-wait .ant-steps-item-icon {
+ background-color: #fff;
+ border-color: rgba(0,0,0,.25)
+}
+
+ .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon {
+ color: rgba(0,0,0,.25)
+ }
+
+ .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: rgba(0,0,0,.25)
+ }
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+ color: rgba(0,0,0,.45)
+}
+
+ .ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ background-color: #e8e8e8
+ }
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+ color: rgba(0,0,0,.45)
+}
+
+.ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail:after {
+ background-color: #e8e8e8
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+ background-color: #fff;
+ border-color: #fa541c
+}
+
+ .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+ color: #fa541c
+ }
+
+ .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #fa541c
+ }
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+ color: rgba(0,0,0,.85)
+}
+
+ .ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ background-color: #e8e8e8
+ }
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+ color: rgba(0,0,0,.65)
+}
+
+.ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail:after {
+ background-color: #e8e8e8
+}
+
+.ant-steps-item-process .ant-steps-item-icon {
+ background: #fa541c
+}
+
+ .ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+ color: #fff
+ }
+
+.ant-steps-item-process .ant-steps-item-title {
+ font-weight: 500
+}
+
+.ant-steps-item-finish .ant-steps-item-icon {
+ background-color: #fff;
+ border-color: #fa541c
+}
+
+ .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon {
+ color: #fa541c
+ }
+
+ .ant-steps-item-finish .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #fa541c
+ }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+ color: rgba(0,0,0,.65)
+}
+
+ .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ background-color: #fa541c
+ }
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+ color: rgba(0,0,0,.45)
+}
+
+.ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail:after {
+ background-color: #fa541c
+}
+
+.ant-steps-item-error .ant-steps-item-icon {
+ background-color: #fff;
+ border-color: #f5222d
+}
+
+ .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon {
+ color: #f5222d
+ }
+
+ .ant-steps-item-error .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #f5222d
+ }
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title {
+ color: #f5222d
+}
+
+ .ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ background-color: #e8e8e8
+ }
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-description {
+ color: #f5222d
+}
+
+.ant-steps-item-error > .ant-steps-item-container > .ant-steps-item-tail:after {
+ background-color: #e8e8e8
+}
+
+.ant-steps-item.ant-steps-next-error .ant-steps-item-title:after {
+ background: #f5222d
+}
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] {
+ cursor: pointer
+}
+
+ .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-icon .ant-steps-icon, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button] .ant-steps-item-title {
+ -webkit-transition: color .3s;
+ transition: color .3s
+ }
+
+ .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-description, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-subtitle, .ant-steps .ant-steps-item:not(.ant-steps-item-active) > .ant-steps-item-container[role=button]:hover .ant-steps-item-title {
+ color: #fa541c
+ }
+
+.ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon {
+ border-color: #fa541c
+}
+
+ .ant-steps .ant-steps-item:not(.ant-steps-item-active):not(.ant-steps-item-process) > .ant-steps-item-container[role=button]:hover .ant-steps-item-icon .ant-steps-icon {
+ color: #fa541c
+ }
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+ margin-right: 16px;
+ white-space: nowrap
+}
+
+ .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
+ margin-right: 0
+ }
+
+ .ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child .ant-steps-item-title {
+ padding-right: 0
+ }
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-tail {
+ display: none
+}
+
+.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item-description {
+ max-width: 140px;
+ white-space: normal
+}
+
+.ant-steps-item-custom .ant-steps-item-icon {
+ height: auto;
+ background: none;
+ border: 0
+}
+
+ .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+ top: 0;
+ left: .5px;
+ width: 32px;
+ height: 32px;
+ font-size: 24px;
+ line-height: 32px
+ }
+
+.ant-steps-item-custom.ant-steps-item-process .ant-steps-item-icon > .ant-steps-icon {
+ color: #fa541c
+}
+
+.ant-steps:not(.ant-steps-vertical) .ant-steps-item-custom .ant-steps-item-icon {
+ width: auto
+}
+
+.ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item {
+ margin-right: 12px
+}
+
+ .ant-steps-small.ant-steps-horizontal:not(.ant-steps-label-vertical) .ant-steps-item:last-child {
+ margin-right: 0
+ }
+
+.ant-steps-small .ant-steps-item-icon {
+ width: 24px;
+ height: 24px;
+ font-size: 12px;
+ line-height: 24px;
+ text-align: center;
+ border-radius: 24px
+}
+
+.ant-steps-small .ant-steps-item-title {
+ padding-right: 12px;
+ font-size: 14px;
+ line-height: 24px
+}
+
+ .ant-steps-small .ant-steps-item-title:after {
+ top: 12px
+ }
+
+.ant-steps-small .ant-steps-item-description {
+ color: rgba(0,0,0,.45);
+ font-size: 14px
+}
+
+.ant-steps-small .ant-steps-item-tail {
+ top: 8px
+}
+
+.ant-steps-small .ant-steps-item-custom .ant-steps-item-icon {
+ width: inherit;
+ height: inherit;
+ line-height: inherit;
+ background: none;
+ border: 0;
+ border-radius: 0
+}
+
+ .ant-steps-small .ant-steps-item-custom .ant-steps-item-icon > .ant-steps-icon {
+ font-size: 24px;
+ line-height: 24px;
+ -webkit-transform: none;
+ transform: none
+ }
+
+.ant-steps-vertical {
+ display: block
+}
+
+ .ant-steps-vertical .ant-steps-item {
+ display: block;
+ overflow: visible
+ }
+
+ .ant-steps-vertical .ant-steps-item-icon {
+ float: left;
+ margin-right: 16px
+ }
+
+ .ant-steps-vertical .ant-steps-item-content {
+ display: block;
+ min-height: 48px;
+ overflow: hidden
+ }
+
+ .ant-steps-vertical .ant-steps-item-title {
+ line-height: 32px
+ }
+
+ .ant-steps-vertical .ant-steps-item-description {
+ padding-bottom: 12px
+ }
+
+ .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+ position: absolute;
+ top: 0;
+ left: 16px;
+ width: 1px;
+ height: 100%;
+ padding: 38px 0 6px
+ }
+
+ .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail:after {
+ width: 1px;
+ height: 100%
+ }
+
+ .ant-steps-vertical > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail {
+ display: block
+ }
+
+ .ant-steps-vertical > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ display: none
+ }
+
+ .ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+ position: absolute;
+ top: 0;
+ left: 12px;
+ padding: 30px 0 6px
+ }
+
+ .ant-steps-vertical.ant-steps-small .ant-steps-item-container .ant-steps-item-title {
+ line-height: 24px
+ }
+
+@media (max-width:480px) {
+ .ant-steps-horizontal.ant-steps-label-horizontal {
+ display: block
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {
+ display: block;
+ overflow: visible
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-icon {
+ float: left;
+ margin-right: 16px
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-content {
+ display: block;
+ min-height: 48px;
+ overflow: hidden
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-title {
+ line-height: 32px
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item-description {
+ padding-bottom: 12px
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+ position: absolute;
+ top: 0;
+ left: 16px;
+ width: 1px;
+ height: 100%;
+ padding: 38px 0 6px
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail:after {
+ width: 1px;
+ height: 100%
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item:not(:last-child) > .ant-steps-item-container > .ant-steps-item-tail {
+ display: block
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-content > .ant-steps-item-title:after {
+ display: none
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-tail {
+ position: absolute;
+ top: 0;
+ left: 12px;
+ padding: 30px 0 6px
+ }
+
+ .ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item-container .ant-steps-item-title {
+ line-height: 24px
+ }
+}
+
+.ant-steps-label-vertical .ant-steps-item {
+ overflow: visible
+}
+
+.ant-steps-label-vertical .ant-steps-item-tail {
+ margin-left: 58px;
+ padding: 3.5px 24px
+}
+
+.ant-steps-label-vertical .ant-steps-item-content {
+ display: block;
+ width: 116px;
+ margin-top: 8px;
+ text-align: center
+}
+
+.ant-steps-label-vertical .ant-steps-item-icon {
+ display: inline-block;
+ margin-left: 42px
+}
+
+.ant-steps-label-vertical .ant-steps-item-title {
+ padding-right: 0
+}
+
+ .ant-steps-label-vertical .ant-steps-item-title:after {
+ display: none
+ }
+
+.ant-steps-label-vertical .ant-steps-item-subtitle {
+ display: block;
+ margin-bottom: 4px;
+ margin-left: 0;
+ line-height: 1.5
+}
+
+.ant-steps-label-vertical.ant-steps-small:not(.ant-steps-dot) .ant-steps-item-icon {
+ margin-left: 46px
+}
+
+.ant-steps-dot .ant-steps-item-title, .ant-steps-dot.ant-steps-small .ant-steps-item-title {
+ line-height: 1.5
+}
+
+.ant-steps-dot .ant-steps-item-tail, .ant-steps-dot.ant-steps-small .ant-steps-item-tail {
+ top: 2px;
+ width: 100%;
+ margin: 0 0 0 70px;
+ padding: 0
+}
+
+ .ant-steps-dot .ant-steps-item-tail:after, .ant-steps-dot.ant-steps-small .ant-steps-item-tail:after {
+ width: calc(100% - 20px);
+ height: 3px;
+ margin-left: 12px
+ }
+
+.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item:first-child .ant-steps-icon-dot {
+ left: 2px
+}
+
+.ant-steps-dot .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-icon {
+ width: 8px;
+ height: 8px;
+ margin-left: 67px;
+ padding-right: 0;
+ line-height: 8px;
+ background: transparent;
+ border: 0
+}
+
+ .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot {
+ position: relative;
+ float: left;
+ width: 100%;
+ height: 100%;
+ border-radius: 100px;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-steps-dot .ant-steps-item-icon .ant-steps-icon-dot:after, .ant-steps-dot.ant-steps-small .ant-steps-item-icon .ant-steps-icon-dot:after {
+ position: absolute;
+ top: -12px;
+ left: -26px;
+ width: 60px;
+ height: 32px;
+ background: rgba(0,0,0,.001);
+ content: ""
+ }
+
+.ant-steps-dot .ant-steps-item-content, .ant-steps-dot.ant-steps-small .ant-steps-item-content {
+ width: 140px
+}
+
+.ant-steps-dot .ant-steps-item-process .ant-steps-item-icon, .ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon {
+ width: 10px;
+ height: 10px;
+ line-height: 10px
+}
+
+ .ant-steps-dot .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot, .ant-steps-dot.ant-steps-small .ant-steps-item-process .ant-steps-item-icon .ant-steps-icon-dot {
+ top: -1px
+ }
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-icon {
+ margin-top: 8px;
+ margin-left: 0
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+ top: 2px;
+ left: -9px;
+ margin: 0;
+ padding: 22px 0 4px
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item:first-child .ant-steps-icon-dot {
+ left: 0
+}
+
+.ant-steps-vertical.ant-steps-dot .ant-steps-item-process .ant-steps-icon-dot {
+ left: -2px
+}
+
+.ant-steps-navigation {
+ padding-top: 12px
+}
+
+ .ant-steps-navigation.ant-steps-small .ant-steps-item-container {
+ margin-left: -12px
+ }
+
+ .ant-steps-navigation .ant-steps-item {
+ overflow: visible;
+ text-align: center
+ }
+
+ .ant-steps-navigation .ant-steps-item-container {
+ display: inline-block;
+ height: 100%;
+ margin-left: -16px;
+ padding-bottom: 12px;
+ text-align: left;
+ -webkit-transition: opacity .3s;
+ transition: opacity .3s
+ }
+
+ .ant-steps-navigation .ant-steps-item-container .ant-steps-item-content {
+ max-width: auto
+ }
+
+ .ant-steps-navigation .ant-steps-item-container .ant-steps-item-title {
+ max-width: 100%;
+ padding-right: 0;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis
+ }
+
+ .ant-steps-navigation .ant-steps-item-container .ant-steps-item-title:after {
+ display: none
+ }
+
+ .ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button] {
+ cursor: pointer
+ }
+
+ .ant-steps-navigation .ant-steps-item:not(.ant-steps-item-active) .ant-steps-item-container[role=button]:hover {
+ opacity: .85
+ }
+
+ .ant-steps-navigation .ant-steps-item:last-child {
+ -webkit-box-flex: 1;
+ -ms-flex: 1;
+ flex: 1
+ }
+
+ .ant-steps-navigation .ant-steps-item:last-child:after {
+ display: none
+ }
+
+ .ant-steps-navigation .ant-steps-item:after {
+ position: absolute;
+ top: 50%;
+ left: 100%;
+ display: inline-block;
+ width: 12px;
+ height: 12px;
+ margin-top: -14px;
+ margin-left: -2px;
+ border: 1px solid rgba(0,0,0,.25);
+ border-bottom: none;
+ border-left: none;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ content: ""
+ }
+
+ .ant-steps-navigation .ant-steps-item:before {
+ position: absolute;
+ bottom: 0;
+ left: 50%;
+ display: inline-block;
+ width: 0;
+ height: 3px;
+ background-color: #fa541c;
+ -webkit-transition: width .3s,left .3s;
+ transition: width .3s,left .3s;
+ -webkit-transition-timing-function: ease-out;
+ transition-timing-function: ease-out;
+ content: ""
+ }
+
+ .ant-steps-navigation .ant-steps-item.ant-steps-item-active:before {
+ left: 0;
+ width: 100%
+ }
+
+@media (max-width:480px) {
+ .ant-steps-navigation > .ant-steps-item {
+ margin-right: 0 !important
+ }
+
+ .ant-steps-navigation > .ant-steps-item:before {
+ display: none
+ }
+
+ .ant-steps-navigation > .ant-steps-item.ant-steps-item-active:before {
+ top: 0;
+ right: 0;
+ left: unset;
+ display: block;
+ width: 3px;
+ height: calc(100% - 24px)
+ }
+
+ .ant-steps-navigation > .ant-steps-item:after {
+ position: relative;
+ top: -2px;
+ left: 50%;
+ display: block;
+ width: 8px;
+ height: 8px;
+ margin-bottom: 8px;
+ text-align: center;
+ -webkit-transform: rotate(135deg);
+ transform: rotate(135deg)
+ }
+
+ .ant-steps-navigation > .ant-steps-item > .ant-steps-item-container > .ant-steps-item-tail {
+ visibility: hidden
+ }
+}
+
+.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal .ant-steps-item {
+ margin-left: -16px;
+ padding-left: 16px;
+ background: #fff
+}
+
+.ant-steps-flex-not-supported.ant-steps-horizontal.ant-steps-label-horizontal.ant-steps-small .ant-steps-item {
+ margin-left: -12px;
+ padding-left: 12px
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child {
+ overflow: hidden
+}
+
+ .ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item:last-child .ant-steps-icon-dot:after {
+ right: -200px;
+ width: 200px
+ }
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:after, .ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:before {
+ position: absolute;
+ top: 0;
+ left: -10px;
+ width: 10px;
+ height: 8px;
+ background: #fff;
+ content: ""
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item .ant-steps-icon-dot:after {
+ right: -10px;
+ left: auto
+}
+
+.ant-steps-flex-not-supported.ant-steps-dot .ant-steps-item-wait .ant-steps-item-icon > .ant-steps-icon .ant-steps-icon-dot {
+ background: #ccc
+}
+
+.ant-switch {
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ display: inline-block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ min-width: 44px;
+ height: 22px;
+ line-height: 20px;
+ vertical-align: middle;
+ background-color: rgba(0,0,0,.25);
+ border: 1px solid transparent;
+ border-radius: 100px;
+ cursor: pointer;
+ -webkit-transition: all .36s;
+ transition: all .36s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-switch-inner {
+ display: block;
+ margin-right: 6px;
+ margin-left: 24px;
+ color: #fff;
+ font-size: 12px
+}
+
+.ant-switch-loading-icon, .ant-switch:after {
+ position: absolute;
+ top: 1px;
+ left: 1px;
+ width: 18px;
+ height: 18px;
+ background-color: #fff;
+ border-radius: 18px;
+ cursor: pointer;
+ -webkit-transition: all .36s cubic-bezier(.78,.14,.15,.86);
+ transition: all .36s cubic-bezier(.78,.14,.15,.86);
+ content: " "
+}
+
+.ant-switch:after {
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0,35,11,.2);
+ box-shadow: 0 2px 4px 0 rgba(0,35,11,.2)
+}
+
+.ant-switch:not(.ant-switch-disabled):active:after, .ant-switch:not(.ant-switch-disabled):active:before {
+ width: 24px
+}
+
+.ant-switch-loading-icon {
+ z-index: 1;
+ display: none;
+ font-size: 12px;
+ background: transparent
+}
+
+ .ant-switch-loading-icon svg {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto
+ }
+
+.ant-switch-loading .ant-switch-loading-icon {
+ display: inline-block;
+ color: rgba(0,0,0,.65)
+}
+
+.ant-switch-checked.ant-switch-loading .ant-switch-loading-icon {
+ color: #fa541c
+}
+
+.ant-switch:focus {
+ outline: 0;
+ -webkit-box-shadow: 0 0 0 2px rgba(250,84,28,.2);
+ box-shadow: 0 0 0 2px rgba(250,84,28,.2)
+}
+
+ .ant-switch:focus:hover {
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+.ant-switch-small {
+ min-width: 28px;
+ height: 16px;
+ line-height: 14px
+}
+
+ .ant-switch-small .ant-switch-inner {
+ margin-right: 3px;
+ margin-left: 18px;
+ font-size: 12px
+ }
+
+ .ant-switch-small:after {
+ width: 12px;
+ height: 12px
+ }
+
+ .ant-switch-small:active:after, .ant-switch-small:active:before {
+ width: 16px
+ }
+
+ .ant-switch-small .ant-switch-loading-icon {
+ width: 12px;
+ height: 12px
+ }
+
+ .ant-switch-small.ant-switch-checked .ant-switch-inner {
+ margin-right: 18px;
+ margin-left: 3px
+ }
+
+ .ant-switch-small.ant-switch-checked .ant-switch-loading-icon {
+ left: 100%;
+ margin-left: -13px
+ }
+
+ .ant-switch-small.ant-switch-loading .ant-switch-loading-icon {
+ font-weight: 700;
+ -webkit-transform: scale(.66667);
+ transform: scale(.66667)
+ }
+
+.ant-switch-checked {
+ background-color: #fa541c
+}
+
+ .ant-switch-checked .ant-switch-inner {
+ margin-right: 24px;
+ margin-left: 6px
+ }
+
+ .ant-switch-checked:after {
+ left: 100%;
+ margin-left: -1px;
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%)
+ }
+
+ .ant-switch-checked .ant-switch-loading-icon {
+ left: 100%;
+ margin-left: -19px
+ }
+
+.ant-switch-disabled, .ant-switch-loading {
+ cursor: not-allowed;
+ opacity: .4
+}
+
+ .ant-switch-disabled *, .ant-switch-disabled:after, .ant-switch-disabled:before, .ant-switch-loading *, .ant-switch-loading:after, .ant-switch-loading:before {
+ cursor: not-allowed
+ }
+
+@-webkit-keyframes AntSwitchSmallLoadingCircle {
+ 0% {
+ -webkit-transform: rotate(0deg) scale(.66667);
+ transform: rotate(0deg) scale(.66667);
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%
+ }
+
+ to {
+ -webkit-transform: rotate(1turn) scale(.66667);
+ transform: rotate(1turn) scale(.66667);
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%
+ }
+}
+
+@keyframes AntSwitchSmallLoadingCircle {
+ 0% {
+ -webkit-transform: rotate(0deg) scale(.66667);
+ transform: rotate(0deg) scale(.66667);
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%
+ }
+
+ to {
+ -webkit-transform: rotate(1turn) scale(.66667);
+ transform: rotate(1turn) scale(.66667);
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%
+ }
+}
+
+.ant-table-wrapper {
+ zoom: 1
+}
+
+ .ant-table-wrapper:after, .ant-table-wrapper:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-table-wrapper:after {
+ clear: both
+ }
+
+.ant-table {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ clear: both
+}
+
+.ant-table-body {
+ -webkit-transition: opacity .3s;
+ transition: opacity .3s
+}
+
+.ant-table-empty .ant-table-body {
+ overflow-x: auto !important;
+ overflow-y: hidden !important
+}
+
+.ant-table table {
+ width: 100%;
+ text-align: left;
+ border-radius: 2px 2px 0 0;
+ border-collapse: separate;
+ border-spacing: 0
+}
+
+.ant-table-layout-fixed table {
+ table-layout: fixed
+}
+
+.ant-table-thead > tr > th {
+ color: rgba(0,0,0,.85);
+ font-weight: 500;
+ text-align: left;
+ background: #fafafa;
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-transition: background .3s ease;
+ transition: background .3s ease
+}
+
+ .ant-table-thead > tr > th[colspan]:not([colspan="1"]) {
+ text-align: center
+ }
+
+ .ant-table-thead > tr > th .ant-table-filter-icon, .ant-table-thead > tr > th .anticon-filter {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 28px;
+ height: 100%;
+ color: #bfbfbf;
+ font-size: 12px;
+ text-align: center;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-table-thead > tr > th .ant-table-filter-icon > svg, .ant-table-thead > tr > th .anticon-filter > svg {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-top: -5px;
+ margin-left: -6px
+ }
+
+ .ant-table-thead > tr > th .ant-table-filter-selected.anticon {
+ color: #fa541c
+ }
+
+ .ant-table-thead > tr > th .ant-table-column-sorter {
+ display: table-cell;
+ vertical-align: middle
+ }
+
+ .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner {
+ height: 1em;
+ margin-top: .35em;
+ margin-left: .57142857em;
+ color: #bfbfbf;
+ line-height: 1em;
+ text-align: center;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up {
+ display: inline-block;
+ font-size: 12px;
+ font-size: 11px\9;
+ -webkit-transform: scale(.91666667) rotate(0deg);
+ transform: scale(.91666667) rotate(0deg);
+ display: block;
+ height: 1em;
+ line-height: 1em;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+:root .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down, :root .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up {
+ font-size: 12px
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on {
+ color: #fa541c
+}
+
+.ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full {
+ margin-top: -.15em
+}
+
+ .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-down, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-up {
+ height: .5em;
+ line-height: .5em
+ }
+
+ .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner-full .ant-table-column-sorter-down {
+ margin-top: .125em
+ }
+
+.ant-table-thead > tr > th.ant-table-column-has-actions {
+ position: relative;
+ background-clip: padding-box;
+ -webkit-background-clip: border-box
+}
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters {
+ padding-right: 30px !important
+ }
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .ant-table-filter-icon.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters .anticon-filter.ant-table-filter-open, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:hover {
+ color: rgba(0,0,0,.45);
+ background: #e5e5e5
+ }
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .ant-table-filter-icon:active, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-filters:hover .anticon-filter:active {
+ color: rgba(0,0,0,.65)
+ }
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters {
+ cursor: pointer
+ }
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .ant-table-filter-icon, .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:hover .anticon-filter {
+ background: #f2f2f2
+ }
+
+ .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-down:not(.on), .ant-table-thead > tr > th.ant-table-column-has-actions.ant-table-column-has-sorters:active .ant-table-column-sorter-up:not(.on) {
+ color: rgba(0,0,0,.45)
+ }
+
+.ant-table-thead > tr > th .ant-table-header-column {
+ display: inline-block;
+ max-width: 100%;
+ vertical-align: top
+}
+
+ .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters {
+ display: table
+ }
+
+ .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters > .ant-table-column-title {
+ display: table-cell;
+ vertical-align: middle
+ }
+
+ .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters > :not(.ant-table-column-sorter) {
+ position: relative
+ }
+
+ .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:before {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background: transparent;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: ""
+ }
+
+ .ant-table-thead > tr > th .ant-table-header-column .ant-table-column-sorters:hover:before {
+ background: rgba(0,0,0,.04)
+ }
+
+.ant-table-thead > tr > th.ant-table-column-has-sorters {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+.ant-table-thead > tr:first-child > th:first-child {
+ border-top-left-radius: 2px
+}
+
+.ant-table-thead > tr:first-child > th:last-child {
+ border-top-right-radius: 2px
+}
+
+.ant-table-thead > tr:not(:last-child) > th[colspan] {
+ border-bottom: 0
+}
+
+.ant-table-tbody > tr > td {
+ border-bottom: 1px solid #e8e8e8;
+ -webkit-transition: background .3s;
+ transition: background .3s
+}
+
+.ant-table-tbody > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr.ant-table-row-hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td, .ant-table-thead > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
+ background: #fff2e8
+}
+
+.ant-table-tbody > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-tbody > tr:hover.ant-table-row-selected > td, .ant-table-tbody > tr:hover.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr.ant-table-row-selected > td.ant-table-column-sort, .ant-table-thead > tr:hover.ant-table-row-selected > td, .ant-table-thead > tr:hover.ant-table-row-selected > td.ant-table-column-sort {
+ background: #fafafa
+}
+
+.ant-table-thead > tr:hover {
+ background: none
+}
+
+.ant-table-footer {
+ position: relative;
+ padding: 16px 16px;
+ color: rgba(0,0,0,.85);
+ background: #fafafa;
+ border-top: 1px solid #e8e8e8;
+ border-radius: 0 0 2px 2px
+}
+
+ .ant-table-footer:before {
+ position: absolute;
+ top: -1px;
+ left: 0;
+ width: 100%;
+ height: 1px;
+ background: #fafafa;
+ content: ""
+ }
+
+.ant-table.ant-table-bordered .ant-table-footer {
+ border: 1px solid #e8e8e8
+}
+
+.ant-table-title {
+ position: relative;
+ top: 1px;
+ padding: 16px 0;
+ border-radius: 2px 2px 0 0
+}
+
+.ant-table.ant-table-bordered .ant-table-title {
+ padding-right: 16px;
+ padding-left: 16px;
+ border: 1px solid #e8e8e8
+}
+
+.ant-table-title + .ant-table-content {
+ position: relative;
+ border-radius: 2px 2px 0 0
+}
+
+.ant-table-bordered .ant-table-title + .ant-table-content, .ant-table-bordered .ant-table-title + .ant-table-content .ant-table-thead > tr:first-child > th, .ant-table-bordered .ant-table-title + .ant-table-content table, .ant-table-without-column-header .ant-table-title + .ant-table-content, .ant-table-without-column-header table {
+ border-radius: 0
+}
+
+.ant-table-without-column-header.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+ border-top: 1px solid #e8e8e8;
+ border-radius: 2px
+}
+
+.ant-table-tbody > tr.ant-table-row-selected td {
+ color: inherit;
+ background: #fafafa
+}
+
+.ant-table-thead > tr > th.ant-table-column-sort {
+ background: #f5f5f5
+}
+
+.ant-table-tbody > tr > td.ant-table-column-sort {
+ background: rgba(0,0,0,.01)
+}
+
+.ant-table-tbody > tr > td, .ant-table-thead > tr > th {
+ padding: 16px 16px;
+ overflow-wrap: break-word
+}
+
+.ant-table-expand-icon-th, .ant-table-row-expand-icon-cell {
+ width: 50px;
+ min-width: 50px;
+ text-align: center
+}
+
+.ant-table-header {
+ overflow: hidden;
+ background: #fafafa
+}
+
+ .ant-table-header table {
+ border-radius: 2px 2px 0 0
+ }
+
+.ant-table-loading {
+ position: relative
+}
+
+ .ant-table-loading .ant-table-body {
+ background: #fff;
+ opacity: .5
+ }
+
+ .ant-table-loading .ant-table-spin-holder {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ height: 20px;
+ margin-left: -30px;
+ line-height: 20px
+ }
+
+ .ant-table-loading .ant-table-with-pagination {
+ margin-top: -20px
+ }
+
+ .ant-table-loading .ant-table-without-pagination {
+ margin-top: 10px
+ }
+
+.ant-table-bordered .ant-table-body > table, .ant-table-bordered .ant-table-fixed-left table, .ant-table-bordered .ant-table-fixed-right table, .ant-table-bordered .ant-table-header > table {
+ border: 1px solid #e8e8e8;
+ border-right: 0;
+ border-bottom: 0
+}
+
+.ant-table-bordered.ant-table-empty .ant-table-placeholder {
+ border-right: 1px solid #e8e8e8;
+ border-left: 1px solid #e8e8e8
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-header > table {
+ border-bottom: 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-body > table {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-body-inner > table, .ant-table-bordered.ant-table-fixed-header .ant-table-header + .ant-table-body > table {
+ border-top: 0
+}
+
+.ant-table-bordered .ant-table-thead > tr:not(:last-child) > th {
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-table-bordered .ant-table-tbody > tr > td, .ant-table-bordered .ant-table-thead > tr > th {
+ border-right: 1px solid #e8e8e8
+}
+
+.ant-table-placeholder {
+ position: relative;
+ z-index: 1;
+ margin-top: -1px;
+ padding: 16px 16px;
+ color: rgba(0,0,0,.25);
+ font-size: 14px;
+ text-align: center;
+ background: #fff;
+ border-top: 1px solid #e8e8e8;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 0 0 2px 2px
+}
+
+.ant-table-pagination.ant-pagination {
+ float: right;
+ margin: 16px 0
+}
+
+.ant-table-filter-dropdown {
+ position: relative;
+ min-width: 96px;
+ margin-left: -8px;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+ .ant-table-filter-dropdown .ant-dropdown-menu {
+ max-height: calc(100vh - 130px);
+ overflow-x: hidden;
+ border: 0;
+ border-radius: 2px 2px 0 0;
+ -webkit-box-shadow: none;
+ box-shadow: none
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu-item > label + span {
+ padding-right: 0
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu-sub {
+ border-radius: 2px;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu .ant-dropdown-submenu-contain-selected .ant-dropdown-menu-submenu-title:after {
+ color: #fa541c;
+ font-weight: 700;
+ text-shadow: 0 0 2px #ffd8bf
+ }
+
+ .ant-table-filter-dropdown .ant-dropdown-menu-item {
+ overflow: hidden
+ }
+
+ .ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-item:last-child, .ant-table-filter-dropdown > .ant-dropdown-menu > .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu-submenu-title {
+ border-radius: 0
+ }
+
+.ant-table-filter-dropdown-btns {
+ padding: 7px 8px;
+ overflow: hidden;
+ border-top: 1px solid #e8e8e8
+}
+
+.ant-table-filter-dropdown-link {
+ color: #fa541c
+}
+
+ .ant-table-filter-dropdown-link:hover {
+ color: #ff7a45
+ }
+
+ .ant-table-filter-dropdown-link:active {
+ color: #d4380d
+ }
+
+ .ant-table-filter-dropdown-link.confirm {
+ float: left
+ }
+
+ .ant-table-filter-dropdown-link.clear {
+ float: right
+ }
+
+.ant-table-selection {
+ white-space: nowrap
+}
+
+.ant-table-selection-select-all-custom {
+ margin-right: 4px !important
+}
+
+.ant-table-selection .anticon-down {
+ color: #bfbfbf;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+.ant-table-selection-menu {
+ min-width: 96px;
+ margin-top: 5px;
+ margin-left: -30px;
+ background: #fff;
+ border-radius: 2px;
+ -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.15);
+ box-shadow: 0 2px 8px rgba(0,0,0,.15)
+}
+
+ .ant-table-selection-menu .ant-action-down {
+ color: #bfbfbf
+ }
+
+.ant-table-selection-down {
+ display: inline-block;
+ padding: 0;
+ line-height: 1;
+ cursor: pointer
+}
+
+ .ant-table-selection-down:hover .anticon-down {
+ color: rgba(0,0,0,.6)
+ }
+
+.ant-table-row-expand-icon {
+ color: #fa541c;
+ text-decoration: none;
+ cursor: pointer;
+ -webkit-transition: color .3s;
+ transition: color .3s;
+ display: inline-block;
+ width: 17px;
+ height: 17px;
+ color: inherit;
+ line-height: 13px;
+ text-align: center;
+ background: #fff;
+ border: 1px solid #e8e8e8;
+ border-radius: 2px;
+ outline: none;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none
+}
+
+ .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+ color: #ff7a45
+ }
+
+ .ant-table-row-expand-icon:active {
+ color: #d4380d
+ }
+
+ .ant-table-row-expand-icon:active, .ant-table-row-expand-icon:focus, .ant-table-row-expand-icon:hover {
+ border-color: currentColor
+ }
+
+.ant-table-row-expanded:after {
+ content: "-"
+}
+
+.ant-table-row-collapsed:after {
+ content: "+"
+}
+
+.ant-table-row-spaced {
+ visibility: hidden
+}
+
+ .ant-table-row-spaced:after {
+ content: "."
+ }
+
+.ant-table-row-cell-ellipsis, .ant-table-row-cell-ellipsis .ant-table-column-title {
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis
+}
+
+ .ant-table-row-cell-ellipsis .ant-table-column-title {
+ display: block
+ }
+
+.ant-table-row-cell-break-word {
+ word-wrap: break-word;
+ word-break: break-word
+}
+
+tr.ant-table-expanded-row, tr.ant-table-expanded-row:hover {
+ background: #fbfbfb
+}
+
+ tr.ant-table-expanded-row td > .ant-table-wrapper {
+ margin: -16px -16px -17px
+ }
+
+.ant-table .ant-table-row-indent + .ant-table-row-expand-icon {
+ margin-right: 8px
+}
+
+.ant-table-scroll {
+ overflow: auto;
+ overflow-x: hidden
+}
+
+ .ant-table-scroll table {
+ min-width: 100%
+ }
+
+ .ant-table-scroll table .ant-table-fixed-columns-in-body:not([colspan]) {
+ color: transparent
+ }
+
+ .ant-table-scroll table .ant-table-fixed-columns-in-body:not([colspan]) > * {
+ visibility: hidden
+ }
+
+.ant-table-body-inner {
+ height: 100%
+}
+
+.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+ position: relative;
+ background: #fff
+}
+
+.ant-table-fixed-header .ant-table-body-inner {
+ overflow: scroll
+}
+
+.ant-table-fixed-header .ant-table-scroll .ant-table-header {
+ margin-bottom: -20px;
+ padding-bottom: 20px;
+ overflow: scroll;
+ opacity: .9999
+}
+
+ .ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {
+ border: 1px solid #e8e8e8;
+ border-width: 0 0 1px 0
+ }
+
+.ant-table-hide-scrollbar {
+ scrollbar-color: transparent transparent;
+ min-width: unset
+}
+
+ .ant-table-hide-scrollbar::-webkit-scrollbar {
+ min-width: inherit;
+ background-color: transparent
+ }
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header::-webkit-scrollbar {
+ border: 1px solid #e8e8e8;
+ border-width: 1px 1px 1px 0
+}
+
+.ant-table-bordered.ant-table-fixed-header .ant-table-scroll .ant-table-header.ant-table-hide-scrollbar .ant-table-thead > tr:only-child > th:last-child {
+ border-right-color: transparent
+}
+
+.ant-table-fixed-left, .ant-table-fixed-right {
+ position: absolute;
+ top: 0;
+ z-index: 1;
+ overflow: hidden;
+ border-radius: 0;
+ -webkit-transition: -webkit-box-shadow .3s ease;
+ transition: -webkit-box-shadow .3s ease;
+ transition: box-shadow .3s ease;
+ transition: box-shadow .3s ease,-webkit-box-shadow .3s ease
+}
+
+ .ant-table-fixed-left table, .ant-table-fixed-right table {
+ width: auto;
+ background: #fff
+ }
+
+.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-outer .ant-table-fixed, .ant-table-fixed-header .ant-table-fixed-right .ant-table-body-outer .ant-table-fixed {
+ border-radius: 0
+}
+
+.ant-table-fixed-left {
+ left: 0;
+ -webkit-box-shadow: 6px 0 6px -4px rgba(0,0,0,.15);
+ box-shadow: 6px 0 6px -4px rgba(0,0,0,.15)
+}
+
+ .ant-table-fixed-left .ant-table-header {
+ overflow-y: hidden
+ }
+
+ .ant-table-fixed-left .ant-table-body-inner {
+ margin-right: -20px;
+ padding-right: 20px
+ }
+
+.ant-table-fixed-header .ant-table-fixed-left .ant-table-body-inner {
+ padding-right: 0
+}
+
+.ant-table-fixed-left, .ant-table-fixed-left table {
+ border-radius: 2px 0 0 0
+}
+
+ .ant-table-fixed-left .ant-table-thead > tr > th:last-child {
+ border-top-right-radius: 0
+ }
+
+.ant-table-fixed-right {
+ right: 0;
+ -webkit-box-shadow: -6px 0 6px -4px rgba(0,0,0,.15);
+ box-shadow: -6px 0 6px -4px rgba(0,0,0,.15)
+}
+
+ .ant-table-fixed-right, .ant-table-fixed-right table {
+ border-radius: 0 2px 0 0
+ }
+
+ .ant-table-fixed-right .ant-table-expanded-row {
+ color: transparent;
+ pointer-events: none
+ }
+
+ .ant-table-fixed-right .ant-table-thead > tr > th:first-child {
+ border-top-left-radius: 0
+ }
+
+.ant-table.ant-table-scroll-position-left .ant-table-fixed-left, .ant-table.ant-table-scroll-position-right .ant-table-fixed-right {
+ -webkit-box-shadow: none;
+ box-shadow: none
+}
+
+.ant-table colgroup > col.ant-table-selection-col {
+ width: 60px
+}
+
+.ant-table-thead > tr > th.ant-table-selection-column-custom .ant-table-selection {
+ margin-right: -15px
+}
+
+.ant-table-tbody > tr > td.ant-table-selection-column, .ant-table-thead > tr > th.ant-table-selection-column {
+ text-align: center
+}
+
+ .ant-table-tbody > tr > td.ant-table-selection-column .ant-radio-wrapper, .ant-table-thead > tr > th.ant-table-selection-column .ant-radio-wrapper {
+ margin-right: 0
+ }
+
+.ant-table-row[class*=ant-table-row-level-0] .ant-table-selection-column > span {
+ display: inline-block
+}
+
+.ant-table-filter-dropdown-submenu .ant-checkbox-wrapper + span, .ant-table-filter-dropdown .ant-checkbox-wrapper + span {
+ padding-left: 8px
+}
+
+@supports (-moz-appearance:meterbar) {
+ .ant-table-thead > tr > th.ant-table-column-has-actions {
+ background-clip: padding-box
+ }
+}
+
+.ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-footer, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-middle > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-middle > .ant-table-title {
+ padding: 12px 8px
+}
+
+.ant-table-middle tr.ant-table-expanded-row td > .ant-table-wrapper {
+ margin: -12px -8px -13px
+}
+
+.ant-table-small {
+ border: 1px solid #e8e8e8;
+ border-radius: 2px
+}
+
+ .ant-table-small > .ant-table-content > .ant-table-footer, .ant-table-small > .ant-table-title {
+ padding: 8px 8px
+ }
+
+ .ant-table-small > .ant-table-title {
+ top: 0;
+ border-bottom: 1px solid #e8e8e8
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-footer {
+ background-color: transparent;
+ border-top: 1px solid #e8e8e8
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-footer:before {
+ background-color: transparent
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body {
+ margin: 0 8px
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table {
+ border: 0
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-tbody > tr > td, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th {
+ padding: 8px 8px
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th {
+ background-color: transparent
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr {
+ border-bottom: 1px solid #e8e8e8
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table > .ant-table-thead > tr > th.ant-table-column-sort, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table > .ant-table-thead > tr > th.ant-table-column-sort {
+ background-color: rgba(0,0,0,.01)
+ }
+
+ .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-left > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-body-outer > .ant-table-body-inner > table, .ant-table-small > .ant-table-content > .ant-table-fixed-right > .ant-table-header > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-body > table, .ant-table-small > .ant-table-content > .ant-table-scroll > .ant-table-header > table {
+ padding: 0
+ }
+
+ .ant-table-small > .ant-table-content .ant-table-header {
+ background-color: transparent;
+ border-radius: 2px 2px 0 0
+ }
+
+ .ant-table-small > .ant-table-content .ant-table-placeholder, .ant-table-small > .ant-table-content .ant-table-row:last-child td {
+ border-bottom: 0
+ }
+
+ .ant-table-small.ant-table-bordered {
+ border-right: 0
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-title {
+ border: 0;
+ border-right: 1px solid #e8e8e8;
+ border-bottom: 1px solid #e8e8e8
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-content {
+ border-right: 1px solid #e8e8e8
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-footer {
+ border: 0;
+ border-top: 1px solid #e8e8e8
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-footer:before {
+ display: none
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-placeholder {
+ border-right: 0;
+ border-bottom: 0;
+ border-left: 0
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-tbody > tr > td:last-child, .ant-table-small.ant-table-bordered .ant-table-thead > tr > th.ant-table-row-cell-last {
+ border-right: none
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-tbody > tr > td:last-child, .ant-table-small.ant-table-bordered .ant-table-fixed-left .ant-table-thead > tr > th:last-child {
+ border-right: 1px solid #e8e8e8
+ }
+
+ .ant-table-small.ant-table-bordered .ant-table-fixed-right {
+ border-right: 1px solid #e8e8e8;
+ border-left: 1px solid #e8e8e8
+ }
+
+ .ant-table-small tr.ant-table-expanded-row td > .ant-table-wrapper {
+ margin: -8px -8px -9px
+ }
+
+ .ant-table-small.ant-table-fixed-header > .ant-table-content > .ant-table-scroll > .ant-table-body {
+ border-radius: 0 0 2px 2px
+ }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-container {
+ height: 40px
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-ink-bar {
+ visibility: hidden
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab {
+ height: 40px;
+ margin: 0;
+ margin-right: 2px;
+ padding: 0 16px;
+ line-height: 38px;
+ background: #fafafa;
+ border: 1px solid #e8e8e8;
+ border-radius: 2px 2px 0 0;
+ -webkit-transition: all .3s cubic-bezier(.645,.045,.355,1);
+ transition: all .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active {
+ height: 40px;
+ color: #fa541c;
+ background: #fff;
+ border-color: #e8e8e8;
+ border-bottom: 1px solid #fff
+}
+
+ .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-active:before {
+ border-top: 2px solid transparent
+ }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-disabled {
+ color: #fa541c;
+ color: rgba(0,0,0,.25)
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab-inactive {
+ padding: 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-nav-wrap {
+ margin-bottom: 0
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x {
+ width: 16px;
+ height: 16px;
+ height: 14px;
+ margin-right: -5px;
+ margin-left: 3px;
+ overflow: hidden;
+ color: rgba(0,0,0,.45);
+ font-size: 12px;
+ vertical-align: middle;
+ -webkit-transition: all .3s;
+ transition: all .3s
+}
+
+ .ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab .ant-tabs-close-x:hover {
+ color: rgba(0,0,0,.85)
+ }
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane, .ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane {
+ -webkit-transition: none !important;
+ transition: none !important
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive, .ant-tabs.ant-tabs-editable-card .ant-tabs-card-content > .ant-tabs-tabpane-inactive {
+ overflow: hidden
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-card-bar .ant-tabs-tab:hover .anticon-close {
+ opacity: 1
+}
+
+.ant-tabs-extra-content {
+ line-height: 45px
+}
+
+ .ant-tabs-extra-content .ant-tabs-new-tab {
+ position: relative;
+ width: 20px;
+ height: 20px;
+ color: rgba(0,0,0,.65);
+ font-size: 12px;
+ line-height: 20px;
+ text-align: center;
+ border: 1px solid #e8e8e8;
+ border-radius: 2px;
+ cursor: pointer;
+ -webkit-transition: all .3s;
+ transition: all .3s
+ }
+
+ .ant-tabs-extra-content .ant-tabs-new-tab:hover {
+ color: #fa541c;
+ border-color: #fa541c
+ }
+
+ .ant-tabs-extra-content .ant-tabs-new-tab svg {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ margin: auto
+ }
+
+.ant-tabs.ant-tabs-large .ant-tabs-extra-content {
+ line-height: 56px
+}
+
+.ant-tabs.ant-tabs-small .ant-tabs-extra-content {
+ line-height: 37px
+}
+
+.ant-tabs.ant-tabs-card .ant-tabs-extra-content {
+ line-height: 40px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-container {
+ height: 100%
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+ margin-bottom: 8px;
+ border-bottom: 1px solid #e8e8e8
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {
+ padding-bottom: 4px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab:last-child, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab:last-child {
+ margin-bottom: 8px
+}
+
+.ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-new-tab, .ant-tabs-vertical.ant-tabs-card .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-new-tab {
+ width: 90%
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-nav-wrap {
+ margin-right: 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab {
+ margin-right: 1px;
+ border-right: 0;
+ border-radius: 2px 0 0 2px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-left .ant-tabs-card-bar.ant-tabs-left-bar .ant-tabs-tab-active {
+ margin-right: -1px;
+ padding-right: 18px
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-nav-wrap {
+ margin-left: 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab {
+ margin-left: 1px;
+ border-left: 0;
+ border-radius: 0 2px 2px 0
+}
+
+.ant-tabs-vertical.ant-tabs-card.ant-tabs-right .ant-tabs-card-bar.ant-tabs-right-bar .ant-tabs-tab-active {
+ margin-left: -1px;
+ padding-left: 18px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab {
+ height: auto;
+ border-top: 0;
+ border-bottom: 1px solid #e8e8e8;
+ border-radius: 0 0 2px 2px
+}
+
+.ant-tabs .ant-tabs-card-bar.ant-tabs-bottom-bar .ant-tabs-tab-active {
+ padding-top: 1px;
+ padding-bottom: 0;
+ color: #fa541c
+}
+
+.ant-tabs {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ color: rgba(0,0,0,.65);
+ font-size: 14px;
+ font-variant: tabular-nums;
+ line-height: 1.5;
+ list-style: none;
+ -webkit-font-feature-settings: "tnum";
+ font-feature-settings: "tnum";
+ position: relative;
+ overflow: hidden;
+ zoom: 1
+}
+
+ .ant-tabs:after, .ant-tabs:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-tabs:after {
+ clear: both
+ }
+
+.ant-tabs-ink-bar {
+ position: absolute;
+ bottom: 1px;
+ left: 0;
+ z-index: 1;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 0;
+ height: 2px;
+ background-color: #fa541c;
+ -webkit-transform-origin: 0 0;
+ transform-origin: 0 0
+}
+
+.ant-tabs-bar {
+ margin: 0 0 16px 0;
+ border-bottom: 1px solid #e8e8e8;
+ outline: none
+}
+
+.ant-tabs-bar, .ant-tabs-nav-container {
+ -webkit-transition: padding .3s cubic-bezier(.645,.045,.355,1);
+ transition: padding .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-nav-container {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin-bottom: -1px;
+ overflow: hidden;
+ font-size: 14px;
+ line-height: 1.5;
+ white-space: nowrap;
+ zoom: 1
+}
+
+ .ant-tabs-nav-container:after, .ant-tabs-nav-container:before {
+ display: table;
+ content: ""
+ }
+
+ .ant-tabs-nav-container:after {
+ clear: both
+ }
+
+.ant-tabs-nav-container-scrolling {
+ padding-right: 32px;
+ padding-left: 32px
+}
+
+.ant-tabs-bottom .ant-tabs-bottom-bar {
+ margin-top: 16px;
+ margin-bottom: 0;
+ border-top: 1px solid #e8e8e8;
+ border-bottom: none
+}
+
+ .ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-ink-bar {
+ top: 1px;
+ bottom: auto
+ }
+
+ .ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-nav-container {
+ margin-top: -1px;
+ margin-bottom: 0
+ }
+
+.ant-tabs-tab-next, .ant-tabs-tab-prev {
+ position: absolute;
+ z-index: 2;
+ width: 0;
+ height: 100%;
+ color: rgba(0,0,0,.45);
+ text-align: center;
+ background-color: transparent;
+ border: 0;
+ cursor: pointer;
+ opacity: 0;
+ -webkit-transition: width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);
+ transition: width .3s cubic-bezier(.645,.045,.355,1),opacity .3s cubic-bezier(.645,.045,.355,1),color .3s cubic-bezier(.645,.045,.355,1);
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ pointer-events: none
+}
+
+ .ant-tabs-tab-next.ant-tabs-tab-arrow-show, .ant-tabs-tab-prev.ant-tabs-tab-arrow-show {
+ width: 32px;
+ height: 100%;
+ opacity: 1;
+ pointer-events: auto
+ }
+
+ .ant-tabs-tab-next:hover, .ant-tabs-tab-prev:hover {
+ color: rgba(0,0,0,.65)
+ }
+
+.ant-tabs-tab-next-icon, .ant-tabs-tab-prev-icon {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ font-weight: 700;
+ font-style: normal;
+ font-variant: normal;
+ line-height: inherit;
+ text-align: center;
+ text-transform: none;
+ -webkit-transform: translate(-50%,-50%);
+ transform: translate(-50%,-50%)
+}
+
+.ant-tabs-tab-next-icon-target, .ant-tabs-tab-prev-icon-target {
+ display: block;
+ display: inline-block;
+ font-size: 12px;
+ font-size: 10px\9;
+ -webkit-transform: scale(.83333333) rotate(0deg);
+ transform: scale(.83333333) rotate(0deg)
+}
+
+:root .ant-tabs-tab-next-icon-target, :root .ant-tabs-tab-prev-icon-target {
+ font-size: 12px
+}
+
+.ant-tabs-tab-btn-disabled {
+ cursor: not-allowed
+}
+
+ .ant-tabs-tab-btn-disabled, .ant-tabs-tab-btn-disabled:hover {
+ color: rgba(0,0,0,.25)
+ }
+
+.ant-tabs-tab-next {
+ right: 2px
+}
+
+.ant-tabs-tab-prev {
+ left: 0
+}
+
+:root .ant-tabs-tab-prev {
+ -webkit-filter: none;
+ filter: none
+}
+
+.ant-tabs-nav-wrap {
+ margin-bottom: -1px;
+ overflow: hidden
+}
+
+.ant-tabs-nav-scroll {
+ overflow: hidden;
+ white-space: nowrap
+}
+
+.ant-tabs-nav {
+ position: relative;
+ display: inline-block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ margin: 0;
+ padding-left: 0;
+ list-style: none;
+ -webkit-transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: -webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+ .ant-tabs-nav:after, .ant-tabs-nav:before {
+ display: table;
+ content: " "
+ }
+
+ .ant-tabs-nav:after {
+ clear: both
+ }
+
+ .ant-tabs-nav .ant-tabs-tab {
+ position: relative;
+ display: inline-block;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ height: 100%;
+ margin: 0 32px 0 0;
+ padding: 12px 16px;
+ text-decoration: none;
+ cursor: pointer;
+ -webkit-transition: color .3s cubic-bezier(.645,.045,.355,1);
+ transition: color .3s cubic-bezier(.645,.045,.355,1)
+ }
+
+ .ant-tabs-nav .ant-tabs-tab:before {
+ position: absolute;
+ top: -1px;
+ left: 0;
+ width: 100%;
+ border-top: 2px solid transparent;
+ border-radius: 2px 2px 0 0;
+ -webkit-transition: all .3s;
+ transition: all .3s;
+ content: "";
+ pointer-events: none
+ }
+
+ .ant-tabs-nav .ant-tabs-tab:last-child {
+ margin-right: 0
+ }
+
+ .ant-tabs-nav .ant-tabs-tab:hover {
+ color: #ff7a45
+ }
+
+ .ant-tabs-nav .ant-tabs-tab:active {
+ color: #d4380d
+ }
+
+ .ant-tabs-nav .ant-tabs-tab .anticon {
+ margin-right: 8px
+ }
+
+ .ant-tabs-nav .ant-tabs-tab-active {
+ color: #fa541c;
+ font-weight: 500
+ }
+
+ .ant-tabs-nav .ant-tabs-tab-disabled, .ant-tabs-nav .ant-tabs-tab-disabled:hover {
+ color: rgba(0,0,0,.25);
+ cursor: not-allowed
+ }
+
+.ant-tabs .ant-tabs-large-bar .ant-tabs-nav-container {
+ font-size: 16px
+}
+
+.ant-tabs .ant-tabs-large-bar .ant-tabs-tab {
+ padding: 16px
+}
+
+.ant-tabs .ant-tabs-small-bar .ant-tabs-nav-container {
+ font-size: 14px
+}
+
+.ant-tabs .ant-tabs-small-bar .ant-tabs-tab {
+ padding: 8px 16px
+}
+
+.ant-tabs-content:before {
+ display: block;
+ overflow: hidden;
+ content: ""
+}
+
+.ant-tabs .ant-tabs-bottom-content, .ant-tabs .ant-tabs-top-content {
+ width: 100%
+}
+
+ .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane {
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ width: 100%;
+ -webkit-backface-visibility: hidden;
+ opacity: 1;
+ -webkit-transition: opacity .45s;
+ transition: opacity .45s
+ }
+
+ .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive {
+ height: 0;
+ padding: 0 !important;
+ overflow: hidden;
+ opacity: 0;
+ pointer-events: none
+ }
+
+ .ant-tabs .ant-tabs-bottom-content > .ant-tabs-tabpane-inactive input, .ant-tabs .ant-tabs-top-content > .ant-tabs-tabpane-inactive input {
+ visibility: hidden
+ }
+
+ .ant-tabs .ant-tabs-bottom-content.ant-tabs-content-animated, .ant-tabs .ant-tabs-top-content.ant-tabs-content-animated {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: horizontal;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+ transition: margin-left .3s cubic-bezier(.645,.045,.355,1);
+ will-change: margin-left
+ }
+
+.ant-tabs .ant-tabs-left-bar, .ant-tabs .ant-tabs-right-bar {
+ height: 100%;
+ border-bottom: 0
+}
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-arrow-show, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-arrow-show {
+ width: 100%;
+ height: 32px
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab {
+ display: block;
+ float: none;
+ margin: 0 0 16px 0;
+ padding: 8px 24px
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab:last-child, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab:last-child {
+ margin-bottom: 0
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-extra-content, .ant-tabs .ant-tabs-right-bar .ant-tabs-extra-content {
+ text-align: center
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-scroll, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-scroll {
+ width: auto
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+ height: 100%
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container {
+ margin-bottom: 0
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container.ant-tabs-nav-container-scrolling {
+ padding: 32px 0
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+ margin-bottom: 0
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav {
+ width: 100%
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar, .ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {
+ top: 0;
+ bottom: auto;
+ left: auto;
+ width: 2px;
+ height: 0
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-next, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-next {
+ right: 0;
+ bottom: 0;
+ width: 100%;
+ height: 32px
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab-prev, .ant-tabs .ant-tabs-right-bar .ant-tabs-tab-prev {
+ top: 0;
+ width: 100%;
+ height: 32px
+ }
+
+.ant-tabs .ant-tabs-left-content, .ant-tabs .ant-tabs-right-content {
+ width: auto;
+ margin-top: 0 !important;
+ overflow: hidden
+}
+
+.ant-tabs .ant-tabs-left-bar {
+ float: left;
+ margin-right: -1px;
+ margin-bottom: 0;
+ border-right: 1px solid #e8e8e8
+}
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-tab {
+ text-align: right
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-left-bar .ant-tabs-nav-wrap {
+ margin-right: -1px
+ }
+
+ .ant-tabs .ant-tabs-left-bar .ant-tabs-ink-bar {
+ right: 1px
+ }
+
+.ant-tabs .ant-tabs-left-content {
+ padding-left: 24px;
+ border-left: 1px solid #e8e8e8
+}
+
+.ant-tabs .ant-tabs-right-bar {
+ float: right;
+ margin-bottom: 0;
+ margin-left: -1px;
+ border-left: 1px solid #e8e8e8
+}
+
+ .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-container, .ant-tabs .ant-tabs-right-bar .ant-tabs-nav-wrap {
+ margin-left: -1px
+ }
+
+ .ant-tabs .ant-tabs-right-bar .ant-tabs-ink-bar {
+ left: 1px
+ }
+
+.ant-tabs .ant-tabs-right-content {
+ padding-right: 24px;
+ border-right: 1px solid #e8e8e8
+}
+
+.ant-tabs-bottom .ant-tabs-ink-bar-animated, .ant-tabs-top .ant-tabs-ink-bar-animated {
+ -webkit-transition: width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1),width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1);
+ transition: transform .3s cubic-bezier(.645,.045,.355,1),width .2s cubic-bezier(.645,.045,.355,1),left .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1)
+}
+
+.ant-tabs-left .ant-tabs-ink-bar-